経緯
github actionsにて、自動デプロイの設定を行おうとしたところ、yamlの記法エラーを何度か経験しました。
なので、どういう形式でgithub actionsの設定を書けばいいのかまとめていこうと思います。
yamlファイルの理解
github actionsのサンプルファイルはこちらです。
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install -g bats
- run: bats -v
githubのサイトでは左にコード、右に解説があり非常にわかりやすいのですが、Qiitaでそれができるかわかっていないため、一行ずつ解説する形にします。
name: learn-github-actions
ワークフロー名。リポジトリのActionsタブで表示される名前です。
これがなかった場合、github actionsのyamlファイル名が表示されます。
run-name: ${{ github.actor }} is learning GitHub Actions
ワークフロー実行の名前です。リポジトリのAcitonsタブにあるワークフロー実行の一覧に表示されます。
もしこれが省略された場合、例えばpushやプルリクイベントをトリガーするワークフローでは、コミットメッージやプルリクのタイトルが設定されます。
${{ github.actor }}
はワークフロー内で使用される変数で、ワークフロー実行のトリガーとなったアクターのユーザー名を表示しています。
on: [push]
ここが結構大切で、ワークフローのトリガーを指します。この例では、pushしたりマージしたりするたびにワークフローが実行されます。上記はすべてのブランチが対象となっています。
ちなみにトリガーにできるイベントは結構あります。
jobs:
check-bats-version:
check-bats-version
という名前のジョブを定義し、jobs
はこのワークフローで実行されるすべてのジョブをグループ化します。
runs-on: ubuntu-latest
ジョブを実行する仮想環境です。linuxが主流ですが、windowsやmacも選べます。
ただし、macはgithub actionsで同時実行できるジョブが他のOSより少ないです。
詳しくは以下の記事へ記載しています。
steps:
check-bats-version
で実行されるすべてのステップをグループ化します。
これ以下の階層は、個別のアクションやシェルスクリプトです。
- uses: actions/checkout@v4
上記はよく見る一行ですね。これは、actions/checkoutのv4を実行しています。
何をしているかを公式のreadmeからとってきます。
このアクションは$GITHUB_WORKSPACE配下のリポジトリをチェックアウトし、ワークフローがリポジトリにアクセスできるようにします。
デフォルトでは、ワークフローをトリガーした ref/SHA の単一のコミットのみがフェッチされます。fetch-depth: 0に設定すると、すべてのブランチとタグのすべての履歴がフェッチされます。イベントごとに $GITHUB_SHA が指すコミットについては、こちらを参照してください。
認証トークンはローカルの git config に保存されます。これにより、スクリプトで認証済みの git コマンドを実行できるようになります。トークンはジョブ終了後のクリーンアップ時に削除されます。オプトアウトするには persist-credentials: false を設定します。
つまりこういうことですかね
-
$GITHUB_WORKSPACE
配下でリポジトリのアクセス許可 - デフォルトで単一のコミットのみがダウンロード(フェッチ)される
- 認証トークンはローカルの
git config
に保存され、ジョブ後に削除される
- uses: actions/setup-node@v4
with:
node-version: '20'
このステップでは、actions/setup-node@v4
アクションを使用して、指定したバージョンのNode.jsをインストールします。これにより、nodeとnpmコマンドの両方がPATHに置かれます。
- run: npm install -g bats
- run: bats -v
runは、ランナー上でコマンドを実行するようにジョブに指示します。
ちなみに複数行まとめて書くには以下のようにします。
- run: |
npm install -g bats
bats -v
最後に
結構サラッと書くつもりだったんですが、公式サイトを真剣に読み込んでしまい手が止まりました...
雰囲気で書いていたので、改めて知れてよかったです!!
参考文献