GitHub Actionsとは?
ビルド、テスト、デプロイなどを自動化するCI/CDプラットフォームのこと。GitHub内のサービスのため、GitHub内で完結することができる。
GiHub Actionsの仕組み
- 設置場所:
.github/workflows
- ファイル形式:yml
- 記載内容:ワークフロー
- トリガー条件:push, pull_requestなど
WorkflowはJob単位で分けられて、Runner(仮想マシンのインスタンス)上で実行される。
JobはさらにStep単位に分けられていて、この中でコマンドが実行される。
GiHub Actionsの書き方
job(処理の最上位単位)
jobは複数定義可能で並列実行される
jobs: my_job1: name: My job1 my_job2 name: My job2
on(処理実行条件を指定)
on: [push] # push時にjobsを実行
イベント | 説明 |
---|---|
push | リモートリポジトリへpush時 |
pull_request | プルリクエスト作成時 |
deployment | デプロイ時 |
release | リリース時 |
issues | GitHub Issues関連の処理発生時 |
schedule | cronによる定期実行 |
上記以外のイベントはこちらを参照
run-on(ジョブを実行するOS(ランナー)を指定)
runs-on: ubuntu-latest # ubuntuの最新版を指定
uses(第三者もしくはGitHubが作成したActionsを利用)
- name: Checkout uses: actions/checkout@v4
usesに指定できるActionsは以下で検索して調べる
GitHub Marketplace · Actions to improve your workflow · GitHub
@
以下に指定するバージョンの扱いについては以下が詳しかった
GitHub Actions の uses でメジャーバージョンを参照するのはリスク
マイナーバージョン指定が良さそう。信頼性が懸念される場合は、SHA指定が一番安全
Actionsの信頼性は、GitHub Marketplace の「Verified creator」バッジが参考になる
step, run(job内のstep要素とコマンド実行するrun)
リモートリポジトリにpushするとファイル構成の確認、actions/checkout@v4を実行する
name: command on: [push] jobs: command: name: Use Linux commands runs-on: ubuntu-20.04 steps: - name: Inspect files before checkout run: ls -la # Linuxコマンドを実行可能 - name: Checkout uses: actions/checkout@v4 # ワークフローを実行するリポジトリをチェックアウト
env(ワークフロー内に環境変数を設定)
変数名: 設定値という書き方で設定可能
env: SECRET_KEY: test ALLOWED_HOSTS: 127.0.0.1