Github Actionsとは
- Github のCI/CDツール
- リポジトリと連携して、ビルド・テスト・デプロイを自動化できる
- push, pull request, webhookを使用した外部イベントなどをトリガーとすることができる
- 特定のブランチやディレクトリに対してトリガーを指定できる
- ワークフロー設定ファイル(.yml)を複数置ける
- テンプレートファイルが用意されている
- 実行結果はGithubの
Actions
タブから確認できる
ワークフローの作成
- リポジトリに
.github/workflows
というディレクトを作成し、その直下に.yml
または.yaml
という拡張子でワークフロー設定ファイルを作成する - Githubページの
Actions
タブのNew workflow
から作成することもできる
設定ファイル .yml
構造
name: sample-actions #ワークフローの名前
on: [push] #テストを実行するトリガー
jobs: #jobの定義
job1: #jobの名前
runs-on: ubuntu-latest #jobが実行される環境を定義
steps: #jobが実行する処理
- uses: #Actionを指定
- run: #コマンドを指定
job2:
...
サンプル
サンプルの設定ファイルを例に、各記述について見ていく
このサンプルでは、コードがpushされるたびにコードをチェックアウトし、batsテスティングフレームワークをインストールし、bats -vというbatsのバージョンを出力するコマンドが実行される。
sample.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
name
- Githubリポジトリに表示されるワークフロー名
- 省略すると相対パスが名前となる
on
- トリガーとなるイベントを指定する
- 複数指定する場合は以下のように配列で記述できる
on: [push, pull_request] #どちらかが発生したときに実行される
- 特定のブランチやディレクトリに対してのトリガーを指定できる
# masterブランチに対してpushした時に実行される
push:
branches:
- master
workflow_dispatch
- サンプルには記載されていないが、ワークフローを手動で実行できるイベントとして
workflow_dispatch
がある -
Actions
のタブ画面で、実行ブランチを選択できるUIがデフォルトで追加される - 実行時に独自のデータを付与することができる
#UIから name というデータを付与できる
on:
workflow_dispatch:
inputs:
name:
description: 'Name'
required: true
#呼び出すときは以下のように記述する
run: echo "${{ github.event.inputs.name }}"
jobs
- ワークフローファイルで実行されるjobを記述する
- デフォルトではjobは並列で実行される
サンプルではcheck-bats-version
という名前のjobを一つだけ記述しているが、もちろん複数記述も可能
runs-on
- jobを実行する仮想マシンを設定する
- ubuntsu以外にもwindows-serverやmacosもサポートされている
steps
- jobが実行する処理を記述する
- uses でActionを指定
- run でコマンドを指定
- Githubで表示される名前を
name
で指定できる。ワークフローのログに表示される。
steps:
- name: First step
uses: actions/checkout@v3
Action
- stepを構成する最小単位で何かしらの一連の処理を表す
- Github Actionsが提供していたり、独自のアクションを作成することもできる
- パブリックリポジトリやDockerレジストリで公開されているActionを実行できる
#サンプルではactionsユーザーのcheckoutリポジトリというActionを指定している
uses: actions/checkout@v2
actions/checkout@v3
- リポジトリをランナーにチェックアウトするアクション
- コードに対してスクリプトや他のアクション(ビルドやテストツールなど)を実行できるようになる
- ワークフローがリポジトリのコードに対して実行されるときに使う
actions/setup-node@v3
- Node.jsの指定されたバージョンをインストールする
-
with
でバージョンを指定する(サンプルではv14)