Artifacts and packages
Artifacts and packages enable DevOps Change Velocity to track development and testing activities across a wide range of deployment and release models. This feature ensures that pipeline activity stored in the DevOps data model can be retrieved and applied when artifacts are created and released at different times or in different pipelines.
Artifacts
When an artifact version is registered, related activities like commits, tests, and code scans are tracked so that regardless of when the artifact version is deployed, those details can be retrieved. It can be in the current pipeline execution, a later execution of the same pipeline, a pipeline that is triggered by the current one, or a separate pipeline that is triggered independently.
When you associate commits with an artifact version (CI pipeline), and define an artifact package (CD pipeline), all artifact versions generated since the last time the app was deployed to production are included in the list of commits for the change. Consolidation of these items is helpful, especially when there are multiple CI builds before the deployment.
- Category DevOps or the Categorize DevOps change requests on "DevOps Change" field check box is selected in DevOps properties. For more information, see DevOps change request without mandating category as DevOps.
- Commits and Work Items related lists
Packages
- Retrieval of activities for all artifact versions declared in the package. For example, for use in an automated change approval policy.
- Recording when a specified artifact version was successfully released, ensuring that information tied to them is no longer considered. For example, for later change requests.
Artifact setup
- Create an artifact tool record in DevOps.Note:An artifact tool isn’t necessary unless a webhook or user-created integration subflow configuration is required to look up artifact versions.
- Register artifacts in the CI pipeline.
- Create a package in the CD pipeline.Note:The package creation step must be before the Prod Deploy step.
Artifact registration
Configure artifact registration in a scripted pipeline or freestyle job using the DevOps API /artifact/registration endpoint. Multiple artifact versions are supported.
Scripted and declarative pipeline (snDevOpsArtifact Jenkinsfile command)
For example:snDevOpsArtifact(artifactsPayload: """{"artifacts": [{"name": "sa-web.jar", "version": "1.9","semanticVersion": "1.9.0","repositoryName": "services-1031"}], "branchName": "master"}""")Freestyle job (Register Artifact build step)
For example:{"artifacts":[{"name":"sentiment-analysis-web2","version":"1.9","semanticVersion":"1.9.0","repositoryName":"maven-releases"}]}
Artifact package creation
Freestyle job (Create Package build step)
For example:
{"artifacts":[{"name":"sentiment-analysis-web2","version":"1.9","repositoryName":"maven-releases"}]}Declarative and scripted pipeline (snDevOpsPackage Jenkinsfile command)
Package with more than one artifact (from different repos) in the payload, for example: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"}""")
Jenkins plugin step includeBuildInfo can be used to include build details in the API call.
Artifact workflow and objects
The orchestration tool job publishes the new artifact (consisting of versions) to the artifact repository. Each artifact version is associated with a task execution (consisting of the related code commits). A package is created for the release (consisting of specific artifact versions flagged for deployment) and, after the deployment stage completes, the package is marked as deployed to production.
These objects are part of the artifact structure.
Artifact tool
Used to support artifact repository managers such as JFrog Artifactory.
Note:An artifact tool isn’t necessary unless a webhook or user-created integration subflow configuration is required to look up artifact versions.Artifact repository
Target for artifacts generated in a build, and also a source of artifacts required by a build. Can be created manually, or through the RegisterArtifact API as new artifacts are published under new repositories in a tool.
Artifact
Artifact name for which different builds (artifact versions) are generated. Can be created manually, or through the RegisterArtifact API. Artifacts (versions) are associated with a task execution and published to an artifact repository.
Artifact version
Specific version of the artifact. Deployable component of an application generated by a CI build. When provided, semantic version is used.
Can be created through discovery, or through the RegisterArtifact API. Artifacts (versions) are associated with a task execution and published to a tracked artifact repository.
Semantic version
Optional attribute of an artifact version that, when provided, is used to determine commits for a change. Semantic version format is (MAJOR.MINOR.PATCH).
Package
Collection of artifact versions used as input to a CD pipeline, or for associating test results.
Package creation is triggered by the CreatePackage API call from the orchestration tool and contains the name, version, and repository name of all the artifact versions included in the package. A check box indicates whether the package has been deployed to production.
You can also see all existing pipeline change requests directly from the Changes module in the application navigator.
You can see all existing change control and pipeline change requests directly using the Changes module in the application navigator.
Navigate to for all change-related information.
Pipeline change requests
You can see all the existing artifacts and packages directly using the List module in the application navigator.
Navigate to for all artifact-related information.
Artifacts and packages monitoring
When artifacts and packages are registered from a source tool into ServiceNow, they are often staged in the sn_devops_artifact_staging table, while the remaining necessary data for creation and linkage of these objects is either received from inbound events, or fetched by DevOps flows.
Most of the times, these staging records are processed within a few seconds. But there may be cases where the necessary data is never received, so these records may be left idle. The Description field on the table below contains a summary of the details missing in such cases to help in easier monitoring.
| Staging type | Staging code | When can this occur | Final state? | Description |
|---|---|---|---|---|
| create_package_association | WAITING_FOR_OTHER_STAGED_REQUESTS | During a package registration call, when the task execution where the call originated from is found in the system and post processed, but not all artifact versions passed in the artifacts payload have been found in the system. | No | Your package registration request is pending for the following reason: Task execution found for association (TE00012345) and post processing flag is set to true, but not all artifact versions were found. Total artifact count: 2 |
| create_package_association | TASK_EXEC_POST_PROCESSING_PENDING | During a package registration call, when the task execution where the call originated from is found in the system but hasn’t yet been post processed. That is, the Completed webhook event for this task execution hasn’t yet been processed. | No | Your package registration request is pending for the following reason: Task execution found for association (TE00012345), but post processing complete flag is not set to true. Total artifact count: 2 |
| create_package_association | NO_TASK_EXECUTION_FOUND | During a package registration call, when the task execution where the call originated from isn’t yet found in the system. | No | Your package registration request is pending for the following reason: Task execution not found for association (pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). Total artifact count: 2 |
| create_package | VERSION_NOT_FOUND | During a package registration call, when the artifact version passed in the artifacts payload hasn’t yet been found in the system. | No | Your package registration request is pending for the following reason: Artifact version not found (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). Artifact count: 1 out of 2 |
| create_package | VERSION_NOT_FOUND | During a package registration call, when the artifact version isn’t passed in the artifacts payload, but it contains either a taskExecutionSysId or (pipelineName, stageName, taskExecutionNumber) that can be used to lookup the task execution record, which in this case is found and post processed, but doesn’t have any artifact version record associated. | No | Your package registration request is pending for the following reason: Artifact version not available in payload and not found using task execution details (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18) (TE00012345). Artifact count: 1 out of 2 |
| create_package | TASK_EXEC_POST_PROCESSING_PENDING | During a package registration call, when the artifact version isn’t passed in the artifacts payload, but it contains either a taskExecutionSysId or (pipelineName, stageName, taskExecutionNumber) that can be used to lookup the task execution record, which in this case is found but not yet post processed. | No | Your package registration request is pending for the following reason: Artifact version not available in payload, and task execution found for association but post processing complete flag is not set to true (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18) (TE00012345). Artifact count: 1 out of 2 |
| create_package | NO_TASK_EXECUTION_FOUND | During a package registration call, when the artifact version isn’t passed in the artifacts payload, but it contains either a taskExecutionSysId or (pipelineName, stageName, taskExecutionNumber) that can be used to lookup the task execution record, which in this case isn’t found. | No | Your package registration request is pending for the following reason: Artifact version not available in payload, and task execution also not found for association (name=TestArtifact, version=2.5, repositoryName=TestRepo, pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). Artifact count: 1 out of 2 |
| create_package | WAITING_FOR_OTHER_STAGED_REQUESTS | During a package registration call, when the artifact version passed in the artifacts payload has been found in the system, but must wait for the other related staging records to be processed (including both create_package or create_package_association records). | No | Your package registration request is pending for the following reason: Artifact version found, but need to wait for the remaining package registration staging records. Artifact count: 1 out of 2 |
| register_artifact | TASK_EXEC_POST_PROCESSING_PENDING | During an artifact registration call, when the task execution where the call originated from is found in the system but hasn’t been post processed yet. That is the 'Completed' webhook event for this task execution hasn’t yet been processed. | No | Your artifact registration request is pending for the following reason: Artifact version created and task execution found for association for association (TE00012345), but post processing complete flag is not set to true. |
| register_artifact | NO_TASK_EXECUTION_FOUND | During an artifact registration call, when the task execution where the call originated from isn’t yet found in the system. | No | Your artifact registration request is pending for the following reason: Artifact version created, but task execution not found for association (pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). |
| register_artifact | VERSION_ALREADY_REGISTERED | During an artifact registration call, when the artifact version provided in the artifacts payload for a given artifact and repository, already exists in the system. | Yes (Ignored) | Your artifact registration request was ignored for the following reason: Artifact version has already been registered. |
| register_artifact | NO_SUBFLOW_CONFIGURED | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, and both webhook and look-up subflow aren't to find the artifact version record. | Yes (Ignored) | Your artifact registration request was ignored for the following reason: Artifact version not available in payload. Webhook and look-up subflow are not available. |
| register_artifact | NO_TASK_EXECUTION_FOUND | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, but webhook is supported and the artifact version record can be found, but the task execution where the call originated from isn’t yet found in the system. | No | Your artifact registration request is pending for the following reason: Artifact version found via webhook, but task execution not found for association (pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). |
| register_artifact | TASK_EXEC_POST_PROCESSING_PENDING | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, but webhook is supported and the artifact version record can be found, and the task execution where the call originated from is found in the system but hasn’t been post processed yet. That is, the Completed webhook event for this task execution hasn’t yet been processed. | No | Your artifact registration request is pending for the following reason: Artifact version found via webhook and task execution found for association (TE00012345), but post processing complete flag is not set to true. |
| register_artifact | NO_TASK_EXECUTION_FOUND | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, but look-up subflow is supported and the artifact version record can be found, but the task execution where the call originated from isn’t yet found in the system. | No | Your artifact registration request is pending for the following reason: Artifact version found via lookup, but task execution not found for association (pipelineName=TestPipeline, stageName=Package, taskExecutionNumber=18). |
| register_artifact | TASK_EXEC_POST_PROCESSING_PENDING | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, but look-up subflow is supported and the artifact version record can be found, and the task execution where the call originated from is found in the system but hasn’t been post processed yet. That is, the Completed webhook event for this task execution hasn’t yet been processed. | No | Your artifact registration request is pending for the following reason: Artifact version found via lookup and task execution found for association (TE00012345), but post processing complete flag is not set to true. |
| register_artifact | ERROR_CALLING_SUBFLOW | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, and look-up subflow is supported but the artifact version couldn't be found. | Yes (Ignored) | Your artifact registration request was ignored for the following reason: Artifact version not found by the look-up subflow. |
| register_artifact | ERROR_CALLING_SUBFLOW | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, and look-up subflow is supported but could not find the artifact version due to an error in the subflow. | Yes (Ignored) | Your artifact registration request was ignored for the following reason: Artifact version not found by the look-up subflow due to an error (refer to DevOps logs for additional details). |
| register_artifact | ERROR_CALLING_SUBFLOW | During an artifact registration call, when the artifact version isn’t provided in the artifacts payload, and look-up subflow is supported but wasn’t executed because the parent artifact record could not be found in the system. | Yes (Ignored) | Your artifact registration request was ignored for the following reason: Artifact not found. |