Github Actions 使ってますか?
※本記事ではGithubについての説明は割愛します。
Github Actiosとは、GithubによるCI/CDパイプライン構築のためのワークフローです。
CI/CDとはContinuous Integration/Continuous Delivery & Deploymentの略。継続的インテグレーション・継続的デリバリーのことで、要するにコードに変更を加えてマージし(インテグレーション)、本番環境に反映させる(デプロイメント)漸進的に改良を加え続け、より良い価値を届けるためのプラットフォームを築き続けるということです。
しかし、開発における継続的なコードのインテグレーション(統合)・デプロイメントは人の手で行おうとすると少なくない工数と手間がかかり、「継続性」の担保が難しい状況に陥る可能性があります。その為、リモートリポジトリへの変更のプッシュ等のイベントにフックして(フックはぶら下がるという意味の英単語です。ここにおいては作業開始の合図みたいなものだとお考えください。)ワークフローを自動実行します。
変更を引き金にしてビルド・テスト・デプロイを全て自動化して走らせ、コードの変更後に行うべき作業をGitに任せてしまおうというものですね。
ひとまずやってみる
非常に簡易的ですが、「git-remote-demo」というリポジトリを作成して試してみます。
上部メニューのActionsを選択するとワークフロー一覧ページへ遷移できます。
向かって左側メニューバーの「Workflows」が既に作成済みのワークフロー一覧になります。画面中央の「2 workflow runs」下に表示されているのは既に実行された後のworkflowです。青いチェックマークは問題なくフローが完了したという印ですね。
今回の形式では特にブランチを指定せず、全てのブランチでpushが行われた場合にワークフローが起動する設定です。対象とするブランチを指定したり、実行スケジュールをcron式で指定しておくことで、定期実行という形でワークフローを構築することも可能です。
こちらのymlファイルは
プロジェクト直下に.githubディレクトリを作成、更にその配下にworkflowsディレクトリを作成し、そこに配置します。
.github/workflows/workflow_demo2.yml に配置します。
当該ファイル内には実行するフローを定義し、YAML形式で記述しております。
name: GithubActionsDemo-2 #ワークフロー名
on: push #トリガーするアクション
#ワークフロー時に走らせるjobと仮想環境を記述
# jobs: 実行したい処理をまとめたもの
# steps: 実行する1つ1つのコマンド
jobs:
my_first_job:
name: Greeting
runs-on: ubuntu-latest
steps:
- run: echo "Actionsのテスト2個目です"
「GithubActions起動デモ用のプッシュです。」というコメントをつけてコミットとプッシュを実施。
ワークフロー側の画面はというと、
workflow.ymlの定義通り、プッシュすることでワークフローを実行し、数秒で完了していますね。
⇩ワークフローの実行ログも見れます。
終わり
今回はTHE・チュートリアルというような形で極単純なフローを作成・実行まで試しました。
応用すればSlackに通知を送ったり、マージ後に自動でブランチを削除したりとどんどん自動化できます。
使いこなせるようになればチームに貢献できるはずなので、身につけていきたいですね。