GitHub Actionsで複数サーバにデプロイする

事前準備

以下のところで(githubのsecrets)秘密鍵を登録する 名前は適当なものをつける 今回はSSH_KEYにした

https://github.com/{ユーザ名}/{リポジトリ名}/settings/secrets

実装

ルートの .github/workflows/deploy.ymlに以下を記載 ymlファイルの名前は適当なものをつける

name: deploy

on:
  push:
    branches:
      - master

jobs:
  deploy:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1
      - name: composer install
        run: composer install
      - name: ssh key generate
        run: echo "$SSH_KEY" > key && chmod 600 key
        env:
          SSH_KEY: ${{ secrets.SSH_KEY }}
      - name: rsync deploy for remote1
        run: rsync -rptgDvz -e "ssh -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" ./ www@ホスト名:デプロイ先
      - name: rsync deploy for remote2
        run: rsync -rptgDvz -e "ssh -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" ./ www@ホスト名:デプロイ先

masterブランチにプッシュされたら仮想のubuntu環境でcomposer installして、secretsのSSH_KEYからkey作ってrsyncするってだけです。 普通に1箇所にデプロイするだけでも十分なのでこれでやってみるといいかも ただrsyncしているだけなので、ドットファイルとかデプロイ時に作成したkeyファイルも一緒にデプロイされているので、削除する処理が必要 rsyncのdeleteとかでも良いのかな?

参考になったところがいくつか記号をわざとなのか全角にしていてコピーしづらかったのでちゃんとしたやつです。