ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

ワークフロー データをアーティファクトとして保存する

アーティファクトを使うと、ワークフローが完了したときに、そのワークフローのジョブとストアデータの間でデータを共有することができます。

GitHub ActionsはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actionsは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 For more information, see "GitHub's products."

ここには以下の内容があります:

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.

GitHub Actions の支払いを管理する GitHubは、macOSランナーのホストにMacStadiumを使用しています。

ワークフローの成果物について

成果物を使えば、ジョブの完了後にデータを永続化でき、そのデータを同じワークフロー中の他のジョブと共有できます。 アーティファクトとは、ワークフロー実行中に生成されるファイル、またはファイルのコレクションです。 たとえば、成果物を使ってワークフローの実行が終了した後、ビルドとテストの出力を保存しておけます。

By default, GitHub stores build logs and artifacts for 90 days, and this retention period can be customized. For more information, see "Usage limits, billing, and administration". プルリクエストの保持期間は、ユーザが新しいコミットをプルリクエストにプッシュするたびに再開されます。

以下は、アップロードできる一般的な成果物の一部です。

  • ログファイルとコアダンプ
  • テスト結果、エラー、スクリーンショット
  • バイナリあるいは圧縮されたファイル
  • ストレステストのパフォーマンス出力およびコード網羅率の結果

成果物の保存には、GitHub上のストレージ領域が使われます。 GitHub Actions usage is free for public repositories and self-hosted runners. プライベートリポジトリでは、それぞれのGitHubアカウントは使用している製品に応じて一定量の無料の分とストレージを受け取ります。 詳細は「GitHub Actions の支払いの管理」を参照してください。

成果物はワークフローの実行中にアップロードされ、成果物の名前とサイズはUIで見ることができます。 GitHubのUIを使って成果物がダウンロードされる場合、成果物の一部として個別にアップロードされたすべてのファイルはzipして1つのファイルにまとめられます。 これはすなわち、支払いはこのzipファイルのサイズではなく、アップロードされた成果物のサイズを元に計算されるということです。

GitHubには、ビルドアーティファクトのアップロードとダウンロードに使用できるアクションが2つあります。 詳しい情報については、 GitHub 上の actions/upload-artifact および download-artifact アクションを参照してください。

ジョブ間でデータを共有するには:

  • ファイルをアップロード: アップロードされたファイルに名前を付けて、ジョブが終了する前にデータをアップロードしてください。
  • ファイルをダウンロード: 成果物は、同じワークフローの実行中にアップロードされたものだけがダウンロードできます。 ファイルをダウンロードする際には、名前で参照できます。

ジョブのステップは、ランナーマシン上で同じ環境を共有しますが、それぞれが個別のプロセス内で実行されます。 ジョブのステップ間のデータを受け渡すには、入力と出力を使用できます。 入力と出力の詳細については、「GitHub Actions構文のメタデータ」を参照してください。

ビルドおよびテストの成果物をアップロードする

継続的インテグレーション(CI)ワークフローを作成して、コードのビルドやテストを行えます。 GitHub Actions を使用して CI を実行する方法の詳細については、「継続的インテグレーションについて」を参照してください。

コードのビルドおよびテストを出力すると多くの場合、エラーのデバッグに使用できるファイルと、デプロイできる本番コードが生成されます。 リポジトリにプッシュされるコードをビルドしてテストし、成功または失敗のステータスをレポートするワークフローを構成することができます。 デプロイメントに使用するビルドおよびテスト出力をアップロードし、失敗したテストまたはクラッシュをデバッグしてテストスイートの範囲を確認できます。

成果物をアップロードするには、upload-artifactアクションが使用できます。 成果物をアップロードする場合は、単一のファイルまたはディレクトリー、または複数のファイルまたはディレクトリーを指定できます。 また、特定のファイルやディレクトリを除外したり、ワイルドカードパターンを使用したりすることもできます。 アーティファクトの名前を指定することをお勧めしますが、名前を指定しない場合は、 アーティファクト が既定の名前として使用されます。 構文の詳細については、 GitHub 上の 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 ディレクトリにプロダクション アーティファクトをアップロードしますが、マークダウン ファイルは除きます。 また、 の code-coverage.html レポートを別のアーティファクトとしてアップロードします。

名前: ノード CI

: [push]

ジョブ:
  build_and_test:
    実行: ubuntu-最新
    ステップ:
      - 名前: チェックアウト リポジトリ
        使用: アクション/checkout@v2
      - 名前: npm インストール、ビルド、テスト
        実行: |
          npm のインストール
          npm 実行ビルド --if-present
          npm テスト
      - 名前: アーカイブ制作アーティファクト
        使用: アクション/アップロードartifact@v2
        :
          名: dist-マークダウンなし
          パス: |
            dist
            !dist/**/*.md
      - 名前: アーカイブ コード カバレッジ結果
        使用: アクション/アップロードartifact@v2
        と共に:
          名: コード カバレッジ レポート
          パス: output/test/code-coverage.html

ワークフローアップロード成果物ワークフロー実行の画像

カスタムアーティファクトの保持期間を設定する

