Skip to content

Commit 234ac8d

Browse files
committed
helm-chart release: Add $CI_DRY_RUN
1 parent ea7fc05 commit 234ac8d

File tree

1 file changed

+75
-44
lines changed

1 file changed

+75
-44
lines changed

misc/helm-charts/publish.sh

Lines changed: 75 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,39 @@ export GIT_AUTHOR_NAME=Materialize Bot
2121
2222
export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
2323
export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL
24+
export GIT_PAGER=cat
2425

2526
: "${CI_HELM_CHART_VERSION:=}"
2627
: "${CI_MZ_VERSION:=}"
2728
: "${CI_NO_TERRAFORM_BUMP:=0}"
29+
: "${CI_DRY_RUN:=0}"
2830
if [[ -z "$CI_HELM_CHART_VERSION" || -z "$CI_MZ_VERSION" ]]; then
2931
echo "\$CI_HELM_CHART_VERSION and \$CI_MZ_VERSION have to be set, use https://trigger-ci.dev.materialize.com to trigger this pipeline"
3032
exit 1
3133
fi
3234

35+
cat > ~/.netrc <<EOF
36+
machine github.com
37+
login materializebot
38+
password $GITHUB_TOKEN
39+
EOF
40+
chmod 600 ~/.netrc
41+
42+
run_if_not_dry() {
43+
if ! is_truthy "$CI_DRY_RUN"; then
44+
"$@"
45+
else
46+
echo "[DRY RUN] $*"
47+
fi
48+
}
49+
3350
echo "--- Publishing Helm Chart $CI_HELM_CHART_VERSION with Materialize $CI_MZ_VERSION"
3451
bin/helm-chart-version-bump --helm-chart-version "$CI_HELM_CHART_VERSION" "$CI_MZ_VERSION"
3552
git commit -a -m "Bumping helm-chart version to $CI_HELM_CHART_VERSION with Materialize $CI_MZ_VERSION"
3653
TAG="self-managed-$CI_HELM_CHART_VERSION"
3754
git tag "$TAG"
38-
git push "https://materializebot:$GITHUB_TOKEN@github.com/MaterializeInc/materialize.git" "$TAG"
55+
git diff HEAD~
56+
run_if_not_dry git push "https://github.com/MaterializeInc/materialize.git" "$TAG"
3957

4058
# Find directories containing Chart.yaml
4159
CHARTS=""
@@ -52,7 +70,7 @@ fi
5270
echo "Found valid charts: $CHARTS"
5371

5472
rm -rf gh-pages
55-
git clone --branch "$GITHUB_PAGES_BRANCH" --depth 1 https://"$GITHUB_TOKEN"@github.com/MaterializeInc/materialize.git gh-pages
73+
git clone --branch "$GITHUB_PAGES_BRANCH" --depth 1 https://github.com/MaterializeInc/materialize.git gh-pages
5674

5775
mkdir -p $RELEASE_DIR
5876
CHANGES_MADE=0
@@ -91,7 +109,8 @@ if [ $CHANGES_MADE -eq 1 ]; then
91109
git config user.email "[email protected]"
92110
git config user.name "Buildkite"
93111
git commit -m "helm-charts: publish updated charts"
94-
git push origin $GITHUB_PAGES_BRANCH
112+
git diff HEAD~
113+
run_if_not_dry git push origin $GITHUB_PAGES_BRANCH
95114
cd ..
96115
else
97116
echo "No new chart versions to publish"
@@ -100,39 +119,43 @@ fi
100119

