【Knowledge】Github Actionsを使ってみた

個人開発で何かを効率化できるようにしたいためGithub Actionsを使って作業を楽したい…

Github Actionsとは

リポジトリの中でトリガー(イベント)を元に様々なアクションを実行することができる機能です。PRの自動マージやなどをあらゆる面倒くさい作業を自動化できます。

全体図(公式から

Workflow:イベントをきっかけに実行される一連の処理の定義ファイル(.ymlファイル)

Event:pushした時などのWorkflowを開始するきっかけとなるトリガー

Runner:GitHubのサーバー上でJobを実行するための仮想マシン

Job:Runner上で順に実行される1つ以上の処理のまとまり

Action:特定の処理をするシェルスクリプト(Action = Step)

Workflow作成の流れ

GitHub Actionsではymlファイルを利用してワークフローを作成する必要があります

配置場所:.github/workflows

ymlファイルの編集ではVSCodeを利用

公式のプラグインがあり構文の補完、エラーチェックをしてくれます。

Marketplaceにてテンプレートを検索してプロジェクトにあったものをすぐに追加できます

GitHubは常に.github/workflowsディレクトリを監視しているためymlファイルが追加されればActionsに自動で表示されます。

どのブランチで実行されたか、どれくらい前に実行されたかなど確認できます。

下記を設定するとActionsで確認時に見やすくなります。

name: Actions上での名前を設定(ワークフローの名前)
run-name: 実行ログ一覧に出る名前(カスタムログとして分かりやすくするべき)

SummaryではJobの実行状況を確認することができます

JobsをタップするとJobのステップと実行が確認できる

右上のRe-run all jobsやRe-run failed jobsで再実行できます

Workflow fileでは定義したymlファイルを確認することができます

Workflowの構成要素について

・branchesなどはイベントに対して条件を指定するもの
・typesなどはアクティビティのタイプを指定するもの(Docsを確認)

・usesは既存のアクションを利用することができる(@actionsはGitHub公式)
・runで実行したいシェルコマンドを実行
・needsを指定すると指定のjob完了後に実行できる

needsを利用しない

needsを利用

よく使われそうなもの

  • if:で条件指定することができる(jobやstepに対して利用できる)
  • with:でアクションに渡す引数を指定できる(usersの後に定義)
  • id:で各ステップに一意の識別子を設定できる
  • outputs:でjob間で値を渡すことができる
  • env:で環境変数などをyml内で定義できる(Github上で)
  • secrets.キー名で事前にGitHubのSettingsから設定したシークレットキーを利用できる

id:とoutputs:を利用した場合

参考リンク


GitHub Actions ドキュメント – GitHub Docs