Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release-22.2: ci: separate location for customized builds #114800

Merged
merged 1 commit into from
Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,26 @@ build_name=$(git describe --tags --dirty --match=v[0-9]* 2> /dev/null || git rev

# On no match, `grep -Eo` returns 1. `|| echo""` makes the script not error.
release_branch="$(echo "$build_name" | grep -Eo "^v[0-9]+\.[0-9]+" || echo"")"
is_custom_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^custombuild-" || echo "")"
is_customized_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^custombuild-" || echo "")"
is_release_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^(release-[0-9][0-9]\.[0-9](\.0)?)$|master$" || echo "")"

if [[ -z "${DRY_RUN}" ]] ; then
gcs_bucket="cockroach-builds-artifacts-prod"
google_credentials=$GOOGLE_COCKROACH_CLOUD_IMAGES_COCKROACHDB_CREDENTIALS
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb/cockroach"
# Used for docker login for gcloud
gcr_hostname="us-docker.pkg.dev"
# export the variable to avoid shell escaping
export gcs_credentials="$GCS_CREDENTIALS_PROD"
if [[ -z "${is_release_build}" ]] ; then
# export the variable to avoid shell escaping
export gcs_credentials="$GOOGLE_CREDENTIALS_CUSTOMIZED"
google_credentials=$GOOGLE_CREDENTIALS_CUSTOMIZED
gcs_bucket="cockroach-customized-builds-artifacts-prod"
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb-customized/cockroach-customized"
gcr_hostname="us-docker.pkg.dev"
else
gcs_bucket="cockroach-builds-artifacts-prod"
google_credentials=$GOOGLE_COCKROACH_CLOUD_IMAGES_COCKROACHDB_CREDENTIALS
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb/cockroach"
# Used for docker login for gcloud
gcr_hostname="us-docker.pkg.dev"
# export the variable to avoid shell escaping
export gcs_credentials="$GCS_CREDENTIALS_PROD"
fi
else
gcs_bucket="cockroach-builds-artifacts-dryrun"
google_credentials="$GOOGLE_COCKROACH_RELEASE_CREDENTIALS"
Expand All @@ -31,15 +41,15 @@ else
# export the variable to avoid shell escaping
export gcs_credentials="$GCS_CREDENTIALS_DEV"
fi
download_prefix="https://storage.googleapis.com/$gcs_bucket"

cat << EOF

build_name: $build_name
release_branch: $release_branch
is_custom_build: $is_custom_build
gcs_bucket: $gcs_bucket
gcr_repository: $gcr_repository
build_name: $build_name
release_branch: $release_branch
is_customized_build: $is_customized_build
gcs_bucket: $gcs_bucket
gcr_repository: $gcr_repository
is_release_build: $is_release_build

EOF
tc_end_block "Variable Setup"
Expand All @@ -64,7 +74,6 @@ EOF
tc_end_block "Compile and publish artifacts"

tc_start_block "Make and push multiarch docker images"
configure_docker_creds
docker_login_with_google

gcr_tag="${gcr_repository}:${build_name}"
Expand Down Expand Up @@ -125,5 +134,13 @@ cat << EOF

Build ID: ${build_name}

The binaries are available at:
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.linux-amd64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.linux-arm64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.darwin-10.9-amd64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.windows-6.2-amd64.zip

Pull the docker image by:
docker pull $gcr_repository:$build_name

EOF
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,23 @@ build_name=$(git describe --tags --dirty --match=v[0-9]* 2> /dev/null || git rev

# On no match, `grep -Eo` returns 1. `|| echo""` makes the script not error.
release_branch="$(echo "$build_name" | grep -Eo "^v[0-9]+\.[0-9]+" || echo"")"
is_custom_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^custombuild-" || echo "")"
is_release_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^(release-[0-9][0-9]\.[0-9](\.0)?)$" || echo "")"
is_customized_build="$(echo "$TC_BUILD_BRANCH" | grep -Eo "^custombuild-" || echo "")"
github_ssh_key="${GITHUB_COCKROACH_TEAMCITY_PRIVATE_SSH_KEY}"

if [[ -z "${DRY_RUN}" ]] ; then
google_credentials=$GOOGLE_COCKROACH_CLOUD_IMAGES_COCKROACHDB_CREDENTIALS
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb/cockroach"
# Used for docker login for gcloud
gcr_hostname="us-docker.pkg.dev"
if [[ -z "${is_customized_build}" ]] ; then
google_credentials=$GOOGLE_COCKROACH_CLOUD_IMAGES_COCKROACHDB_CREDENTIALS
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb/cockroach"
# Used for docker login for gcloud
gcr_hostname="us-docker.pkg.dev"
gcs_bucket="cockroach-builds-artifacts-prod"
else
gcs_bucket="cockroach-customized-builds-artifacts-prod"
gcr_repository="us-docker.pkg.dev/cockroach-cloud-images/cockroachdb-customized/cockroach-customized"
fi
else
gcs_bucket="cockroach-builds-artifacts-dryrun"
google_credentials="$GOOGLE_COCKROACH_RELEASE_CREDENTIALS"
gcr_repository="us.gcr.io/cockroach-release/cockroach-test"
build_name="${build_name}.dryrun"
Expand All @@ -28,47 +37,59 @@ fi

cat << EOF

build_name: $build_name
release_branch: $release_branch
is_custom_build: $is_custom_build
gcr_repository: $gcr_repository
build_name: $build_name
release_branch: $release_branch
is_customized_build: $is_customized_build
gcr_repository: $gcr_repository

EOF
tc_end_block "Variable Setup"


tc_start_block "Tag the release"
git tag "${build_name}"
tc_end_block "Tag the release"

tc_start_block "Push release tag to github.com/cockroachlabs/release-staging"
github_ssh_key="${GITHUB_COCKROACH_TEAMCITY_PRIVATE_SSH_KEY}"
configure_git_ssh_key
git_wrapped push ssh://[email protected]/cockroachlabs/release-staging.git "${build_name}"
tc_end_block "Push release tag to github.com/cockroachlabs/release-staging"


tc_start_block "Tag docker image as latest-build"
# Only tag the image as "latest-vX.Y-build" if the tag is on a release branch
# (or master for the alphas for the next major release).
if [[ -n "${release_branch}" ]] ; then
log_into_gcloud
gcloud container images add-tag "${gcr_repository}:${build_name}" "${gcr_repository}:latest-${release_branch}-build"
fi
if [[ -z "${is_customized_build}" ]] ; then
tc_start_block "Tag the release"
git tag "${build_name}"
tc_end_block "Tag the release"

tc_start_block "Push release tag to github.com/cockroachlabs/release-staging"
git_wrapped push ssh://[email protected]/cockroachlabs/release-staging.git "${build_name}"
tc_end_block "Push release tag to github.com/cockroachlabs/release-staging"


tc_start_block "Tag docker image as latest-build"
# Only tag the image as "latest-vX.Y-build" if the tag is on a release branch
# (or master for the alphas for the next major release).
if [[ -n "${is_release_build}" ]] ; then
log_into_gcloud
gcloud container images add-tag "${gcr_repository}:${build_name}" "${gcr_repository}:latest-${release_branch}-build"
fi
if [[ "$TC_BUILD_BRANCH" == "master" ]]; then
log_into_gcloud
gcloud container images add-tag "${gcr_repository}:${build_name}" "${gcr_repository}:latest-master-build"
fi
tc_end_block "Tag docker image as latest-build"

fi

# Make finding the tag name easy.
cat << EOF


Build ID: ${build_name}

The binaries are available at:
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.linux-amd64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.linux-arm64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.darwin-10.9-amd64.tgz
https://storage.googleapis.com/$gcs_bucket/cockroach-$build_name.windows-6.2-amd64.zip

Pull the docker image by:
docker pull $gcr_repository:$build_name

EOF


if [[ -n "${is_custom_build}" ]] ; then
if [[ -n "${is_customized_build}" ]] ; then
tc_start_block "Delete custombuild tag"
git_wrapped push ssh://[email protected]/cockroachdb/cockroach.git --delete "${TC_BUILD_BRANCH}"
tc_end_block "Delete custombuild tag"
Expand Down
12 changes: 11 additions & 1 deletion scripts/tag-custom-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ git tag "$TAG" "$SHA"
git push [email protected]:cockroachdb/cockroach.git "$TAG"

TAG_URL="https://github.com/cockroachdb/cockroach/releases/tag/${TAG}"
TEAMCITY_URL="https://teamcity.cockroachdb.com/buildConfiguration/Internal_Release_Process_TestingMakeAndPublishBuildV221?mode=builds&branch=${TAG}"
TEAMCITY_URL="https://teamcity.cockroachdb.com/buildConfiguration/Internal_Cockroach_Release_Customized_MakeAndPublishCustomizedBuildArtifacts?mode=builds&branch=${TAG}"
if [ "$(command -v open)" ] ; then
open "$TEAMCITY_URL"
open "$TAG_URL"
Expand All @@ -75,4 +75,14 @@ Here is where the build run should show up in TeamCity for the tag:

Tag name: $TAG
Build ID: $ID

The binaries will be available at:
https://storage.googleapis.com/cockroach-customized-builds-artifacts-prod/cockroach-$ID.linux-amd64.tgz
https://storage.googleapis.com/cockroach-customized-builds-artifacts-prod/cockroach-$ID.linux-arm64.tgz
https://storage.googleapis.com/cockroach-customized-builds-artifacts-prod/cockroach-$ID.darwin-10.9-amd64.tgz
https://storage.googleapis.com/cockroach-customized-builds-artifacts-prod/cockroach-$ID.windows-6.2-amd64.zip

Pull the docker image by:
docker pull us-docker.pkg.dev/cockroach-cloud-images/cockroachdb-customized/cockroach-customized:$ID

EOF