101120
echo "--- Verifying that Helm Chart has been published"
102121
i=0
103-
HELM_CHART_PUBLISHED=false
104-
while (( i < 30 )); do
105-
YAML=$(curl -s "https://materializeinc.github.io/materialize/index.yaml")
106-
CURRENT_HELM_CHART_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][0].version')
107-
CURRENT_MZ_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][0].appVersion')
108-
if [[ "$CURRENT_HELM_CHART_VERSION" == "$CI_HELM_CHART_VERSION" && "$CURRENT_MZ_VERSION" == "$CI_MZ_VERSION" ]]; then
109-
echo "Helm Chart $CURRENT_HELM_CHART_VERSION with Materialize $CURRENT_MZ_VERSION has successfully been published"
110-
HELM_CHART_PUBLISHED=true
111-
break
112-
fi
113-
echo "Latest version seems to be Helm Chart $CURRENT_HELM_CHART_VERSION with Materialize $CURRENT_MZ_VERSION"
114-
sleep 10
115-
((i += 1))
116-
done
122+
if ! is_truthy "$CI_DRY_RUN"; then
123+
HELM_CHART_PUBLISHED=false
124+
while (( i < 30 )); do
125+
YAML=$(curl -s "https://materializeinc.github.io/materialize/index.yaml")
126+
CURRENT_HELM_CHART_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][0].version')
127+
CURRENT_MZ_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][0].appVersion')
128+
if [[ "$CURRENT_HELM_CHART_VERSION" == "$CI_HELM_CHART_VERSION" && "$CURRENT_MZ_VERSION" == "$CI_MZ_VERSION" ]]; then
129+
echo "Helm Chart $CURRENT_HELM_CHART_VERSION with Materialize $CURRENT_MZ_VERSION has successfully been published"
130+
HELM_CHART_PUBLISHED=true
131+
break
132+
fi
133+
echo "Latest version seems to be Helm Chart $CURRENT_HELM_CHART_VERSION with Materialize $CURRENT_MZ_VERSION"
134+
sleep 10
135+
((i += 1))
136+
done
117137

118-
if [ "$HELM_CHART_PUBLISHED" = false ]; then
119-
echo "Failing because Helm Chart was not successfully published"
120-
exit 1
121-
fi
138+
if [ "$HELM_CHART_PUBLISHED" = false ]; then
139+
echo "Failing because Helm Chart was not successfully published"
140+
exit 1
141+
fi
122142

123-
HIGHEST_HELM_CHART_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][].version' | grep -v beta | sort -V | tail -n 1)
143+
HIGHEST_HELM_CHART_VERSION=$(echo "$YAML" | yq '.entries["materialize-operator"][].version' | grep -v beta | sort -V | tail -n 1)
124144

125-
if [ "$HIGHEST_HELM_CHART_VERSION" != "$CI_HELM_CHART_VERSION" ]; then
126-
echo "--- Higher helm-chart version $HIGHEST_HELM_CHART_VERSION > $CI_HELM_CHART_VERSION has already been released, not bumping terraform versions"
127-
CI_NO_TERRAFORM_BUMP=1
145+
if [ "$HIGHEST_HELM_CHART_VERSION" != "$CI_HELM_CHART_VERSION" ]; then
146+
echo "--- Higher helm-chart version $HIGHEST_HELM_CHART_VERSION > $CI_HELM_CHART_VERSION has already been released, not bumping terraform versions"
147+
CI_NO_TERRAFORM_BUMP=1
148+
fi
149+
else
150+
echo "[DRY RUN] Nothing to verify"
128151
fi
129152

130153
if is_truthy "$CI_NO_TERRAFORM_BUMP"; then
131154
echo "--- Not bumping terraform versions"
132155
else
133156
echo "--- Bumping terraform-helm-materialize"
134157
rm -rf terraform-helm-materialize
135-
git clone https://"$GITHUB_TOKEN"@github.com/MaterializeInc/terraform-helm-materialize.git
158+
git clone https://github.com/MaterializeInc/terraform-helm-materialize.git
136159
cd terraform-helm-materialize
137160
sed -i "s/\".*\"\(.*\) # META: helm-chart version/\"$CI_HELM_CHART_VERSION\"\\1 # META: helm-chart version/" variables.tf
138161
sed -i "s/\".*\"\(.*\) # META: mz version/\"$CI_MZ_VERSION\"\\1 # META: mz version/" variables.tf
@@ -144,32 +167,36 @@ else
144167
# Bump the patch version by one (v0.1.12 -> v0.1.13)
145168
TERRAFORM_HELM_VERSION=$(git for-each-ref --sort=creatordate --format '%(refname:strip=2)' refs/tags | grep '^v' | tail -n1 | awk -F. -v OFS=. '{$NF += 1; print}')
146169
git tag "$TERRAFORM_HELM_VERSION"
147-
git push origin main "$TERRAFORM_HELM_VERSION"
170+
git diff HEAD~
171+
run_if_not_dry git push origin main "$TERRAFORM_HELM_VERSION"
148172
cd ..
149173

