blob: 32aaa67a3f4b7f02eec71651b6ed646151f371ce [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# exit immediately when a command fails
set -e
# only exit with zero if all commands of the pipeline exit successfully
set -o pipefail
# error on unset variables
set -u
show_help() {
cat << EOF
Usage: ./hack/release/version/propagate_version.sh [-h]
Make sure all files in the project reflect the version currently set in: version/version.go
-h Display this help and exit
EOF
}
OPTIND=1
while getopts h opt; do
case $opt in
h)
show_help
exit 0
;;
*)
show_help >&2
exit 1
;;
esac
done
shift "$((OPTIND-1))" # Discard the options and sentinel --
# Get full version string
VERSION="$(cat version/version.go | grep -E 'Version([[:space:]]+)=' | grep -o '["''].*["'']' | xargs)"
VERSION_SUFFIX="$(cat version/version.go | grep -E 'VersionSuffix([[:space:]]+)=' | grep -o '["''].*["'']' | xargs)"
if [[ -n "${VERSION_SUFFIX:-}" ]]; then
VERSION="${VERSION}-${VERSION_SUFFIX}"
fi
echo "Updating the version throughout the repo to: ${VERSION}"
# Update default solr-operator version and the helm chart versions.
awk '$1 == "repository:" { tag = ($2 == "apache/solr-operator") }
tag && $1 == "tag:"{$1 = " " $1; $2 = "'"${VERSION}"'"} 1' helm/solr-operator/values.yaml > helm/solr-operator/values.yaml.tmp
mv helm/solr-operator/values.yaml.tmp helm/solr-operator/values.yaml
# Update Helm Chart.yaml
IS_PRE_RELEASE="false"
if [[ "${VERSION_SUFFIX}" =~ .*prerelease ]]; then
IS_PRE_RELEASE="true"
fi
# Update Solr Operator Helm Chart version
{
cat helm/solr-operator/Chart.yaml | \
awk '$0 ~ /^v/ && $1 == "version:"{$1 = $1; $2 = "'"${VERSION#v}"'"} 1' | \
awk '$0 ~ /^a/ && $1 == "appVersion:"{$1 = $1; $2 = "'"${VERSION}"'"} 1' | \
awk '$1 == "artifacthub.io/prerelease:"{$1 = " "$1; $2 = "\"'"${IS_PRE_RELEASE}"'\""} 1' | \
sed -E "s|image: apache/solr-operator:(.*)|image: apache/solr-operator:${VERSION}|g"
} > helm/solr-operator/Chart.yaml.tmp && mv helm/solr-operator/Chart.yaml.tmp helm/solr-operator/Chart.yaml
# Update Solr Helm Chart version
{
cat helm/solr/Chart.yaml | \
awk '$0 ~ /^v/ && $1 == "version:"{$1 = $1; $2 = "'"${VERSION#v}"'"} 1' | \
awk '$1 == "artifacthub.io/prerelease:"{$1 = " "$1; $2 = "\"'"${IS_PRE_RELEASE}"'\""} 1'
} > helm/solr/Chart.yaml.tmp && mv helm/solr/Chart.yaml.tmp helm/solr/Chart.yaml
# Update Solr Operator Helm README.md
{
cat helm/solr-operator/README.md | \
sed -E 's/^\| image.tag \| string \| `".*"` \|/\| image.tag \| string \| `"'${VERSION}'"` \|/g' | \
sed -E "s|^(kubectl.+/crds/)[^/<]+|\1${VERSION}|g" | \
sed -E "s|^(helm.+--version )[^ <]+|\1${VERSION#v}|g"
} > helm/solr-operator/README.md.tmp && mv helm/solr-operator/README.md.tmp helm/solr-operator/README.md
# Update Solr Helm README.md
{
cat helm/solr/README.md | \
sed -E "s|^(helm.+--version )[^ <]+|\1${VERSION#v}|g"
} > helm/solr/README.md.tmp && mv helm/solr/README.md.tmp helm/solr/README.md
# Update Docs (Remove this when docs are generated with versioning info)
{
cat docs/local_tutorial.md | \
sed -E "s|(kubectl.+/crds/)[^/<]+|\1${VERSION}|g" | \
sed -E "s|(helm.+--version )[^ <]+|\1${VERSION#v}|g"
} > docs/local_tutorial.md.tmp && mv docs/local_tutorial.md.tmp docs/local_tutorial.md
{
cat docs/upgrade-notes.md | \
sed -E "s|(kubectl.+/crds/)[^/<]+|\1${VERSION}|g" | \
sed -E "s|(helm.+--version )[^ <]+|\1${VERSION#v}|g"
} > docs/upgrade-notes.md.tmp && mv docs/upgrade-notes.md.tmp docs/upgrade-notes.md
{
cat docs/running-the-operator.md | \
sed -E "s|(kubectl.+/crds/)[^/<]+|\1${VERSION}|g" | \
sed -E "s|(helm.+--version )[^ <]+|\1${VERSION#v}|g"
} > docs/running-the-operator.md.tmp && mv docs/running-the-operator.md.tmp docs/running-the-operator.md
make manifests