@@ -21,21 +21,39 @@ export GIT_AUTHOR_NAME=Materialize Bot
21212222export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
2323export 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} "
2830if [[ -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
3133fi
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+
3350echo " --- Publishing Helm Chart $CI_HELM_CHART_VERSION with Materialize $CI_MZ_VERSION "
3451bin/helm-chart-version-bump --helm-chart-version " $CI_HELM_CHART_VERSION " " $CI_MZ_VERSION "
3552git commit -a -m " Bumping helm-chart version to $CI_HELM_CHART_VERSION with Materialize $CI_MZ_VERSION "
3653TAG=" self-managed-$CI_HELM_CHART_VERSION "
3754git 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
4159CHARTS=" "
5270echo " Found valid charts: $CHARTS "
5371
5472rm -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
5775mkdir -p $RELEASE_DIR
5876CHANGES_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 ..
96115else
97116 echo " No new chart versions to publish"
100119
101120echo " --- Verifying that Helm Chart has been published"
102121i=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"
128151fi
129152
130153if is_truthy " $CI_NO_TERRAFORM_BUMP " ; then
131154 echo " --- Not bumping terraform versions"
132155else
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
175202fi
@@ -179,30 +206,34 @@ ORCHESTRATORD_VERSION=$(yq -r '.operator.image.tag' misc/helm-charts/operator/va
179206DOCS_BRANCH=self-managed-docs/$( echo " $CI_HELM_CHART_VERSION " | cut -d. -f1,2)
180207git fetch origin " $DOCS_BRANCH "
181208git checkout " origin/$DOCS_BRANCH "
209+ git submodule update --init --recursive
182210git config user.email
" [email protected] " 183211git config user.name " Buildkite"
184212VERSIONS_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
188216if ! 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
193221fi
194222git add $VERSIONS_YAML_PATH
195223git 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
198227if ! 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
208239fi
0 commit comments