Add argument parsing and usage
[docker-gc-build/.git] / release.sh
1 #!/bin/bash
2
3 set -o errexit
4 set -o nounset
5 set -o pipefail
6
7 die() {
8     echo "$1" >&2
9     exit 2
10 }
11
12 usage() {
13     cat <<EOF
14     ${0} [options] [arguments]
15
16     Arguments:
17
18     -b Set the S3 bucket name
19
20     Options:
21
22     -s Dry run (simulate)
23     -h Help
24 EOF
25     exit 1
26 }
27
28 declare -a deps=(gpg deb-s3)
29
30 for dep in ${deps[*]}
31 do
32     [[ ! -f `which $dep` ]] && {
33         die "You need to install: $dep"
34     }
35 done
36
37 while getopts ":b:hs" opt; do
38     case ${opt} in
39         b ) BUCKET=${OPTARG}
40             ;;
41         h ) usage
42             ;;
43         s ) DRY_RUN="echo "
44             ;;
45         \?) echo "Invalid Option: -${OPTARG}" 1>&2; exit 1
46             ;;
47     esac
48 done
49
50 COMMIT=`(cd docker-gc && git rev-parse --short HEAD)`
51 VERSION="2:`cat ${PWD}/docker-gc/version.txt`~${COMMIT}"
52 TAG="gonitro/docker-gc-build:${COMMIT}"
53 AWS_REGION=us-west-2
54 BUCKET=${BUCKET:-nitro-apt-repo}
55 DRY_RUN=${DRY_RUN:-}
56 NITRO_GPG_KEY=`gpg --batch --search-keys  --with-colons infra-guild@gonitro.com 2>&1| sed -E -n 's/^pub:.*(........):.*:.*:.*::/\1/p'`
57
58 printf  "[+] Using GPG %s for package signature\n" ${NITRO_GPG_KEY}
59
60 $DRY_RUN docker build \
61     -t ${TAG} \
62     --build-arg VERSION=${VERSION} \
63     --build-arg AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
64     --build-arg AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
65     -f ./Dockerfile .
66
67 $DRY_RUN docker run -v /tmp/:/tmp ${TAG} /bin/bash -c 'cp /docker-gc*.deb /tmp'
68
69 package=`ls /tmp/*.deb || :`
70 printf "[+] Debian Package generated into '%s'\n" ${package}
71
72 $DRY_RUN deb-s3 upload \
73     --access-key-id=${AWS_ACCESS_KEY_ID} \
74     --secret-access-key=${AWS_SECRET_ACCESS_KEY} \
75     --s3-region=${AWS_REGION} \
76     --bucket=${BUCKET} \
77     --sign=${NITRO_GPG_KEY} ${package} || exit 1
78 printf "[+] Successfully uploaded package into %s\n" ${BUCKET}
79
80 exit 0