SOURCE_PROJECT_ID=18
SOURCE_ACCESS_TOKEN="<access_token>"
GITLAB_API_BASE_URL="https://example.com/api/v4"
# Get the list of environments and variables from the source project
ENVIRONMENTS=$(curl --header "PRIVATE-TOKEN: $SOURCE_ACCESS_TOKEN" "$GITLAB_API_BASE_URL/projects/$SOURCE_PROJECT_ID/environments")
VARIABLES=$(curl --header "PRIVATE-TOKEN: $SOURCE_ACCESS_TOKEN" "$GITLAB_API_BASE_URL/projects/$SOURCE_PROJECT_ID/variables")
# Create the environments and variables in the target project
TARGET_PROJECT_ID=19
TARGET_ACCESS_TOKEN="<access_token>"
echo "$ENVIRONMENTS" | jq -c '.[]' | while read environment; do
name=$(echo "$environment" | jq -r '.name')
external_url=$(echo "$environment" | jq -r '.external_url')
curl --header "PRIVATE-TOKEN: $TARGET_ACCESS_TOKEN" --header "Content-Type: application/json" --data "{\"name\":\"$name\",\"external_url\":\"$external_url\"}" "$GITLAB_API_BASE_URL/projects/$TARGET_PROJECT_ID/environments"
done
echo "$VARIABLES" | jq -c '.[]' | while read variable; do
curl --header "PRIVATE-TOKEN: $TARGET_ACCESS_TOKEN" --header "Content-Type: application/json" --data "$variable" "$GITLAB_API_BASE_URL/projects/$TARGET_PROJECT_ID/variables"
done