概要
・GitHubリポジトリに対して何らかの操作が行われた時に、予め設定しておいたワークフローが自動で実行される
・ワークフローはymlで記述、.github/workflows配下に置く
トリガー
ワークフローの実行タイミングを設定
on:
# リポジトリにプッシュされた際にワークフローが実行される
push:
permissions
ワークフローごとに権限を設定
permissions:
# Issueへの書き込み/読み込みを許可
issues: write
Secrets、Valiables
- run:
echo "${{ vars.TEST_ENV }}"
Environments
jobs:
test:
runs-on: ubuntu-latest
environment:
name: staging
steps:
- run:
echo "${{ secrets.TEST }}"
再利用可能ワークフロー
別ワークフローを呼び出す
call.yml(呼び出し元)
jobs:
call_workflow:
uses: ./.github/workflows/called.yml
with:
environment_name: staging
# inheritにすると、呼び出し元のsecretsがそのまま呼び出し先で使用できる
secrets: inherit
called.yml(呼び出し先)
name: Called
on:
workflow_call:
inputs:
environment_name:
description: Environment Name
required: true
type: string
jobs:
called:
runs-on: ubuntu-latest
environment:
name: ${{ inputs.environment_name }}
steps:
- run:
echo "${{ secrets.TEST }}"
Composite Actions
複数stepを1つのワークフローにまとめて再利用できる
call.yml(呼び出し元)
steps:
# 呼び出す前にチェックアウトをする必要がある
- uses: actions/checkout@v4
- uses: ./.github/actions/test
with:
TEST: hoge
.github/actions/test/action.yml(呼び出し先
name: Composite Actio
description: TEST
inputs:
TEST:
required: true
description: Sample
# outputsも可能
runs:
using: composite
steps:
- run: echo "${{ inputs.TEST }}"
# シェルの種類をstepごとに記述する必要がある
shell: bash
self-hosted-runner
独自のGitHubActions実行環境を構築できる
Setting
-> Actions
-> Runners
のNew self-hosted runner
を選択すると、self-hosted-runner設定に必要なコマンドが表示される
jobs:
test:
# runs-onに"self-hosted"を選択
runs-on: self-hosted
artifacts
ジョブの実行結果をzipファイルとしてGitHub上に保存し、他ジョブや他ワークフローに共有できる
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: job-result
path: result/
ダウンロードにはactions/download-artifact
を使用
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: job-result
Docker
self-hosted-runnerの場合、Dockerコンテナ内でワークフローを実行させることができる。
jobs:
test:
container:
image: ubuntu:latest