GitHub Actionsを使ってSCPデプロイした話

こんにちは、エンジニアの @akase244 です。

2019年の11月より正式版となったGitHub Actionsを使って、 GitHubのmasterブランチにpushされた際にSCPで自動デプロイが実行されるように設定してみたのでメモとして残しておきます。

前提

今回は以下のような静的HTMLで構成されたwebサイトを自動的にデプロイされるように設定しました。

設定手順

GitHub Actionsは「Actions」のタブの「New workflow」から追加することができます。

f:id:akase244:20200202123131p:plain:w500

画面上にいくつかワークフローが表示されていますが、今回は独自に作成するので右上の「Set up a workflow yourself」ボタンをクリックします。

f:id:akase244:20200202123459p:plain:w500

すると、デフォルトで以下のようなYAML形式(正式リリース以前はHCL形式だったようです)の main.yml が表示されます。

f:id:akase244:20200202123614p:plain:w500

今回は以下のように修正して .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.* }} については事前に SettingsSecrets で設定しておきます。 Secretsの設定値については、Actions毎に異なりますので、action.ymlを参照して設定方法を確認してください。

f:id:akase244:20200202130039p:plain:w500

設定が完了するとmasterブランチにpushされたタイミングで SCP Deploy のアクションが実行状態となります。

f:id:akase244:20200202130902p:plain:w500

まとめ

ざっくりではありますが、「GitHub Actionsはこういった流れで設定する」というのがなんとなくつかめたのではないでしょうか。
今回、GitHub Actionsを利用して、第三者が準備したActionsをどこまで信用してよいものかと感じました。
誰がどのように作成したのかが分かりづらいVagrantボックスやDockerコンテナを積極的に使わないのと同じ理由ですが、各Actionsはソースファイルを見ることで実行内容が把握できるので、そのあたりは自己責任にはなりますが問題なさそうなActionsを選択して利用するか、もしくは、自分自身でActionsを作成するというのが解決方法になりそうですね。
より詳しい情報については公式のドキュメントが準備されていますので、そちらを参照することをおすすめします。