Skip to content

Instantly share code, notes, and snippets.

@valentijnscholten
Created September 30, 2020 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save valentijnscholten/014f851d769219d86e0177bc90e78043 to your computer and use it in GitHub Desktop.
Save valentijnscholten/014f851d769219d86e0177bc90e78043 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -x
set -e
function build_and_push_docker_image() {
# build everything first...
images=(nginx django)
for i in "${images[@]}"; do
docker build -t defectdojo/defectdojo-${i}:${RELEASENUMBER}${RC_SUFFIX} -f Dockerfile.${i} .
if [ -z $RC_SUFFIX ]; then
# need to also push to latest
docker build -t defectdojo/defectdojo-${i}:latest -f Dockerfile.${i} .
fi
done
# ...and then push all images
for i in "${images[@]}"; do
docker push defectdojo/defectdojo-${i}:${RELEASENUMBER}${RC_SUFFIX}
if [ -z $RC_SUFFIX ]; then
# need to also push to latest
docker push defectdojo/defectdojo-${i}:latest
fi
done
}
export RC_SUFFIX= # set to nothing if not a RC
while getopts ":r:b" opt; do
# r for release branch
case ${opt} in
r)
if [[ ! "${OPTARG}" =~ .*/[0-9]+\.[0-9]+\.[0-9]+ ]]; then
echo "wrong value to release"
exit 1
fi
RELEASEBRANCH=$OPTARG
RELEASENUMBER=${OPTARG##*/}
;;
b)
RC_SUFFIX="-rc"
;;
:)
echo "Invalid option."
;;
esac
done
if ((OPTIND == 1))
then
echo "You need to pass in at least the -r parameter, 'release/1.2.3'"
exit 1
fi
shift $((OPTIND - 1))
if [[ -z "$RELEASEBRANCH" ]] || [[ -z "$RELEASENUMBER" ]]; then
echo "Cannot proceed without release information."
fi
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" != "master" ]]; then
echo 'Abort: Release must happen from master (after everything has been merged in there and tagged in git)';
exit 1;
fi
build_and_push_docker_image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment