JetBrains Space ヘルプ

ファイルアーティファクトを保存する

ビルドアーティファクトはビルドプロセスの出力です。たとえば、コードのコンパイルの結果として生成されたファイルなどです。オートメーションを使用して CI/CD パイプラインを構築すると、あるジョブ (CI/CD ステージ) によって作成されたファイルアーティファクトを別のジョブに渡すことができます。ファイルアーティファクトの作成がビルドプロセスの最終結果である場合は、このアーティファクトをファイルリポジトリに保存できます。

デフォルトのアーティファクトリポジトリ

Space のプロジェクトには、ビルドアーティファクトのデフォルトファイルリポジトリを関連付けることができます。

  • 各プロジェクトには、対応するアクセス制限 (プロジェクトメンバーのみ) を備えた独自のデフォルトファイルリポジトリがあります。

  • リポジトリは、デフォルトリポジトリを参照するジョブ (ファイルのアップロードなど) を初めて実行するときに自動的に作成されます。

  • スクリプトでは、run:file-artifacts.default-repository パラメーターからデフォルトのファイルリポジトリの名前を取得できます。

  • デフォルトのファイルリポジトリの代わりに、ジョブは Packages 内の任意のファイルリポジトリを使用できます。

  • デフォルトのファイルリポジトリのデフォルト名は default-automation-files です。この名前は、ファイルストレージ | ファイルアーティファクトリポジトリジョブ | 設定で変更できます。

  • ビルドアーティファクトのディストリビューションにはパブリックファイルリポジトリを使用できます。

ファイルアーティファクトをアップロードする

ファイルをアップロードするには、実行環境に応じて、job.container.fileArtifacts ブロックまたは job.host.fileArtifacts ブロックを使用します。

