2019年9月22日日曜日

GitHub Actionsでシェルスクリプトからrsync over SSHしたい

背景はこうです。
  • GitHub上でウェブアプリケーションを開発している
  • GitHub ActionsでCI/CDを設定している
  • 何らかのトリガー(リリースタグの作成等)で、開発環境や本番環境にデプロイしたい
  • デプロイ用シェルスクリプトを自前で用意している
    • シェルスクリプト内でSCPやrsync over SSHなどを実行している
このとき、SSH鍵がGitHub Actions側にないとデプロイができないよね、という話。

探してみた

GitHub Marketplaceで探してみました。
見てみたところ、どれもSCPやrsyncを単独のコマンドとして実行するもので、スクリプト内で実行したいという場合には無力の様子。

作ってみた

なければ作ればいい。

というわけで、SSH鍵を登録するActionを作ってみました。

Install SSH Key

使い方

  • あらかじめSSHの秘密鍵と公開鍵をsecretsに登録しておく
  • GitHub ActionsのYAMLファイル内で、スクリプトを実行する前にこのActionを呼び出す
    • private-key, public-key, nameをパラメーターとして指定する
    • private-key, public-keyは必須
    • nameは省略可能(省略時はid_rsa
  • あとはスクリプト内でSCPもrsyncも自由自在
ね、簡単でしょう?

デプロイ手順が複雑、GitHubで管理する以前からデプロイスクリプトを用意していた、あまりGitHubにロックインされたくない…といった理由で独自にスクリプトを用意している場合はあると思います。

そんなときはこのActionを使ってみてください。

0 件のコメント:

コメントを投稿