テストやデプロイの自動化に役立つGitHub Actionsを使ってみたかったので、試しにVPSに自動デプロイするというのをやってみた。
まず「Actions」ページの「set up a workflow yourself」をクリックする。

.github/workflowsにmain.ymlを作成する画面になるので、ワークフローを作っていく。
name: Deploying Website
on:
push:
branches:
- main
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using password
uses: appleboy/[email protected]
with: # アクションの入力パラメータを指定
host: ${{ secrets.SSH_HOST }} # ホスト名
username: ${{ secrets.SSH_USERNAME }} # SSH ユーザ名
key: ${{ secrets.SSH_PRIVATE_KEY }} # 秘密鍵の内容
script: |
cd /opt/bitnami/wordpress
git switch main
git pull origin main
on
でトリガーを設定する。今回はmainブランチにプッシュした時に実行する。jobs
に処理の内容を書いていく。jobs.ジョブ識別子.runs-on
では、実行するOSをubuntu-latest
、windows-latest
、macos-latest
から選べる。jobs.ジョブ識別子.steps
にタスクの内容を書く。
今回はSSH Remote Commandsを使用するので、uses
で使用するアクションを指定する。
アクションの入力パラメータであるhost
、username
、key
を入力し、実行するコマンドをscript
に入力していく。
しかし、Git管理下のファイルにサーバーの接続情報を載せるわけにはいかないだろう。
そんな場合はシークレットを使用する。

「Setting」>「Secrets and variables」>「Actions」を開くと、シークレットの登録ができる。
ここにSSHの認証キーなどを保存しておくと、誰にも見られない。
呼び出す時は${{ secrets.シークレットの名前 }}
みたいな感じで使える。
ちなみに
SSH Remote CommandsはまだIPv6での接続に対応していないらしいので、VPSの固定IPv4アドレスは必要だ。
コメント