テストやデプロイの自動化に役立つ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アドレスは必要だ。
コメント