job("Generate usage report") { container(displayName = "Report upload", image = "ubuntu") { shellScript { content = """ echo Here go your build activities... echo Suppose, the result is /build/build.zip ./build.sh >> ./build/build.zip """ } // Upload build/build.zip to the default file repository fileArtifacts { // To upload to another repo, uncomment the next line // repository = FileRepository(name = "my-file-repo", remoteBasePath = "{{ run:number }}") // Local path to artifact relative to working dir localPath = "build/build.zip" // Don't fail job if build.zip is not found optional = true // Target path to artifact in file repository. remotePath = "{{ run:number }}/build.zip" // Upload condition (job run result): SUCCESS (default), ERROR, ALWAYS onStatus = OnStatus.SUCCESS } } }

デフォルトのアップロードパス

デフォルトリポジトリ内のファイルアーティファクトの結果のパスは、次の方法で生成されます。<basePath>/<fileArtifacts.remotePath> :

  • <basePath>{{ run:job.repository }}/jobs/{{ dashify('{{ run:job.name }}') }}-{{ run:job.id }}/{{ run:number }}-{{ run:id }} に解決されます

    これらは、以下を表すパラメーターとして提供されます

    • {{ run:job.repository }} – Git リポジトリの名前。

    • dashify('{{ run:job.name }} – ここで、{{ run:job.name }} はジョブ名です。dashify 関数は、すべての特殊文字を - ダッシュ記号に置き換えます。例: Build artifactsBuild-artifacts に変換されます

    • {{ run:job.id }} – ジョブ識別子。

    • {{ run:number }} – 現在のジョブの実行番号。

    • {{ run:id }} – 現在のジョブ実行の識別子。

  • <fileArtifacts.remotePath> は、ジョブの remotePath パラメーターで指定したものです。

例: 次のコード

// suppose the Git repo name is 'my-project' // this is job run number '5' // job execution id is 'IQ2qy0RwyJ5' (some random number) // job run id is '1Euwjv1V3B9f' (some random number) job("Generate zip file") { container(image = "ubuntu") { // Here goes some code... fileArtifacts { localPath = "build/build.zip" remotePath = "build/build.zip" } } }

build/build.zip ファイルをデフォルトのファイルリポジトリの my-project/jobs/Generate-zip-file-IQ2qy0RwyJ5/5-1Euwjv1V3B9f/build/build.zip ディレクトリに置きます。

ファイルストレージ | ベースパスジョブ | 設定でデフォルトのベースパスを変更できます。

デフォルトとは異なるパスにアップロードするには、fileArtifacts.repository パラメーターを使用します。

// to upload files to the 'myfiles' folder in the default file repository // the resulting path will be 'myfiles/build.zip' fileArtifacts { repository = FileRepository(name = "default-automation-files", remoteBasePath = "myfiles") localPath = "build/build.zip" remotePath = "build.zip" }

localPath の指定方法

localPath は、保存するファイルまたはディレクトリの場所を定義します。次のように指定できます。

  • 絶対パス (例: /home/root/some-dir)。

  • 現在のホームディレクトリに対する相対パス (例: ~/.m2)。job.host ステップでのみ使用できます。job.container ステップでは、ここで説明されているのと同じ回避策を使用できます。

  • ステップの作業ディレクトリ (デフォルトでは、プロジェクトのルート) に対する相対パス (例: build)。

ファイルとディレクトリをアーカイブする

ファイルまたはディレクトリをストレージにアップロードする前にアーカイブするように archive = true を設定します。例:

// Space will archive the 'build' directory to a .zip file fileArtifacts { localPath = "build" remotePath = "build.tar.gz" archive = true }

ファイルリポジトリ内のファイルを上書きする

Space のファイルリポジトリには不変ファイルオプションがあります。有効にすると、リポジトリは同じパスを持つファイルを複数回アップロードすることを禁止します。無効にすると、ファイルは上書きされる可能性があります。デフォルトでは、このオプションはデフォルトのファイルリポジトリに対して有効になっています。

アップロード条件

fileArtifacts.onStatus パラメーターを使用して、ファイルをアップロードするための条件をさらに指定できます。次のパラメーター値が可能です。

  • OnStatus.SUCCESS – (デフォルト) ジョブが正常に終了した場合にのみファイルをアップロードします。

  • OnStatus.ERROR – ジョブがエラーで終了した場合にのみファイルをアップロードします。

  • OnStatus.ALWAYS – 常にファイルをアップロードしてください。

ファイルアーティファクトをデフォルト以外のリポジトリにアップロードする

デフォルトとは異なるリポジトリにアーティファクトをアップロードするには、fileArtifacts.repository パラメーターを使用します。このリポジトリは、ジョブを実行するのと同じプロジェクトに属している必要があることに注意してください。

// to upload files to 'my-file-repo' fileArtifacts { repository = FileRepository(name = "my-file-repo", remoteBasePath = "{{ run:number }}") localPath = "build/build.zip" remotePath = "build.zip" }

別のプロジェクトで作成されたファイルリポジトリにアーティファクトをアップロードするには、まずこのリポジトリを現在のプロジェクトにアタッチする必要があります。

ジョブ内のファイルアーティファクトをダウンロードして再利用する

ビルド時間を短縮し、インフラストラクチャの負荷を軽減するために、以前のジョブ実行からのビルドアーティファクトを新しいジョブの実行で再利用できます。ファイルリポジトリからビルドアーティファクトをダウンロードするには、fileInput ブロックを使用する必要があります。アーティファクトが抽出する .tar.gz アーカイブである場合は、extract = true を指定します。

job("Reuse file artifact") { host("Run script from artifact") { // download file from the default file repo fileInput { // we use the provided parameter to reference the default repo source = FileSource.FileArtifact( "{{ run:file-artifacts.default-repository }}", "myfiles/build.tar.gz", // unzip the build.zip file extract = true ) localPath = "build/build.zip" } shellScript { content = """ chmod +x ./build/run_script.sh ./build/run_script.sh """ } } }

デフォルト以外のリポジトリからファイルアーティファクトを取得する

デフォルトとは異なるリポジトリからファイルアーティファクトをダウンロードするには、FileSource.FileArtifact にリポジトリ名を指定します。このリポジトリは、ジョブを実行するのと同じプロジェクトに属している必要があることに注意してください。

// to download file from 'my-file-repo' fileInput { source = FileSource.FileArtifact("my-file-repo", "myfiles/build.zip") localPath = "build/build.zip" }

別のプロジェクトで作成されたファイルリポジトリからアーティファクトをダウンロードするには、まずこのリポジトリを現在のプロジェクトにアタッチする必要があります。

他のファイルソース

fileInput.FileSource パラメーターを使用すると、ファイルリポジトリだけでなく他のソースからもファイルを取得できます。現時点では、あと 1 つのソースのみがサポートされています。

  • FileSource.Text を使用すると、文字列 (プレーンテキスト) からファイルを作成できます。この主な使用例は、プロジェクトシークレットからファイルを作成することです。詳細

アーティファクトが見つからない場合はジョブの実行を続行する

デフォルトでは、fileInput.source で指定されたファイルアーティファクトが見つからない場合、ジョブは失敗します。ジョブの実行を継続したい場合は、optional = true を指定します。例:

fileInput { source = FileSource.FileArtifact( "{{ run:file-artifacts.default-repository }}", "myfiles/build.zip", // don't fail job if 'build.zip' is not found optional = true ) localPath = "build/build.zip" }

ビルドアーティファクトの表示とダウンロード

ジョブ実行のビルドアーティファクトを表示およびダウンロードするには

  1. 目的のプロジェクトを開きます

  2. サイドバーメニューで、ジョブを選択します。

  3. 希望のジョブを開きます。

  4. 特定のジョブの実行試行を開きます。

  5. アーティファクトタブを開きます。

  6. 必要なファイルの横にある「 Download ダウンロード」をクリックします。

プロジェクト内のすべてのビルドアーティファクトを表示するには

  1. 目的のプロジェクトを開きます

  2. サイドバーメニューで、パッケージを選択します。

  3. ファイルアーティファクトを含むファイルリポジトリを開きます。デフォルトのファイルリポジトリの場合、default-automation-files になります。

    Default file repo

関連ページ:

パラメーターとシークレット

パラメーターは、ユーザーによって定義されるか、Automation によって提供される名前と値のペアです。パラメーターの主な目的は、さまざまなデータをジョブに渡すことです。例: これは、Docker イメージ名、URL、コマンドライン引数などです。あるいは、アクセストークンやパスワードである場合もあります。このような機密パラメーターはシークレットと呼ばれます。ジョブでパラメーターを使用する:ジョブのパラメーターを取得するには、その名前を二重波括弧: 内の文字列で指定します。これは、、を除く、DS...

パッケージリポジトリの管理

システム管理者ロールを持つユーザーは、管理 | パッケージリポジトリページを使用してリポジトリのグローバル管理を実行できます。このページで利用できるリポジトリのリストは、ユーザーアカウントの権限によって異なります。管理 | パッケージリポジトリページで: アクティブには、プロジェクトにアタッチされているリポジトリのリストが表示されます。プロジェクト内にリポジトリを作成すると、そのリポジトリはこのプロジェクトにアタッチされます。接続されたリポジトリは、別名によって区別できます。リポジトリを複数のプロ...

プロジェクトに参加する

あるプロジェクトに貢献を開始したい場合は、そのプロジェクトに参加する必要があります。つまり、そのプロジェクトのメンバーになる必要があります。貢献しようとしているプロジェクトに移動します。すでにメンバーである場合は、プロジェクトのページのプロジェクトメンバーにリストされます。そうでない場合は、プロジェクト管理者に連絡してメンバーシップを依頼してください。プロジェクト管理者を確認するには、プロジェクトページでメンバーウィジェットをクリックします。プロジェクトを探す:すべてのプロジェクトは名前で見つ