ARTIFACTORY: How to create a release bundle v2 in a project from a release bundle of a different project

ARTIFACTORY: How to create a release bundle v2 in a project from a release bundle of a different project

AuthorFullName__c
Krishna Valluri
articleNumber
000006075
ft:sourceType
Salesforce
FirstPublishedDate
2024-04-21T08:59:07Z
lastModifiedDate
2024-08-11
VersionNumber
2

This article will help you to create a release bundle v2 in a project from the release bundle v2 of a different project.
For example, we can create a release bundle v2 in one project (Project B) by using an existing release bundle v2 from another project ( Project A).

1. Create 2 projects (let's say Project A and Project B) in Artifactory. In Project A create a repository 
    and publish a build to deploy artifacts into that repository.

User-added image

2. Then create a source release bundle in Project A using the build (from Step 1) via REST API call.

$  curl -uadmin -X POST 'http://localhost:8082/lifecycle/api/v2/release_bundle?project=<Project-A--key>&async=false' --header 'X-JFrog-Signing-Key-Name: <gcp-key-name>' --header 'Content-Type: application/json' --data '{
    "release_bundle_name": "<release-bundle-name>",
    "release_bundle_version": "<version>",
    "skip_docker_manifest_resolution": false,
    "source_type": "builds",
    "source": {
        "builds": [
            {
                "build_repository": "<build-info-repo-name>",
                "build_name": "<build-name>",
                "build_number": "<build-number>",
                "build_started": "<time-stamp>",
                "include_dependencies": false
            }
        ]
    }
}
'

Sample command and the output:
$ curl -uadmin -X POST 'http://localhost:8082/lifecycle/api/v2/release_bundle?project=test123&async=false' --header 'X-JFrog-Signing-Key-Name: krishna' --header 'Content-Type: application/json' --data '{
    "release_bundle_name": "Project-A-bundle",
    "release_bundle_version": "1",
    "skip_docker_manifest_resolution": false,
    "source_type": "builds",
    "source": {
        "builds": [
            {
                "build_repository": "test123-build-info",
                "build_name": "project-build-test",
                "build_number": "11",
                "build_started": "2024-04-19T01:25:59.276+0000",
                "include_dependencies": false
            }
        ]
    }
}
'

{
  "repository_key" : "test123-release-bundles-v2",
  "release_bundle_name" : "Project-A-bundle",
  "release_bundle_version" : "1",
  "created" : "2024-04-19T03:07:11.685Z"

}


User-added image

3. With the release bundle, create a new release bundle in Project B via REST API call.
$ curl -uadmin -X POST 'http://localhost:8082/lifecycle/api/v2/release_bundle?project=<project-b-key>&async=false' --header 'X-JFrog-Signing-Key-Name: <gcp-key-name>' --header 'Content-Type: application/json' --data '{
    "release_bundle_name": "<release-bundle-name>",
    "release_bundle_version": "<version>",
    "source_type": "release_bundles",
    "source": {
        "release_bundles": [
            {
                "project_key": "<Project-A-key>",
                "repository_key": "<relesebundle-repo-name-from-source-project>",
                "release_bundle_name": "<source-bundle-name>",
                "release_bundle_version": "<version>"
            }
        ]
    }
}
'

Sample command and the output:
curl -uadmin -X POST 'http://localhost:8082/lifecycle/api/v2/release_bundle?project=test456&async=false' --header 'X-JFrog-Signing-Key-Name: krishna' --header 'Content-Type: application/json' --data '{
    "release_bundle_name": "Project-b-bundle",
    "release_bundle_version": "1",
    "source_type": "release_bundles",
    "source": {
        "release_bundles": [
            {
                "project_key": "test123",
                "repository_key": "test123-release-bundles-v2",
                "release_bundle_name": "Project-A-bundle",
                "release_bundle_version": "1"
            }
        ]
    }
}
'
Enter host password for user 'admin':
{
  "repository_key" : "test456-release-bundles-v2",
  "release_bundle_name" : "Project-b-bundle",
  "release_bundle_version" : "1",
  "created" : "2024-04-19T04:07:50.062Z"
}

User-added image

To summarize, the approach will help to copy the artifacts from a source project to a target project even if the same repository does not exist.