104 lines
2.7 KiB
Bash
Executable File
104 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# ci/scripts/shipit
|
|
#
|
|
# Script for finalizing and packaging Helm chart
|
|
# and managing release notes
|
|
#
|
|
# author: Dr Nic Williams <drnicwilliams@gmail.com>
|
|
# created: 2018-11-09
|
|
|
|
set -eu
|
|
|
|
header() {
|
|
echo
|
|
echo "###############################################"
|
|
echo
|
|
echo $*
|
|
echo
|
|
}
|
|
|
|
: ${CHART_NAME:?required}
|
|
: ${CHART_ROOT:?required}
|
|
: ${REPO_ROOT:?required}
|
|
: ${VERSION_FROM:?required}
|
|
: ${RELEASE_ROOT:?required}
|
|
: ${REPO_OUT:?required}
|
|
: ${BRANCH:?required}
|
|
: ${GITHUB_OWNER:?required}
|
|
: ${GIT_EMAIL:?required}
|
|
: ${GIT_NAME:?required}
|
|
: ${NOTIFICATION_OUT:?required}
|
|
: ${AWS_ACCESS_KEY_ID:?required}
|
|
: ${AWS_SECRET_ACCESS_KEY:?required}
|
|
: ${HELM_S3_BUCKET_URI:?required}
|
|
|
|
HELM_VERSION=2.11.0
|
|
|
|
if [[ ! -f ${VERSION_FROM} ]]; then
|
|
echo >&2 "Version file (${VERSION_FROM}) not found. Did you misconfigure Concourse?"
|
|
exit 2
|
|
fi
|
|
VERSION=$(cat ${VERSION_FROM})
|
|
if [[ -z ${VERSION} ]]; then
|
|
echo >&2 "Version file (${VERSION_FROM}) was empty. Did you misconfigure Concourse?"
|
|
exit 2
|
|
fi
|
|
|
|
if [[ ! -f ${REPO_ROOT}/ci/release_notes.md ]]; then
|
|
echo >&2 "ci/release_notes.md not found. Did you forget to write them?"
|
|
exit 1
|
|
fi
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
###############################################################
|
|
|
|
git clone ${REPO_ROOT} ${REPO_OUT}
|
|
|
|
pushd ${REPO_OUT}
|
|
header "Bump version in Chart.yaml"
|
|
tmpfile=$(mktemp /tmp/chart-yaml.XXXX)
|
|
sed -e "s/^version:.*$/version: ${VERSION}/g" ${CHART_ROOT}/Chart.yaml > $tmpfile
|
|
cp $tmpfile ${CHART_ROOT}/Chart.yaml
|
|
|
|
header "Bump docker image version in Values.yaml"
|
|
tmpfile=$(mktemp /tmp/chart-yaml.XXXX)
|
|
sed -e "s/^ tag:.*$/ tag: ${VERSION}/g" ${CHART_ROOT}/values.yaml > $tmpfile
|
|
cp $tmpfile ${CHART_ROOT}/values.yaml
|
|
popd
|
|
|
|
header "Build helm chart"
|
|
mkdir -p ${RELEASE_ROOT}/artifacts
|
|
helm package ${REPO_OUT}/${CHART_ROOT} -d ${RELEASE_ROOT}/artifacts
|
|
|
|
helm repo add our-repo ${HELM_S3_BUCKET_URI}
|
|
|
|
header "Uploading helm chart to ${HELM_S3_BUCKET_URI}"
|
|
set -e
|
|
helm s3 push ${RELEASE_ROOT}/artifacts/${CHART_NAME}*.tgz our-repo --force
|
|
set +e
|
|
|
|
header "Update git repo with final release..."
|
|
if [[ -z $(git config --global user.email) ]]; then
|
|
git config --global user.email "${GIT_EMAIL}"
|
|
fi
|
|
if [[ -z $(git config --global user.name) ]]; then
|
|
git config --global user.name "${GIT_NAME}"
|
|
fi
|
|
|
|
echo "v${VERSION}" > ${RELEASE_ROOT}/tag
|
|
echo "v${VERSION}" > ${RELEASE_ROOT}/name
|
|
mv ${REPO_OUT}/ci/release_notes.md ${RELEASE_ROOT}/notes.md
|
|
|
|
pushd $REPO_OUT
|
|
git merge --no-edit ${BRANCH}
|
|
git add -A
|
|
git status
|
|
git commit -m "release v${VERSION}"
|
|
popd
|
|
|
|
cat > ${NOTIFICATION_OUT:-notifications}/message <<EOS
|
|
New ${CHART_NAME} v${VERSION} released. <https://github.com/${GITHUB_OWNER}/${CHART_NAME}/releases/tag/v${VERSION}|Release notes>.
|
|
EOS |