ノート: GitHub Actionsは、GitHub Enterprise Server 2.22で限定ベータとして利用可能でした。 ベータは終了しました。 GitHub Actionsは、GitHub Enterprise Server 3.0以降で一般に利用可能になりました。 詳しい情報については、GitHub Enterprise Server 3.0 のリリースノートを参照してください。
- GitHub Enterprise Server 3.0以降へのアップグレードに関する詳しい情報については「GitHub Enterprise Serverのアップグレード」を参照してください。
- アップグレード後のGitHub Actionsの設定に関する詳しい情報については、GitHub Enterprise Server 3.0のドキュメンテーションを参照してください。
ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
ワークフローの成果物について
成果物を使えば、ジョブの完了後にデータを永続化でき、そのデータを同じワークフロー中の他のジョブと共有できます。 成果物とは、ワークフロー実行中に生成されるファイル、またはファイルのコレクションです。 たとえば、ワークフローの実行が終了した後、成果物を使ってビルドとテストの出力を保存しておけます。
GitHub Enterprise Server には、完全なビルドログと成果物が 90 日間保存されます。 プルリクエストの保持期間は、ユーザが新しいコミットをプルリクエストにプッシュするたびに再開されます。
以下は、アップロードできる一般的な成果物の一部です。
- ログファイルとコアダンプ
- テスト結果、エラー、スクリーンショット
- バイナリあるいは圧縮されたファイル
- ストレステストのパフォーマンス出力およびコードカバレッジの結果
アーティファクトは、GitHub Enterprise Serverのインスタンス 上の GitHub Actions 向けに設定された外部 blob ストレージ上のストレージスペースを消費します。
成果物はワークフローの実行中にアップロードされ、成果物の名前とサイズはUIで見ることができます。 GitHub Enterprise ServerのUIを使って成果物がダウンロードされる場合、成果物の一部として個別にアップロードされたすべてのファイルはzipして1つのファイルにまとめられます。 これはすなわち、支払いはこのzipファイルのサイズではなく、アップロードされた成果物のサイズを元に計算されるということです。
GitHub Enterprise Serverには、ビルドの成果物のアップロードとダウンロードに使用できるアクションが2つあります。 詳しい情報については、 GitHub Enterprise Serverのインスタンス 上の actions/upload-artifact
および download-artifact
アクションを参照してください。
ジョブ間でデータを共有するには:
- ファイルをアップロード: アップロードされたファイルに名前を付けて、ジョブが終了する前にデータをアップロードしてください。
- ファイルをダウンロード: 成果物は、同じワークフローの実行中にアップロードされたものだけがダウンロードできます。 ファイルをダウンロードする際には、名前で参照できます。
ジョブのステップは、ランナーマシン上で同じ環境を共有しますが、それぞれが個別のプロセス内で実行されます。 ジョブのステップ間のデータを受け渡すには、入力と出力を使用できます。 入力と出力の詳細については、「GitHub Actions構文のメタデータ」を参照してください。
ビルドおよびテストの成果物をアップロードする
継続的インテグレーション(CI)ワークフローを作成して、コードのビルドやテストを行えます。 GitHub Actions を使用して CI を実行する方法の詳細については、「継続的インテグレーションについて」を参照してください。
コードのビルドおよびテストからの出力によって、多くの場合、エラーのデバッグに使用できるファイルと、デプロイできる本番コードが生成されます。 リポジトリにプッシュされるコードをビルドしてテストし、成功または失敗のステータスをレポートするワークフローを構成することができます。 デプロイメントに使用するビルドおよびテスト出力をアップロードし、失敗したテストまたはクラッシュをデバッグしてテストスイートのカバレッジを確認できます。
成果物をアップロードするには、upload-artifact
アクションが使用できます。 成果物をアップロードする場合は、単一のファイルまたはディレクトリ、あるいは複数のファイルまたはディレクトリを指定できます。 また、特定のファイルやディレクトリを除外したり、ワイルドカードパターンを使用したりすることもできます。 成果物の名前を指定することをおすすめしますが、名前を指定しない場合は、 artifact
がデフォルトの名前として使用されます。 構文の詳細については、 GitHub Enterprise Serverのインスタンス 上の actions/upload-artifact
アクションを参照してください。
サンプル
たとえば、リポジトリあるいはWebアプリケーションにはCSSやJavaScriptに変換しなければならないSASSやTypeScriptが含まれているかもしれません。 ビルド構成がdist
ディレクトリにコンパイル後のファイルを出力すると仮定すると、テストがすべて正常に完了した場合、dist
ディレクトリにあるファイルがWebアプリケーションサーバーにデプロイされます。
|-- hello-world (repository)
| └── dist
| └── tests
| └── src
| └── sass/app.scss
| └── app.ts
| └── output
| └── test
|
この例では、srcディレクトリにコードをbuilds
して、tests
ディレクトリでテストを実行するNode.jsプロジェクトのワークフローを作成しています。 実行中のnpm test
が、code-coverage.html
という名前で、output/test/
ディレクトリに保存されるコードカバレッジレポートを生成すると想定できます。
このワークフローは dist
ディレクトリにプロダクションの成果物をアップロードしますが、Markdownファイルはその対象外です。 また、 code-coverage.html
レポートは別の成果物としてアップロードされます。
name: Node CI
on: [push]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
- name: Archive production artifacts
uses: actions/upload-artifact@v2
with:
name: dist-without-markdown
path: |
dist
!dist/**/*.md
- name: Archive code coverage results
uses: actions/upload-artifact@v2
with:
name: code-coverage-report
path: output/test/code-coverage.html
成果物のダウンロードあるいは削除
During a workflow run, you can use the download-artifact
action to download artifacts that were previously uploaded in the same workflow run.
ワークフローの実行が完了したら、GitHub または REST API を使用してアーティファクトをダウンロードまたは削除できます。 詳しい情報については、「ワークフローの成果物をダウンロードする」、「ワークフローの成果物を削除する」、および「Artifacts REST API」を参照してください。
ワークフロー実行中の成果物のダウンロード
actions/download-artifact
のダウンロードアクションを使用して、ワークフローの実行中に以前にアップロードされたアーティファクトをダウンロードできます。
ノート: ダウンロードできるのは、同じワークフロー実行中にアップロードされたワークフロー内の成果物のみです。
個々の成果物をダウンロードするには、成果物の名前を指定します。 名前を指定せずに成果物をアップロードした場合、デフォルトで名前はartifact
になります。
- name: Download a single artifact
uses: actions/download-artifact@v2
with:
name: my-artifact
また、名前を指定しないことで、ワークフロー実行のすべての成果物をダウンロードすることもできます。 これは、多数の成果物を扱っている場合に便利です。
- name: Download all workflow run artifacts
uses: actions/download-artifact@v2
ワークフロー実行のすべての成果物をダウンロードすると、各成果物のディレクトリーがその名前を使用して作成されます。
構文の詳細については、GitHub Enterprise Serverのインスタンス 上の actions/upload-artifact
アクションを参照してください。
ワークフローのジョブ間でデータを受け渡す
upload-artifact
アクションとdownload-artifact
アクションを使うと、ワークフローのジョブ間でデータを共有できます。 以下のワークフローの例では、同じワークフローのジョブ間でデータを受け渡す方法を説明しています。 詳しい情報については、 GitHub Enterprise Serverのインスタンス 上の actions/upload-artifact
および download-artifact
アクションを参照してください。
前のジョブの成果物に依存するジョブは、前のジョブが正常に完了するまで待つ必要があります。 このワークフローは、needs
キーワードを使用してjob_1
、job_2
、job_3
を順次実行することができます。 たとえば、job_2
はneeds: job_1
構文を使ってjob_1
を必要とすることができます。
ジョブ1は、以下のステップを実行します。
- 数式の計算を実行し、その結果を
math-homework.txt
というテキストファイルに保存します。 upload-artifact
アクションを使って、math-homework.txt
ファイルをhomework
という成果物名でアップロードします。
ジョブ2は、前のジョブの結果を利用して、次の処理を実行します。
- 前のジョブでアップロードされた
homework
成果物をダウンロードします。 デフォルトでは、download-artifact
アクションは、ステップが実行されているワークスペースディレクトリに成果物をダウンロードします。 入力パラメータのpath
を使って、別のダウンロードディレクトリを指定することもできます。 math-homework.txt
ファイル中の値を読み取り、数式の計算を実行して、結果をmath-homework.txt
に再度保存し、その内容を上書きします。math-homework.txt
ファイルをアップロードします。 このアップロードでは、同じ名前を共有しているため、以前にアップロードされた成果物を上書きします。
ジョブ3は、前のジョブでアップロードされた結果を表示して、次の処理を実行します。
homework
成果物をダウンロードします。- 数式の結果をログに出力します。
このワークフロー例で実行される完全な数式は、(3 + 7) x 9 = 90
です。
name: Share data between jobs
on: [push]
jobs:
job_1:
name: Add 3 and 7
runs-on: ubuntu-latest
steps:
- shell: bash
run: |
expr 3 + 7 > math-homework.txt
- name: Upload math result for job 1
uses: actions/upload-artifact@v2
with:
name: homework
path: math-homework.txt
job_2:
name: Multiply by 9
needs: job_1
runs-on: windows-latest
steps:
- name: Download math result for job 1
uses: actions/download-artifact@v2
with:
name: homework
- shell: bash
run: |
value=`cat math-homework.txt`
expr $value \* 9 > math-homework.txt
- name: Upload math result for job 2
uses: actions/upload-artifact@v2
with:
name: homework
path: math-homework.txt
job_3:
name: Display results
needs: job_2
runs-on: macOS-latest
steps:
- name: Download math result for job 2
uses: actions/download-artifact@v2
with:
name: homework
- name: Print the final result
shell: bash
run: |
value=`cat math-homework.txt`
echo The result is $value
ワークフローの実行により、生成された成果物がアーカイブされます。 アーカイブされた成果物のダウンロードの詳細については、「ワークフローの成果物をダウンロードする」を参照してください。