GitHub Actions まとめ
- ワークフローは1つ以上のジョブを持つ
- ジョブは直列もしくは並列で実行できる
- ジョブは1つ以上のステップを持ち、ステップはスクリプト、もしくはアクションを実行する
- ステップは繰り返し使えるもの
Workflows
- yamlで定義する
- 1つ以上のジョブを持っている
- トリガーは3種類
- イベントによるトリガー
- 手動でのトリガー
- スケジュールによるトリガー
.github/workflows/
に保存する
Events
イベントとはリポジトリがトリガーする特定のアクティビティのこと。
- PRを作ったとき
- issueを開いたとき
- リポジトリにコミットをプッシュしたとき ...etc
Jobs
ジョブは同じランナー上にあるワークフロー上にある処理のこと。 - 実態は2種類 - シェエルスクリプト - 実行されるアクションのこと - 同じランナー上で実行されるのでそれぞれのステップでデータがシェアされる - ビルドのジョブでビルドしたあとにテストジョブが走る - 依存関係についてカスタマイズできる - デフォルトだと依存関係はなく、並列に実行される
Actions
アクションはGitHub Actionsプラットフォームのためのアプリケーションのこと。 複雑だけどよく使うタスクを処理する。 - アクションはGitHubのgitリポジトリをpullできる - 自分のビルド環境に適切なツールチェーンをセットアップする - クラウドプロバイダへの認証をセットアップする
Runners
- ランナーはサーバのこと
- ランナーはトリガーに応じてワークフローを走らせる。
- 1つのランナーが一度に実行できるジョブは1つだけ
- 提供しているランナーは3種類
- Ubuntu Linux
- Microsoft Windows
- macOS
- 上記以外にも自分でホストしたものを独自に定義できる模様
構造例
- Workflow
- Runner1
- Job1
- Step1
- Step2
- Job2
- Step1
- Step2
- Job1
- Runner2
- Job1
- Step1
- Step2
- Job2
- Step1
- Step2
- Job1
- Runner1
ワークフローを作成する
- リポジトリに
.github/workflows/
フォルダを作成する .github/workflows/
フォルダにlearn-github-actions.yml
を追加する
中身は以下
name: learn-github-actions on: [push] jobs: check-bats-version: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '14' - run: npm install -g bats - run: bats -v
- 変更をコミットしてpushする
Workflowファイルについて理解する
以下のWorkflowファイルについて理解する
name: learn-github-actions on: [push] jobs: check-bats-version: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '14' - run: npm install -g bats - run: bats -v
以下に詳しく書いてある https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: learn-github-actions
[任意] Workflow名
on: [push]
トリガーの設定。 詳しくはGitHub Actions トリガーを参照。
jobs:
learn-github-actions ワークフロー内のジョブを記載する。
check-bats-version:
ジョブ名の定義。
runs-on: ubuntu-latest
ジョブが実行されるマシンの指定。
steps:
check-bats-versionジョブ内のステップを定義する。
ステップになるのは
- アクション
- シェエルスクリプト
- uses: actions/checkout@v3
v3のactions/checkoutアクションを実行する。 チェックアウトはリポジトリをランナーの上にpullする。 ビルドやテストのために使う。
- uses: actions/setup-node@v3 with: node-version: '14'
特定のバージョンのnode.jsをインストールする。
- run: npm install -g bats
ランナー上でコマンドを実行する。
GitHub Actionsの請求について
- パブリックリポジトリ、self-hosted runner での利用は無料
- プライベートリポジトリでは制限がある
使用制限について
詳しくはこちら
再利用可能なWorkflowの請求について
ワークフローを再利用するとき、請求は常に呼び出し側のワークフローに関連付けられる。
アーティファクトとログのリテンションポリシー
アーティファクトとログのリテンション期間を設定することができる。 デフォルトでは90日間保持される。
- パブリックリポジトリでは1 - 90日で指定できる
- プライベートリポジトリでは1 - 400日で指定できる
リテンション機関を変更した場合は、新しいアーティファクトとログに対して適用される。
アクションの探し方、カスタマイズの仕方
アクションはコミュニティで作られたものや、自分で作ってリポジトリに作ったものを使うことができる。
https://docs.github.com/en/actions/learn-github-actions/finding-and-customizing-actions
マーケットプレイスからの探し方
- リポジトリ内のワークフローファイルを探す
- 右上の編集ボタンをクリック
- エディタの右側に「マーケットプレイス」タブがあるのでそこを選択
※ チェックバッジがついているものはGitHubがパートナー組織として認定しているところが作ったもの
自分のワークフローへのアクションの追加の仕方
- マーケットプレイスで見つけたアクションのページを開く
- 「Installation」の下にあるコピーボタンをクリック
- ワークフローファイルの新しいステップとしてコピーしたコードを貼り付ける
※ Dependabotでアクションをアップデートすることもできる
同じリポジトリにあるアクションの追加方法
2通りの書き方で指定できる
- {owner}/{repo}@{ref}
- ./path/to/dir
書き方の例
ファイル構造
|-- hello-world (repository) | |__ .github | └── workflows | └── my-first-workflow.yml | └── actions | |__ hello-world-action | └── action.yml
ワークフローファイルの書き方例
jobs: build: runs-on: ubuntu-latest steps: # This step checks out a copy of your repository. - uses: actions/checkout@v3 # This step references the directory that contains the action. - uses: ./.github/actions/hello-world-action
GitHub-hosted runners でサポートされているソフトウェア
以下を参照。