-
Notifications
You must be signed in to change notification settings - Fork 2
/
jenkins-debian-build
executable file
·78 lines (66 loc) · 2.14 KB
/
jenkins-debian-build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/bin/sh -e
# This script is designed to automatically build Debian packages for Jenkins
#
# It is used in the two following jobs:
# D_aegir-debian-official
# D_aegir-debian-auto
DOMAIN=`hostname -f`
KEY="jenkins@$DOMAIN"
usage() {
cat <<EOF
Usage: $0 [ -hvn -k <key> ]
Build an automatic package with the provided key.
-h: this help
-v: show every command ran
-n: simulate: build but do not upload the package
-k <key>: sign the package with this key (default: $KEY)
-u: upload the package (default: don't upload)
-t <ref>: build the package from a ref, usually a tag
EOF
}
upload=false
official=false
set -- `getopt hvnk:ut: $*`
for i; do
case "$i" in
-h) shift; usage;;
-v) shift; set -x;;
-n) shift; simulate='echo > ';;
-k) shift; KEY=$1; shift;;
-u) shift; upload=true;;
-t) shift; tag=$1; shift;;
--) shift; break;;
esac
done
# the upstream version: strip the 6.x and turn the appendix into
# +N.foo where N is the number of commits since last tag and foo is
# the hash
if ! [ -z "$tag" ]; then
upstream_version="$tag"
# we checkout the tag, using git reset
# this is necessary so that git-buildpackage doesn't complain about not being on a branch
git reset --hard $tag
else
upstream_version=$(git describe --tags origin/6.x-1.x | sed 's/6.x-//;s/-\([0-9]*\)-\([^-]*\)$/+\1.\2/')
fi
echo building aegir-${upstream_version} with key $KEY - build tag: ${BUILD_TAG}
if ! [ -z "$tag" ] ; then
$simulate git-buildpackage -k${KEY}
else
$simulate dch -D unstable -v ${upstream_version} "automatic jenkins build ${BUILD_TAG}"
$simulate git commit -m"dummy commit for jenkins ${BUILD_TAG} autobuild" debian/changelog
$simulate git-buildpackage -k${KEY}
fi
if $upload; then
echo uploading package to aegir repository
$simulate dput -f aegir build-area/*.changes
$simulate sleep 5
debfile=`ls build-area | grep deb | head -1`
if [ -f "/srv/reprepro/pool/main/a/aegir-provision/$debfile" ]; then
echo "debian file built: $debfile"
else
echo "can't find debian file $debfile"
exit 1
fi
fi
$simulate git checkout ${GIT_COMMIT}