ワークフローによって作成された個々のアーティファクトのカスタム保存期間を定義できます。 ワークフローを使用して新しいアーティファクトを作成する場合、upload-artifact アクションで retention-days を使用できます。 この例は、my-artifact という名前のアーティファクトに 5 日間のカスタム保存期間を設定する方法を示しています。

  - name: 'Upload Artifact'
    uses: actions/upload-artifact@v2
    with:
      name: my-artifact
      path: my_file.txt
      retention-days: 5

retention-days の値は、リポジトリ、Organization、または Enterprise によって設定された保持制限を超えることはできません。

成果物のダウンロードあるいは削除

ワークフローの実行中に、download-artifactaction を使用して、同じワークフローの実行で以前にアップロードされたアーティファクトをダウンロードできます。

ワークフローの実行が完了したら、GitHub または REST API を使用してアーティファクトをダウンロードまたは削除できます。 詳しい情報については、「ワークフローアーティファクトをダウンロードする」、「ワークフローアーティファクトを削除する」、および「アーティファクト REST API」を参照してください。

ワークフロー実行中の成果物のダウンロード

actions/download-artifact のダウンロードアクションを使用して、ワークフローの実行中に以前にアップロードされたアーティファクトをダウンロードできます。

注意: 同じワークフロー実行中にアップロードされたワークフロー内のアーティファクトのみをダウンロードできます。

個々の成果物をダウンロードする成果物の名前を指定します。 名前を指定せずにアーティファクトをアップロードした場合、デフォルト名はアーティファクト`されます。

- 名前: 使用
  単一のアーティファクトをダウンロード: アクション/ダウンロードartifact@v2
  と共に:
    名: my-artifact
`

また、名前を指定しないことで、ワークフロー実行のすべての成果物をダウンロードすることもできます。 これは、多数のアーティファクトを扱っている場合に便利です。

- 名前: 使用
  すべてのワークフロー実行アーティファクトをダウンロード: アクション/ダウンロードartifact@v2

ワークフロー実行のすべての成果物をダウンロードすると、各成果物のディレクトリーがその名前を使用して作成されます。

構文の詳細については、GitHub 上の actions/upload-artifact アクションを参照してください。

ワークフローのジョブ間でデータを受け渡す

upload-artifactアクションとdownload-artifactアクションを使うと、ワークフローのジョブ間でデータを共有できます。 以下のワークフローの例では、同じワークフローのジョブ間でデータを受け渡す方法を説明しています。 詳しい情報については、 GitHub 上の actions/upload-artifact および download-artifact アクションを参照してください。

前のジョブのアーティファクトに依存するジョブは、前のジョブが正常に完了するまで待つ必要があります。 このワークフローは、needsキーワードを使用してjob_1job_2job_3を順次実行することができます。 たとえば、job_2にはneeds: job_1構文を使用するjob_1が必要です。

ジョブ1は、以下のステップを実行します。

  • 数式の計算を実行し、その結果をmath-homework.txtというテキストファイルに保存します。
  • upload-artifactアクションを使って、math-homework.txtファイルをhomeworkという名前でアップロードします。 このアクションで、ファイルがhomeworkという名前のディレクトリに配置されます。

ジョブ2は、前のジョブの結果を利用して、次の処理を実行します。

  • 前のジョブでアップロードされたhomework成果物をダウンロードします。 デフォルトでは、download-artifactアクションは、ステップが実行されているワークスペースディレクトリに成果物をダウンロードします。 入力パラメータのpathを使って、別のダウンロードディレクトリを指定することもできます。
  • homework/math-homework.txtファイル中の値を読み取り、数式の計算を実行し、結果をmath-homework.txtに保存します。
  • math-homework.txtファイルをアップロードします。 このアップロードは、前のアップロードを上書きします。どちらも同じ名前を使っているからです。

ジョブ3は、前のジョブでアップロードされた結果を表示して、次の処理を実行します。

  • homework成果物をダウンロードします。
  • 数式の結果をログに出力します。

このワークフロー例で実行される完全な数式は、(3 + 7) x 9 = 90です。

名前:

ジョブ間でデータを共有: [push]

ジョブ:
  job_1:
    名: 3  7
    実行を追加: ubuntu 最新
    ステップ:
      - シェル: バッシュ
        実行: |
          expr 3 + 7 > math-homework.txt
      - 名前: ジョブ1の数学の結果をアップロード
        使用: アクション/アップロードartifact@v2
        使用:
          名: 宿題
          パス: math-homework.txt

  job_2:
    名: job_1
    
    ニーズ: job_1 実行: windows-最新
    ステップ:
      - 名前: ジョブ1
        の数学結果をダウンロード使用: アクション/ダウンロードartifact@v2

        
      
          :
          値='cat math-homework.txt'
          は、数学-homework.txt
      $value 9 > - 名前:ジョブ2
        の数学の結果をアップロード使用:アクション/アップロードartifact@v2
        :
          名:宿題
          パス:数学-宿題.txt

  job_3:
     結果
    表示:のニーズを表示する:job_2
    実行:macOS最新
    ステップ:
      - 名前:ジョブ2の数学の結果をダウンロード
        使用:アクション/ダウンロードartifact@v2
        :
          名:宿題
      - 名前:シェル
        最終結果を印刷する:バッシュ
        実行: |
          値='cat数学宿題.txt'
          エコー 結果は $value

ジョブ間でデータを受け渡して数学を実行するワークフロー

参考リンク

  • /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.