0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Github actionsのyaml記法

Last updated at Posted at 2024-04-16

経緯

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

最後に

結構サラッと書くつもりだったんですが、公式サイトを真剣に読み込んでしまい手が止まりました...
雰囲気で書いていたので、改めて知れてよかったです!!

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?