こんにちは、エンジニアの @akase244 です。
2019年の11月より正式版となったGitHub Actionsを使って、 GitHubのmasterブランチにpushされた際にSCPで自動デプロイが実行されるように設定してみたのでメモとして残しておきます。
前提
今回は以下のような静的HTMLで構成されたwebサイトを自動的にデプロイされるように設定しました。
- 対象サイト:PHPカンファレンス福岡 公式サイト
- サイトの構成:静的HTMLと画像、CSS、PDFのみのシンプルな構成
- 利用したActions:actions/checkout、lBeJIuk/scp_action
設定手順
GitHub Actionsは「Actions」のタブの「New workflow」から追加することができます。
画面上にいくつかワークフローが表示されていますが、今回は独自に作成するので右上の「Set up a workflow yourself」ボタンをクリックします。
すると、デフォルトで以下のようなYAML形式(正式リリース以前はHCL形式だったようです)の main.yml
が表示されます。
今回は以下のように修正して .github/workflows/deploy.yml
を準備しました。
SCPを実行するActionsについては、Marketplaceの中からSCPのActionsを検索して、「SCP action wrapper」を選択しました。
name: SCP Deploy on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: SCP Deploy uses: lBeJIuk/scp_action@v1 with: public_key: ${{ secrets.PUBLIC_KEY }} ssh_port: ${{ secrets.PORT }} ssh_username: ${{ secrets.USERNAME }} ssh_host: ${{ secrets.HOST }} source: 'html' target: '/var/www/'
YAML内に記載している ${{ secrets.* }}
については事前に Settings
の Secrets
で設定しておきます。
Secretsの設定値については、Actions毎に異なりますので、action.ymlを参照して設定方法を確認してください。
設定が完了するとmasterブランチにpushされたタイミングで SCP Deploy
のアクションが実行状態となります。
まとめ
ざっくりではありますが、「GitHub Actionsはこういった流れで設定する」というのがなんとなくつかめたのではないでしょうか。
今回、GitHub Actionsを利用して、第三者が準備したActionsをどこまで信用してよいものかと感じました。
誰がどのように作成したのかが分かりづらいVagrantボックスやDockerコンテナを積極的に使わないのと同じ理由ですが、各Actionsはソースファイルを見ることで実行内容が把握できるので、そのあたりは自己責任にはなりますが問題なさそうなActionsを選択して利用するか、もしくは、自分自身でActionsを作成するというのが解決方法になりそうですね。
より詳しい情報については公式のドキュメントが準備されていますので、そちらを参照することをおすすめします。