arazzo: 1.0.1 info: title: Artifactory Promote Artifact Across Repositories summary: Copy an artifact from a staging repository to a release repository and verify it. description: >- A repository-to-repository promotion flow for JFrog Artifactory. The workflow copies an artifact from a source (staging) repository to a target (release) repository, then reads back the storage info at the destination to confirm the promotion succeeded. Every step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: artifactoryRestApi url: ../openapi/artifactory-rest-api-openapi.yml type: openapi workflows: - workflowId: promote-artifact-across-repositories summary: Copy an artifact between repositories and verify it at the destination. description: >- Copies an artifact from a source repository and path to a destination repository path, then verifies the copied artifact via its storage info. inputs: type: object required: - accessToken - srcRepoKey - srcItemPath - destRepoKey - destItemPath properties: accessToken: type: string description: Bearer access token for authenticating with Artifactory. srcRepoKey: type: string description: Source repository key to copy the artifact from. srcItemPath: type: string description: Source artifact path within the source repository. destRepoKey: type: string description: Destination repository key to copy the artifact to. destItemPath: type: string description: Destination artifact path within the destination repository. steps: - stepId: copyArtifact description: >- Copy the artifact from the source location to the destination repository path, leaving the original in place. operationId: copyArtifact parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: srcRepoKey in: path value: $inputs.srcRepoKey - name: srcItemPath in: path value: $inputs.srcItemPath - name: to in: query value: "/$inputs.destRepoKey/$inputs.destItemPath" - name: dry in: query value: 0 successCriteria: - condition: $statusCode == 200 outputs: messages: $response.body#/messages - stepId: verifyDestination description: >- Read the storage info at the destination path to confirm the artifact was copied successfully. operationId: getStorageInfo parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: repoKey in: path value: $inputs.destRepoKey - name: itemPath in: path value: $inputs.destItemPath successCriteria: - condition: $statusCode == 200 outputs: downloadUri: $response.body#/downloadUri size: $response.body#/size sha256: $response.body#/checksums/sha256 outputs: copyMessages: $steps.copyArtifact.outputs.messages downloadUri: $steps.verifyDestination.outputs.downloadUri