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.
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" }
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" }
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.