注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
概要
GitHub Actions を使用すると、アプリケーションと Team の固有のニーズに合わせてワークフローをカスタマイズできます。 このガイドでは、変数の使用、スクリプトの実行、ジョブ間でのデータと成果物の共有など、いくつかの重要なカスタマイズ手法について説明します。
ワークフローで変数を使用する
GitHub Actions には、ワークフロー実行ごとのデフォルトの環境変数が含まれています。 カスタム環境変数を使用する必要がある場合は、YAML ワークフローファイルでこれらを設定できます。 この例では、POSTGRES_HOST
と POSTGRES_PORT
という名前のカスタム変数を作成する方法を示します。 その後、これらの変数は node client.js
スクリプトで使用できます。
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- name: Connect to PostgreSQL
run: node client.js
env:
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
詳しくは、「変数」を参照してください。
ワークフローにスクリプトを追加する
GitHub Actionsワークフローを使用してスクリプトとシェルコマンドを実行し、割り当てられたランナーで実行できます。 この例では、キーワード run
を使用してランナーで コマンドnpm install -g bats
を実行する方法を示します。
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- run: npm install -g bats
ワークフローを使用してリポジトリに格納されているスクリプトを実行するには、まずリポジトリをランナーにチェックする必要があります。 これを行うと、キーワードrun
を使用してランナーでスクリプトを実行できます。 次の例では、それぞれ別のジョブ ステップで 2 つのスクリプトを実行します。 ランナー上のスクリプトの場所は、実行コマンドの既定の作業ディレクトリを設定することによって指定されます。 詳しくは、「ジョブの既定値の設定」を参照してください。
jobs:
example-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./scripts
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: ./my-script.sh
- name: Run another script
run: ./my-other-script.sh
ワークフロー ジョブを実行するスクリプトはすべて実行可能である必要があります。 例えば、スクリプトを実行するインタプリタに引数としてスクリプトを渡すか、run: bash script.sh
ファイル自体を実行可能にすることで、ワークフロー内でこれを行うことができます。 コマンドgit update-index --chmod=+x PATH/TO/YOUR/script.sh
をローカルで使用し、ファイルをコミットしてリポジトリにプッシュすることで、ファイルに実行アクセス許可を付与できます。 または、Linux および Mac ランナーで実行されるワークフローの場合は、スクリプトを実行する前に、ワークフロー ジョブで実行アクセス許可をファイルに付与するコマンドを追加できます。
jobs:
example-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./scripts
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Make the script files executable
run: chmod +x my-script.sh my-other-script.sh
- name: Run the scripts
run: |
./my-script.sh
./my-other-script.sh
run
キーワードについて詳しくは、「ギットハブ アクション のワークフロー構文」をご覧ください。
ジョブ間でデータを共有する
同じワークフロー内の別のジョブと共有するファイルがジョブによって生成される場合、または後で参照できるようにファイルを保存する場合は、それらを_アーティファクト_として GitHub に保存できます。 成果物とは、コードをビルドしてテストするときに作成されるファイルのことです。 たとえば、成果物には、バイナリまたパッケージファイル、テスト結果、スクリーンショット、ログファイルなどがあります。 成果物は、それが作成されたワークフロー実行に関連付けられており、別のジョブで使用できます。 実行内で呼び出されるすべてのアクションとワークフローは、その実行の成果物への書き込みアクセス権を持っています。
たとえば、ファイルを作成し、それを成果物としてアップロードできます。
jobs:
example-job:
name: Save output
runs-on: ubuntu-latest
steps:
- shell: bash
run: |
expr 1 + 1 > output.log
- name: Upload output file
uses: actions/upload-artifact@v3
with:
name: output-log-file
path: output.log
別のワークフローの実行からアーティファクトをダウンロードするには、actions/download-artifact
アクションを使用します。 たとえば、output-log-file
という名前のアーティファクトをダウンロードできます。
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- name: Download a single artifact
uses: actions/download-artifact@v3
with:
name: output-log-file
同じワークフローの実行からアーティファクトをダウンロードするには、アップロード ジョブが完了するまで開始されないように、ダウンロード ジョブで needs: upload-job-name
を指定する必要があります。
成果物について詳しくは、「ワークフロー データを成果物として保存する」を参照してください。
次の手順
GitHub Actions についてさらに学ぶには、「ワークフローについて」をご覧ください。