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.