From 4441a146f776059b8fc2aa823c9ce0668a6ab145 Mon Sep 17 00:00:00 2001 From: Nicholas openSUSE Software Engineer Date: Mon, 15 Jul 2024 18:26:25 -0300 Subject: [PATCH] [dev-v2.9] Update build scripts (#4222) --- Makefile | 5 ++- README.md | 16 +++++----- configuration.yaml | 2 +- scripts/pull-scripts | 31 +++++++++++++------ .../release-validation/pr-review-template.md | 2 +- scripts/version | 2 +- 6 files changed, 36 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index ac00299b4..70b0d8958 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +help: + ./bin/charts-build-scripts --help + pull-scripts: ./scripts/pull-scripts @@ -14,7 +17,7 @@ validate: @./scripts/pull-scripts @./bin/charts-build-scripts validate $(if $(filter true,$(remote)),--remote) $(if $(filter true,$(local)),--local) -TARGETS := prepare patch clean clean-cache charts list index unzip zip standardize template regsync check-images check-rc enforce-lifecycle lifecycle-status +TARGETS := prepare patch clean clean-cache charts list index unzip zip standardize template regsync check-images check-rc enforce-lifecycle lifecycle-status auto-forward-port $(TARGETS): @./scripts/pull-scripts diff --git a/README.md b/README.md index 15c8e1a87..e7620128d 100644 --- a/README.md +++ b/README.md @@ -26,20 +26,20 @@ This repository contains Helm charts served by Rancher Apps & Marketplace. ### New Out Of Band Release Process Starting on `17/May/2024`. -This is only valid for `prod-v2.*` branches. +This is only valid for `release-v2.*` branches. Since this implementation, all teams may release each chart when they want. ##### Overview of the process: 1. Assuming you have a chart ready and merged on `dev-v2.*` branch. -2. On your local machine: `fetch`, `pull` and `checkout` to `prod-v2.*` -3. Create a new branch from `prod-v2.*` +2. On your local machine: `fetch`, `pull` and `checkout` to `release-v2.*` +3. Create a new branch from `release-v2.*` 4. Execute `make forward-port` 5. Clear your `release.yaml` file, leave only your chart that will be released 6. Add, Commit and push your changes to your forked repository **Attention**: If you have a CRD that must be released with the chart, you should repeat `Step 4.` until `Step 6.` for the CRD chart. -7. Create a Pull Request from your forked repository to `rancher/charts` pointing to `prod-v2.*` +7. Create a Pull Request from your forked repository to `rancher/charts` pointing to `release-v2.*` ##### How to use `forward-port`: @@ -63,7 +63,7 @@ Script Arguments Reference: make forward-port CHART=rancher-istio VERSION=103.3.0+up1.21.1 BRANCH=dev-v2.8 UPSTREAM=upstream ``` -In this case, we are at branch `prod-v2.8`, we have a new version of Istio at `dev-v2.8`. +In this case, we are at branch `release-v2.8`, we have a new version of Istio at `dev-v2.8`. The script will get all necessary changes for `assets`, `charts`, `release.yaml` and `index.yaml` and handle them all automatically. @@ -87,9 +87,9 @@ We will keep only the relevant assets in the corresponding branch. This means a cycle of always 3 active branches, with each branch always holding up to 2 previous versions before it. In a nutshell: -- prod-v2.7 hold chart versions for Rancher: (2.5; 2.6; 2.7) -- prod-v2.8 hold chart versions for Rancher: (2.6; 2.7; 2.8) -- prod-v2.9 hold chart versions for Rancher: (2.7; 2.8; 2.9) +- release-v2.7 hold chart versions for Rancher: (2.5; 2.6; 2.7) +- release-v2.8 hold chart versions for Rancher: (2.6; 2.7; 2.8) +- release-v2.9 hold chart versions for Rancher: (2.7; 2.8; 2.9) ![Assets Lifecycle](./docs/assets_lifecycle.png) diff --git a/configuration.yaml b/configuration.yaml index 9a851976c..00af90f34 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -3,4 +3,4 @@ helmRepo: validate: url: https://github.com/rancher/charts.git - branch: prod-v2.9 + branch: release-v2.9 diff --git a/scripts/pull-scripts b/scripts/pull-scripts index 015280d3f..5f3047605 100755 --- a/scripts/pull-scripts +++ b/scripts/pull-scripts @@ -1,12 +1,15 @@ #!/bin/bash -set -e +set -e # Exit immediately if a command exits with a non-zero status. -cd $(dirname $0) - -source ./version +cd $(dirname $0) # Move to the directory of the script +source ./version # Source the version file to set environment variables +# Check if the charts-build-scripts binary exists in the ../bin directory if ls ../bin/charts-build-scripts 1>/dev/null 2>/dev/null; then - CURRENT_SCRIPT_VERSION=$(../bin/charts-build-scripts --version | cut -d' ' -f3) + # Use awk to split the version output correctly and extract the version number + CURRENT_SCRIPT_VERSION="v$(../bin/charts-build-scripts --version | awk '{print $3}')" + echo "Current version: ${CURRENT_SCRIPT_VERSION}, Expected version: ${CHARTS_BUILD_SCRIPT_VERSION}" + # Exit if the current version matches the expected version if [[ "${CURRENT_SCRIPT_VERSION}" == "${CHARTS_BUILD_SCRIPT_VERSION}" ]]; then exit 0 fi @@ -14,29 +17,37 @@ fi echo "Downloading charts-build-scripts version ${CHARTS_BUILD_SCRIPTS_REPO}@${CHARTS_BUILD_SCRIPT_VERSION}" +# Remove existing ../bin directory and change to the parent dir. rm -rf ../bin cd .. -mkdir -p bin +mkdir -p bin # Re-create bin dir + +# Extract the OS and architecture from the go version command output OS=$(go version | cut -d' ' -f4 | cut -d'/' -f1) ARCH=$(go version | cut -d' ' -f4 | cut -d'/' -f2) +# Determine the binary name based on the OS and architecture if [[ "$OS" == "windows" ]]; then BINARY_NAME="charts-build-scripts_${OS}_${ARCH}.exe" else BINARY_NAME="charts-build-scripts_${OS}_${ARCH}" fi + +# Download the binary from the charts-build-scripts repository curl -s -L ${CHARTS_BUILD_SCRIPTS_REPO%.git}/releases/download/${CHARTS_BUILD_SCRIPT_VERSION}/${BINARY_NAME} --output bin/charts-build-scripts -# Fall back to binary name format from old release scheme -if ! [[ -f bin/charts-build-scripts ]] || [[ $(cat bin/charts-build-scripts) == "Not Found" ]]; then +# If the binary is not found or contains "Not Found", Fall back to binary name format from old release scheme +if ! [[ -f bin/charts-build-scripts ]] || [[ $(cat bin/charts-build-scripts) == "Not Found" ]]; then echo "Falling back to old binary name format..." - rm bin/charts-build-scripts; + rm bin/charts-build-scripts; # Remove the not found old binary + # Determine the fallback binary name. if [[ ${OS} == "linux" ]]; then BINARY_NAME=charts-build-scripts else BINARY_NAME=charts-build-scripts-${OS} fi + # Attempt to download the binary using the fallback name. curl -s -L ${CHARTS_BUILD_SCRIPTS_REPO%.git}/releases/download/${CHARTS_BUILD_SCRIPT_VERSION}/${BINARY_NAME} --output bin/charts-build-scripts fi @@ -50,4 +61,4 @@ fi echo "${BINARY_NAME} => ./bin/charts-build-scripts" chmod +x ./bin/charts-build-scripts -./bin/charts-build-scripts --version +./bin/charts-build-scripts --version \ No newline at end of file diff --git a/scripts/release-validation/pr-review-template.md b/scripts/release-validation/pr-review-template.md index d8587681f..8586fbeae 100644 --- a/scripts/release-validation/pr-review-template.md +++ b/scripts/release-validation/pr-review-template.md @@ -1,4 +1,4 @@ -## Charts Checklist (built for v0.8.x charts-build-scripts) +## Charts Checklist (built for v0.9.x charts-build-scripts) ### Checkpoint 0: Validate `release.yaml` diff --git a/scripts/version b/scripts/version index f2104abdd..dacd8cd51 100755 --- a/scripts/version +++ b/scripts/version @@ -2,4 +2,4 @@ set -e CHARTS_BUILD_SCRIPTS_REPO=https://github.com/rancher/charts-build-scripts.git -CHARTS_BUILD_SCRIPT_VERSION="${CHARTS_BUILD_SCRIPT_VERSION:-v0.9.2}" +CHARTS_BUILD_SCRIPT_VERSION="${CHARTS_BUILD_SCRIPT_VERSION:-v0.9.5}"