150174
declare -A TERRAFORM_VERSION
151175
for repo in terraform-aws-materialize terraform-azurerm-materialize terraform-google-materialize; do
152176
echo "--- Bumping $repo"
153177
rm -rf $repo
154-
git clone https://"$GITHUB_TOKEN"@github.com/MaterializeInc/$repo.git
178+
git clone https://github.com/MaterializeInc/$repo.git
155179
cd $repo
156180
sed -i "s|github.com/MaterializeInc/terraform-helm-materialize?ref=v[0-9.]*|github.com/MaterializeInc/terraform-helm-materialize?ref=$TERRAFORM_HELM_VERSION|" main.tf
157181
terraform-docs markdown table --output-file README.md --output-mode inject .
158182
# Initialize Terraform to update the lock file
159-
terraform init -upgrade
160-
# If lock file doesn't exist yet (unlikely but possible)
161-
if [ ! -f .terraform.lock.hcl ]; then
162-
echo "No lock file found. Creating it with terraform init."
163-
terraform init
183+
if ! is_truthy "$CI_DRY_RUN"; then
184+
terraform init -upgrade
185+
# If lock file doesn't exist yet (unlikely but possible)
186+
if [ ! -f .terraform.lock.hcl ]; then
187+
echo "No lock file found. Creating it with terraform init."
188+
terraform init
189+
fi
164190
fi
165191
git config user.email "[email protected]"
166192
git config user.name "Buildkite"
167193
git add main.tf README.md .terraform.lock.hcl
168194
git commit -m "Bump to terraform-helm-materialize $TERRAFORM_HELM_VERSION"
169195
# Bump the patch version by one (v0.1.12 -> v0.1.13)
170196
TERRAFORM_VERSION[$repo]=$(git for-each-ref --sort=creatordate --format '%(refname:strip=2)' refs/tags | grep '^v' | tail -n1 | awk -F. -v OFS=. '{$NF += 1; print}')
171-
git tag "$TERRAFORM_AWS_VERSION"
172-
git push origin main "$TERRAFORM_AWS_VERSION"
197+
git tag "${TERRAFORM_VERSION[$repo]}"
198+
git diff HEAD~
199+
run_if_not_dry git push origin main "${TERRAFORM_VERSION[$repo]}"
173200
cd ..
174201
done
175202
fi
@@ -179,30 +206,34 @@ ORCHESTRATORD_VERSION=$(yq -r '.operator.image.tag' misc/helm-charts/operator/va
179206
DOCS_BRANCH=self-managed-docs/$(echo "$CI_HELM_CHART_VERSION" | cut -d. -f1,2)
180207
git fetch origin "$DOCS_BRANCH"
181208
git checkout "origin/$DOCS_BRANCH"
209+
git submodule update --init --recursive
182210
git config user.email "[email protected]"
183211
git config user.name "Buildkite"
184212
VERSIONS_YAML_PATH=doc/user/data/self_managed/latest_versions.yml
185-
yq -Y -i ".operator_helm_chart_version = \"$CI_HELM_CHART_VERSION\"" $VERSIONS_YAML_PATH
186-
yq -Y -i ".environmentd_version = \"$CI_MZ_VERSION\"" $VERSIONS_YAML_PATH
187-
yq -Y -i ".orchestratord_version = \"$ORCHESTRATORD_VERSION\"" $VERSIONS_YAML_PATH
213+
yq -i ".operator_helm_chart_version = \"$CI_HELM_CHART_VERSION\"" $VERSIONS_YAML_PATH
214+
yq -i ".environmentd_version = \"$CI_MZ_VERSION\"" $VERSIONS_YAML_PATH
215+
yq -i ".orchestratord_version = \"$ORCHESTRATORD_VERSION\"" $VERSIONS_YAML_PATH
188216
if ! is_truthy "$CI_NO_TERRAFORM_BUMP"; then
189-
yq -Y -i ".terraform_helm_version= \"$TERRAFORM_HELM_VERSION\"" $VERSIONS_YAML_PATH
190-
yq -Y -i ".terraform_gcp_version= \"${TERRAFORM_VERSION[terraform-google-materialize]}\"" $VERSIONS_YAML_PATH
191-
yq -Y -i ".terraform_azure_version= \"${TERRAFORM_VERSION[terraform-azurerm-materialize]}\"" $VERSIONS_YAML_PATH
192-
yq -Y -i ".terraform_aws_version= \"${TERRAFORM_VERSION[terraform-aws-materialize]}\"" $VERSIONS_YAML_PATH
217+
yq -i ".terraform_helm_version= \"$TERRAFORM_HELM_VERSION\"" $VERSIONS_YAML_PATH
218+
yq -i ".terraform_gcp_version= \"${TERRAFORM_VERSION[terraform-google-materialize]}\"" $VERSIONS_YAML_PATH
219+
yq -i ".terraform_azure_version= \"${TERRAFORM_VERSION[terraform-azurerm-materialize]}\"" $VERSIONS_YAML_PATH
220+
yq -i ".terraform_aws_version= \"${TERRAFORM_VERSION[terraform-aws-materialize]}\"" $VERSIONS_YAML_PATH
193221
fi
194222
git add $VERSIONS_YAML_PATH
195223
git commit -m "docs: Bump to helm-chart $CI_HELM_CHART_VERSION, environmentd $CI_MZ_VERSION, orchestratord $ORCHESTRATORD_VERSION"
196-
git push "https://materializebot:$GITHUB_TOKEN@github.com/MaterializeInc/materialize.git" "$DOCS_BRANCH"
224+
git diff HEAD~
225+
run_if_not_dry git push "https://github.com/MaterializeInc/materialize.git" "$DOCS_BRANCH"
197226

198227
if ! is_truthy "$CI_NO_TERRAFORM_BUMP"; then
199228
echo "--- Bumping versions in Terraform Nightly tests"
200229
git fetch origin main
201230
git checkout origin/main
231+
git submodule update --init --recursive
202232
sed -i "s|\"git::https://github.com/MaterializeInc/terraform-aws-materialize.git?ref=.*\"|\"git::https://github.com/MaterializeInc/terraform-aws-materialize.git?ref=${TERRAFORM_VERSION[terraform-aws-materialize]}\"|" test/terraform/aws-*/main.tf
203233
sed -i "s|\"git::https://github.com/MaterializeInc/terraform-azurerm-materialize.git?ref=.*\"|\"git::https://github.com/MaterializeInc/terraform-azurerm-materialize.git?ref=${TERRAFORM_VERSION[terraform-azurerm-materialize]}\"|" test/terraform/azure-*/main.tf
204234
sed -i "s|\"git::https://github.com/MaterializeInc/terraform-google-materialize.git?ref=.*\"|\"git::https://github.com/MaterializeInc/terraform-google-materialize.git?ref=${TERRAFORM_VERSION[terraform-google-materialize]}\"|" test/terraform/gcp-*/main.tf
205235
git add test/terraform/*/main.tf
206236
git commit -m "terraform tests: Bump to AWS ${TERRAFORM_VERSION[terraform-aws-materialize]}, GCP ${TERRAFORM_VERSION[terraform-google-materialize]}, Azure ${TERRAFORM_VERSION[terraform-azurerm-materialize]}"
207-
git push "https://materializebot:$GITHUB_TOKEN@github.com/MaterializeInc/materialize.git" main
237+
git diff HEAD~
238+
run_if_not_dry git push "https://github.com/MaterializeInc/materialize.git" main
208239
fi

0 commit comments

Comments
 (0)