Commit e8cc30d2c7ca98b6cbb366d9f683f9edaa0ccaca
Exists in
master
and in
17 other branches
Merge branch 'release_script' into 'master'
Release Script
Showing
3 changed files
with
63 additions
and
7 deletions
Show diff stats
.gitignore
doc/release.md
| ... | ... | @@ -29,23 +29,33 @@ git push origin 6-6-stable 6.6.0.omnibus |
| 29 | 29 | |
| 30 | 30 | ## On the build machines |
| 31 | 31 | |
| 32 | -- Check out the release branch of omnibus-gitlab. | |
| 32 | +- Install release dependencies | |
| 33 | 33 | |
| 34 | 34 | ```shell |
| 35 | -git fetch | |
| 36 | -git checkout 6-6-stable | |
| 35 | +# Ubuntu | |
| 36 | +sudo apt-get install python-pip | |
| 37 | + | |
| 38 | +# CentOS | |
| 39 | +sudo yum install python-pip | |
| 40 | + | |
| 41 | +# Both | |
| 42 | +sudo pip install awscli | |
| 43 | +aws configure # enter AWS key and secret | |
| 37 | 44 | ``` |
| 38 | 45 | |
| 39 | -- Check the version with `git describe`. | |
| 46 | +- Check out the release branch of omnibus-gitlab. | |
| 40 | 47 | |
| 41 | 48 | ```shell |
| 42 | -git describe # Should start with 6.6.0.omnibus | |
| 49 | +git fetch | |
| 50 | +git checkout 6-6-stable | |
| 43 | 51 | ``` |
| 44 | 52 | |
| 45 | -- Build a package with timestamps disabled. | |
| 53 | +- Run the release script | |
| 46 | 54 | |
| 47 | 55 | ```shell |
| 48 | -OMNIBUS_APPEND_TIMESTAMP=0 bin/omnibus build project gitlab | |
| 56 | +./release.sh | |
| 49 | 57 | ``` |
| 50 | 58 | |
| 59 | +This will `clean --purge` the build environment, build a package and upload it to S3. | |
| 60 | + | |
| 51 | 61 | [the gitlab-rails version in omnibus-gitlab]: ../config/software/gitlab-rails.rb#L20 | ... | ... |
| ... | ... | @@ -0,0 +1,45 @@ |
| 1 | +#!/bin/bash | |
| 2 | +PROJECT=gitlab | |
| 3 | +RELEASE_BUCKET=downloads-packages | |
| 4 | +RELEASE_BUCKET_REGION=eu-west-1 | |
| 5 | + | |
| 6 | +function error_exit | |
| 7 | +{ | |
| 8 | + echo "$0: fatal error: $1" 1>&2 | |
| 9 | + exit 1 | |
| 10 | +} | |
| 11 | + | |
| 12 | +if !(git diff --quiet HEAD); then | |
| 13 | + error_exit 'uncommited changes' | |
| 14 | +fi | |
| 15 | + | |
| 16 | +if !(git describe --exact-match); then | |
| 17 | + error_exit 'HEAD is not tagged' | |
| 18 | +fi | |
| 19 | + | |
| 20 | +if !(bin/omnibus clean --purge ${PROJECT}); then | |
| 21 | + error_exit 'clean failed' | |
| 22 | +fi | |
| 23 | + | |
| 24 | +if !(touch build.txt); then | |
| 25 | + error_exit 'failed to mark build start time' | |
| 26 | +fi | |
| 27 | + | |
| 28 | +if !(OMNIBUS_APPEND_TIMESTAMP=0 bin/omnibus build project ${PROJECT}); then | |
| 29 | + error_exit 'build failed' | |
| 30 | +fi | |
| 31 | + | |
| 32 | +release_package=$(find pkg/ -newer build.txt -type f -not -name '*.json') | |
| 33 | +if [[ -z ${release_package} ]]; then | |
| 34 | + error_exit 'could not find the release package' | |
| 35 | +fi | |
| 36 | + | |
| 37 | +echo | |
| 38 | +echo 'Package MD5:' | |
| 39 | +md5sum ${release_package} | |
| 40 | + | |
| 41 | +echo | |
| 42 | +echo 'Starting upload' | |
| 43 | +if !(aws s3 cp ${release_package} s3://${RELEASE_BUCKET} --acl public-read --region ${RELEASE_BUCKET_REGION}); then | |
| 44 | + error_exit 'release upload failed' | |
| 45 | +fi | ... | ... |