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

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

    アーティファクト

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

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

    DevOps 変更要求属性:
    • DevOpsプロパティの [カテゴリ] または DevOps [DevOps 変更] フィールドで DevOps 変更要求を分類 チェックボックスがオンになっている。詳細については、「DevOps カテゴリを必須にしない変更要求 DevOps」を参照してください。
    • [コミット] および [作業アイテム] 関連リスト

    パッケージ

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

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

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

    アーティファクトの登録

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

    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 変更ワークスペース > 変更 > パイプライン変更要求 > すべて すべての変更関連情報を確認できます

    パイプライン変更要求

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

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

    移動先 DevOps 変更ワークスペース > リスト > アーティファクト すべてのアーティファクト関連情報。

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

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

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

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

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

    パッケージ登録要求は、次の理由で保留中です:

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

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

    create_package_association TASK_EXEC_POST_PROCESSING_PENDING パッケージ登録呼び出し中に、呼び出し元のタスク実行がシステムで見つかったが、まだ後処理されていない場合。つまり、このタスク実行の完了 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)。

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

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

    パッケージ登録要求は、次の理由で保留中です:

    ペイロードでアーティファクトバージョンを利用できず、タスク実行の詳細を使用して見つけることができません (name=TestArtifact、version=2.5、repositoryName=TestRepo、pipelineName=TestPipeline、stageName=Package、taskExecutionNumber=18) (TE00012345)。

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

    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)。

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

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

    パッケージ登録要求は、次の理由で保留中です:

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

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

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

    パッケージ登録要求は、次の理由で保留中です:

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

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

    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 がサポートされており、アーティファクトバージョンレコードが見つかり、呼び出しの発信元であるタスク実行がシステムで見つかっているがまだ後処理されていない場合。つまり、このタスク実行の完了 Webhook イベントはまだ処理されていません。 いいえ

    アーティファクト登録要求は、次の理由で保留中です:

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

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

    アーティファクト登録要求は、次の理由で保留中です:

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

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

    アーティファクト登録要求は、次の理由で保留中です:

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

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

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

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

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

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

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

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

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

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