GitHub Actions について
まず何が出来るのか
GitHub Actionsというものを知ったときに、真っ先に考えるのがコレですよね。
結論から言うと、だいたいのことは何でも出来ます!
※コードが書ければね。
ということで詳しく解説していきます。
仕組み
上の図は1例ですが、Gitに対する何かしらのアクション(pushなど)をトリガーにして、任意のコマンドを実行できる、これが GitHub Actions です。
任意のコマンドとは、リポジトリ毎にyml形式のファイルを作成し、そこに記述したものが実行される仕組みです。
CI/CD に用いられることが多いイメージですね。
例えば mainブランチへのpushをトリガーに、サーバー側へ以下のコマンド発行を命令します。
- git pull
- マイグレーションなどの実行
- アプリケーションプロセスの再起動
この仕組みで、開発者は mainブランチへpushしただけで、あとは自動でデプロイが進むんです!
設定(実装)手順
ymlファイルを作成
今回の GitHub Actions は、mainブランチへのpushをトリガーにしたいと思います。
まず最初に、任意のブランチを作成し、以下のようにymlファイルを作成します。
もうお気づきの方もいるかもしれませんが、run句の箇所で”ssh”や”git”などのコマンドを書いています。
つまり、これがActionとして実行される訳なんです。
(他の色々なコマンドも実行可能なので、割となんでも出来てしまうんですよね)
コードの解説
まず最初の on の部分がトリガーを指定してます。
「mainブランチにpushされたら」という指定になっています。
次に jobs ですが、ひとまずname以外はそう書くものなのだと理解しておいてください。
nameは任意の文字列で大丈夫です。
env は環境変数を表しており、後ほど解説します。
run が実際に実行するコマンドを書いている箇所です。
ざっくりは、「サーバーにssh」→「git pull」→「最新コミットハッシュ名のファイルを作成」という流れにしています。
環境変数を設定する
上のコードで出てきた “${{ secrets.PRIVATE_KEY }}” のようなものは、環境変数と呼ばれ、GitHubの画面上で定義します。
ymlファイルを作成したリポジトリで、「Settings」タブ→「Secrets」→「Actions」と進んでください。
右上の「New repository secret」ボタンから環境変数を新規作成できます。
画像の通り3つ作成します。
ちなみに、AWSのEC2を使う場合は以下の通りです。
HOST_NAME | パブリックIPアドレス |
PRIVATE_KEY | .pemファイルの中身 |
USER_NAME | ec2-user |
これで準備はOKです!
GitHub Actions を動かしてみる
想定
先ほどのコードで、mainブランチにpushすると、EC2のlogフォルダに新しくファイルが作成されるはずです。
これを確認していきましょう!
まずはEC2のlogフォルダを事前に見ておきます。
lsコマンドで、logフォルダは空っぽであることが確認できました。
いざpush
ではmainブランチにpushします。
push完了すると、GitHubの画面上からでもActionsの進行状況が確認できます。
チェックマークになっているので、正常に終了したようですね。
しっかりファイルが作成されているか、EC2のlogフォルダを見てみます。
ファイルも作成されていました!
これで無事GitHub Actionsが組めました!
まとめ
GitHub Actions ではgitの行動をトリガーに様々なコマンドを実行できることをご紹介しました。
設定方法は大きく2つで、
- .github/workflows/xxx.yml を作成
- GitHubの画面にて環境変数を定義
というステップでした。
今回ご紹介したActionでは、ただ単にファイルを作成するのみでしたが、git pull の後に普段やっているようなデプロイコマンドを書けば自動デプロイも可能となります。
少し触って理解できたら色々と試してみましょう。
コメント