アーティファクトとパッケージ

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:20分
  • アーティファクトとパッケージを使用すると、 DevOps チェンジベロシティ 幅広い展開モデルとリリースモデルにわたって開発およびテストアクティビティを追跡できます。この機能により、異なる時間または異なるパイプラインでアーティファクトが作成およびリリースされたときに、 DevOps データモデルに格納されているパイプラインアクティビティを取得して適用できます。

    アーティファクト

    アーティファクトバージョンが登録されると、コミット、テスト、コードスキャンなどの関連アクティビティが追跡されるため、アーティファクトバージョンがいつデプロイされたかに関係なく、それらの詳細を取得できます。これは、現在のパイプライン実行、同じパイプラインの後続の実行、現在のパイプラインによってトリガーされるパイプライン、または個別にトリガーされる別のパイプラインにすることができます。

    コミットをアーティファクトバージョン (CI パイプライン) に関連付け、アーティファクトパッケージ (CD パイプライン) を定義すると、最後にアプリが本番環境に展開されて以降に生成されたすべてのアーティファクトバージョンが、変更のコミットのリストに含まれる。これらのアイテムを統合すると、特に展開前に複数の CI ビルドがある場合に役立ちます。

    DevOps 変更要求属性:

    パッケージ

    パッケージは、1 つ以上のアーティファクトバージョンが展開パイプラインで使用されているタイミングを追跡します。これには、次の 2 つの重要な利点があります。
    1. パッケージで宣言されているすべてのアーティファクトバージョンのアクティビティの取得。たとえば、自動変更承認ポリシーで使用する場合などです。
    2. 指定されたアーティファクトバージョンが正常にリリースされたときを記録し、それらに関連付けられた情報が考慮されないようにします。たとえば、後からの変更要求の場合などです。

    アーティファクトのセットアップ

    1. DevOps でアーティファクトツールレコードを作成します
      注:
      アーティファクトバージョンを検索するために Webhook またはユーザーが作成した統合サブフロー構成が必要でない限り、アーティファクトツールは必要ありません。
    2. CI パイプラインにアーティファクトを登録します。
    3. CD パイプラインにパッケージを作成します。
      注:
      パッケージ作成ステップは、本番展開ステップの前に行う必要があります。

    アーティファクト登録

    DevOps API /アーティファクト/登録エンドポイントを使用して、スクリプト化されたパイプラインまたはフリースタイルジョブでアーティファクト登録を構成します。複数のアーティファクトバージョンがサポートされています。

    Jenkinsパイプラインの場合:
    • スクリプト化された宣言型パイプライン (snDevOpsArtifact Jenkinsfile コマンド)

      例:
      snDevOpsArtifact(artifactsPayload: """{"artifacts": [{"name": "sa-web.jar", "version": "1.9","semanticVersion": "1.9.0","repositoryName": "services-1031"}], "branchName": "master"}""")
    • フリースタイルジョブ (アーティファクトの登録 ビルドステップ)

      例:
      {"artifacts":[{"name":"sentiment-analysis-web2","version":"1.9","semanticVersion":"1.9.0","repositoryName":"maven-releases"}]}

    アーティファクトパッケージの作成

    重要:
    パッケージが変更要求のパイプライン実行にリンクされるように、パイプラインの変更ステップの前にパッケージ作成ステップを追加する必要があり、パッケージ作成は変更ステップの前のステージに追加する必要があります。
    DevOps API /package/registration エンドポイントを使用して、スクリプト化されたパイプラインまたはフリースタイルジョブでアーティファクトパッケージの作成を構成します。
    注:
    パッケージ名を指定する必要があります。
    Jenkinsパイプラインの場合:
    • フリースタイルジョブ (パッケージビルドステップを作成 )

      例:

      {"artifacts":[{"name":"sentiment-analysis-web2","version":"1.9","repositoryName":"maven-releases"}]}
    • 宣言型パイプラインとスクリプト化済みパイプライン (snDevOpsPackage Jenkinsfile コマンド)

      ペイロードに (異なるリポジトリからの) 複数のアーティファクトを含むパッケージ。例:
      snDevOpsPackage(name: "sentimentpackage", artifactsPayload: """{"artifacts":[{"name": "sa-web.jar", "version": "1.9", "repositoryName": "services-1031"}, "{"name": "sa-db.jar", "version": "1.3.2", "repositoryName": "services-1032"}], "branchName": "master"}""")

      リリース向け DevOps 変更促進パッケージ

    注:
    ビルド中にアーティファクトバージョンを使用できない場合は、ビルドの詳細 (pipelineName または projectName、taskExecutionNumber、stageName、branchName) を使用して、タスク実行でアーティファクトバージョンが検索されます。

    Jenkins プラグインステップ includeBuildInfo を使用して、API 呼び出しにビルドの詳細を含めることができます。

    アーティファクトワークフローとオブジェクト

    オーケストレーションツールジョブでは、新しいアーティファクト (バージョン構成) をアーティファクトリポジトリに公開します。各アーティファクトのバージョンは、タスクの実行 (関連するコードコミット構成) に関連付けられます。リリース用のパッケージ (展開用にフラグが付けられた特定のアーティファクトバージョンで構成) が作成され、展開ステージが完了すると、パッケージは本番環境に展開済みとしてマークされます。

    これらのオブジェクトはアーティファクト構造の一部です。

    • アーティファクトツール

      JFrog Artifactory などのアーティファクトリポジトリマネージャーをサポートするために使用されます。

      注:
      アーティファクトバージョンを検索するために Webhook またはユーザーが作成した統合サブフロー構成が必要でない限り、アーティファクトツールは必要ありません。
    • アーティファクトリポジトリ

      ビルドで生成されたアーティファクトのターゲットであり、ビルドに必要なアーティファクトのソースでもあります。手動で作成することも、新しいアーティファクトがツールの新しいリポジトリで公開されるときに RegisterArtifact API を使用して作成することもできます。

    • アーティファクト

      さまざまなビルド (アーティファクトバージョン) が生成されるアーティファクト名。手動で作成することも、RegisterArtifact API を使用して作成することもできます。アーティファクト (バージョン) はタスク実行に関連付けられ、アーティファクトリポジトリに公開されます。

    • アーティファクトのバージョン

      アーティファクトの特定のバージョン。CI ビルドによって生成されたアプリケーションの展開可能なコンポーネント。指定すると、セマンティックバージョンが使用されます。

      ディスカバリーまたは RegisterArtifact API を使用して作成できます。アーティファクト (バージョン) はタスク実行に関連付けられ、追跡対象のアーティファクトリポジトリに公開されます。

    • セマンティックバージョン

      指定された場合、変更のコミットを決定するために使用されるアーティファクトバージョンのオプションの属性。セマンティックバージョンの形式は (MAJOR.マイナー。PATCH)。

    • パッケージ

      CD パイプラインへの入力として、またはテスト結果を関連付けるために使用されるアーティファクトバージョンのコレクション。

      パッケージの作成は、オーケストレーションツールからの CreatePackage API 呼び出しによってトリガーされ、パッケージには、取り込まれるすべてのアーティファクトバージョンの名前、バージョン、およびリポジトリ名が含まれます。チェックボックスは、パッケージが本番環境に展開されているかどうかを示します。

    DevOps リリースの変更の促進:
    図 : 1. DevOps 変更要求 - カテゴリ DevOps
    DevOps 変更要求。
    図 : 2. DevOps 変更要求 – コミットと作業アイテム
    DevOps 変更要求がコミットされます。
    図 : 3. DevOps アーティファクトバージョンリスト
    DevOps アーティファクトバージョンリスト。
    図 : 4. DevOps アーティファクトバージョン:コミット
    DevOps アーティファクトのコミット。
    図 : 5. DevOps アーティファクトバージョン:パッケージ
    DevOps アーティファクトパッケージ。
    図 : 6. DevOps パッケージ
    DevOps パッケージ。

    アプリケーションナビゲーター の [変更 ] モジュールから、既存のすべてのパイプライン変更要求を直接確認することもできます。

    図 : 7. 変更モジュール

    アプリケーションナビゲーター の [変更 ] モジュールを使用して、既存のすべての変更コントロールとパイプラインの変更要求を直接表示できます。

    次のように移動する。 DevOps 変更ワークスペース > 変更 > パイプライン変更要求 > All (すべて) すべての変更関連情報を確認します。

    パイプライン変更要求

    パイプライン変更要求。
    図 : 8. リストモジュール

    アプリケーションナビゲーター のリスト モジュールを使用して、既存のすべてのアーティファクトとパッケージを直接表示できます。

    次のように移動する。 DevOps 変更ワークスペース > Lists (リスト) > アーティファクト すべてのアーティファクト関連情報を確認します。

    アーティファクトとパッケージのリスト。

    アーティファクトとパッケージのモニタリング

    アーティファクトとパッケージがソースツールから ServiceNowに登録されると、多くの場合、それらは sn_devops_artifact_staging テーブルにステージングされますが、これらのオブジェクトの作成とリンクに必要な残りのデータは、受信イベントから受信するか、 DevOps フローによってフェッチされます。

    ほとんどの場合、これらのステージングレコードは数秒以内に処理されます。ただし、必要なデータが受信されない場合があるため、これらのレコードがアイドル状態のままになる場合があります。以下のテーブルの [説明 ] フィールドには、監視を容易にするために、このような場合に不足している詳細の概要が含まれています。

    注:
    リリースビルドには一意のアーティファクト名、つまり、異なるブランチビルドで実行されているビルドには異なるアーティファクト名を使用することをお勧めします。
    ステージングタイプ ステージングコード これはいつ発生するか 最終状況は? 説明
    create_package_association WAITING_FOR_OTHER_STAGED_REQUESTS パッケージ登録コール中に、コールの発生元のタスク実行がシステムで検出され、後処理されたが、アーティファクトペイロードで渡されたすべてのアーティファクトバージョンがシステムで見つかったわけではない場合。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    関連付けのタスク実行が見つかり (TE00012345)、後処理フラグが true に設定されていますが、すべてのアーティファクトバージョンが見つかったわけではありません。

    アーティファクトの合計数:2

    create_package_association TASK_EXEC_POST_PROCESSING_PENDING パッケージ登録の呼び出し中に、呼び出しの発生元のタスク実行がシステムで見つかったが、まだ後処理されていない場合。つまり、このタスク実行の Completed Webhook イベントはまだ処理されていません。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    関連付け (TE00012345) のタスク実行が見つかりましたが、後処理完了フラグが true に設定されていません。

    アーティファクトの合計数:2

    create_package_association NO_TASK_EXECUTION_FOUND パッケージ登録呼び出し中に、呼び出しの発信元のタスク実行がシステムでまだ見つからない場合。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    関連付けのタスク実行が見つかりません (pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18)。

    アーティファクトの合計数:2

    create_package VERSION_NOT_FOUND パッケージ登録呼び出し中に、アーティファクトで渡されたアーティファクトバージョンがシステムでペイロードがまだ見つかっていないとき。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    アーティファクトバージョンが見つかりません (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18)。

    アーティファクト数:2 分の 1

    create_package VERSION_NOT_FOUND パッケージ登録呼び出し中に、アーティファクトバージョンがアーティファクトペイロードで渡されないが、タスク実行レコードを検索するために使用できる taskExecutionSysId または (pipelineName, stageName, taskExecutionNumber) のいずれかが含まれている場合。この場合は検出され、後処理されますが、アーティファクトバージョンレコードが関連付けられていません。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    アーティファクトバージョンがペイロードになく、タスク実行の詳細 (name=TestArtifact、バージョン = 2.5、repositoryName=TestRepo、pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18) を使用しても見つかりません (TE00012345)。

    アーティファクト数:2 分の 1

    create_package TASK_EXEC_POST_PROCESSING_PENDING パッケージ登録呼び出し中に、アーティファクトバージョンがアーティファクトペイロードで渡されないが、タスク実行レコード (この場合は検出されていますが、まだ後処理されていない) を検索するために使用できる taskExecutionSysId または (pipelineName, stageName, taskExecutionNumber) が含まれている場合。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    アーティファクトバージョンがペイロードで利用できず、関連付けのタスク実行が見つかりましたが、後処理完了フラグが true に設定されていません (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18) (TE00012345)。

    アーティファクト数:2 分の 1

    create_package NO_TASK_EXECUTION_FOUND パッケージ登録呼び出し中に、アーティファクトバージョンがアーティファクトペイロードで渡されないが、タスク実行レコードの検索に使用できる taskExecutionSysId または (pipelineName, stageName, taskExecutionNumber) が含まれているが、この場合は見つかりません。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    アーティファクトバージョンがペイロードになく、関連付けのタスク実行も見つかりません (name=TestArtifact、version=2.5、repositoryName=TestRepo、pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18)。

    アーティファクト数:2 分の 1

    create_package WAITING_FOR_OTHER_STAGED_REQUESTS パッケージ登録の呼び出し中に、アーティファクトペイロードで渡されたアーティファクトバージョンがシステムで見つかったが、他の関連するステージングレコード (create_packageレコードとcreate_package_associationレコードの両方を含む) が処理されるのを待機する必要があります。 いいえ

    次の理由でパッケージ登録要求が保留されています:

    アーティファクトバージョンが見つかりましたが、残りのパッケージ登録ステージングレコードを待機する必要があります。

    アーティファクト数:2 分の 1

    register_artifact TASK_EXEC_POST_PROCESSING_PENDING アーティファクト登録コール中に、コールの発生元のタスク実行がシステム内で見つかったが、まだ後処理されていない場合。つまり、このタスク実行の「完了」 Webhook イベントはまだ処理されていません。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンが作成され、関連付けのタスク実行が見つかりました (TE00012345) が、後処理完了フラグが true に設定されています。

    register_artifact NO_TASK_EXECUTION_FOUND アーティファクト登録コール中に、コールの発生元のタスク実行がシステムでまだ見つからない場合。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンが作成されましたが、関連付けのタスク実行が見つかりません (pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18)。

    register_artifact VERSION_ALREADY_REGISTERED アーティファクト登録の呼び出し中に、指定されたアーティファクトとリポジトリのアーティファクトペイロードで指定されたアーティファクトバージョンが既にシステムに存在する場合。 はい (無視)

    アーティファクト登録要求は、次の理由で無視されました:

    アーティファクトバージョンは既に登録されています。

    register_artifact NO_SUBFLOW_CONFIGURED アーティファクト登録コール中に、アーティファクトペイロードでアーティファクトバージョンが提供されておらず、Webhook とルックアップサブフローの両方でアーティファクトバージョンレコードが見つからない場合。 はい (無視)

    アーティファクト登録要求は、次の理由で無視されました:

    ペイロードでアーティファクトバージョンを利用できません。Webhook とルックアップサブフローは利用できません。

    register_artifact NO_TASK_EXECUTION_FOUND アーティファクト登録コール中に、アーティファクトバージョンがアーティファクトペイロードに指定されていないが、Webhook がサポートされており、アーティファクトバージョンレコードを見つけることができるが、呼び出しの発生元のタスク実行がシステムでまだ見つからない場合。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンが Webhook で見つかりましたが、関連付けのタスク実行が見つかりません (pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18)。

    register_artifact TASK_EXEC_POST_PROCESSING_PENDING アーティファクト登録コール中に、アーティファクトペイロードにアーティファクトバージョンが指定されていないが、Webhook がサポートされており、アーティファクトバージョンレコードを見つけることができ、コールの発生元のタスク実行がシステム内で見つかったが、まだ後処理されていない場合。つまり、このタスク実行の Completed Webhook イベントはまだ処理されていません。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンが Webhook で見つかり、関連付けのタスク実行が見つかりました (TE00012345) が、後処理完了フラグが true に設定されています。

    register_artifact NO_TASK_EXECUTION_FOUND アーティファクト登録呼び出し中に、アーティファクトバージョンがアーティファクトペイロードで提供されていないが、ルックアップサブフローがサポートされており、アーティファクトバージョンレコードを見つけることができるが、呼び出しの発生元のタスク実行がシステムにまだ見つからない場合。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンがルックアップで見つかりましたが、関連付けのタスク実行が見つかりません (pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18)。

    register_artifact TASK_EXEC_POST_PROCESSING_PENDING アーティファクト登録コール中に、アーティファクトバージョンがアーティファクトペイロードで提供されていないが、ルックアップサブフローがサポートされており、アーティファクトバージョンレコードを見つけることができ、呼び出しの発生元のタスク実行がシステム内で見つかったが、まだ後処理されていない場合。つまり、このタスク実行の Completed Webhook イベントはまだ処理されていません。 いいえ

    アーティファクト登録要求は、次の理由で処理待ちになっています:

    アーティファクトバージョンがルックアップで見つかり、関連付けのタスク実行が見つかりました (TE00012345) が、後処理完了フラグが true に設定されていません。

    register_artifact ERROR_CALLING_SUBFLOW アーティファクト登録コール中に、アーティファクトバージョンがアーティファクトペイロードで提供されておらず、ルックアップサブフローがサポートされているがアーティファクトバージョンが見つからない場合。 はい (無視)

    アーティファクト登録要求は、次の理由で無視されました:

    アーティファクトバージョンがルックアップサブフローで見つかりませんでした。

    register_artifact ERROR_CALLING_SUBFLOW アーティファクト登録呼び出し中に、アーティファクトペイロードにアーティファクトバージョンが提供されておらず、ルックアップサブフローがサポートされているが、サブフローのエラーのためにアーティファクトバージョンが見つからなかった場合。 はい (無視)

    アーティファクト登録要求は、次の理由で無視されました:

    エラーのため、ルックアップサブフローでアーティファクトバージョンが見つかりませんでした (詳細については、DevOps ログを参照してください)。

    register_artifact ERROR_CALLING_SUBFLOW アーティファクト登録呼び出し中に、アーティファクトバージョンがアーティファクトペイロードで提供されておらず、ルックアップサブフローがサポートされているが、親アーティファクトレコードがシステムに見つからないために実行されなかった場合。 はい (無視)

    アーティファクト登録要求は、次の理由で無視されました:

    アーティファクトが見つかりませんでした。