blob: 6fb2ad864d2ebb4009b134a782fcb97cae27a658 [file] [log] [blame]
Mike Marchetti9cfcbca2017-07-25 11:54:01 -04001#!/bin/bash
2
3function usage() {
4 echo -e "usage: $0 [OPTIONS] BUILD"
5 echo -e " OPTIONS"
6 echo -e " -p <passphrase file>: gpg passphrase file"
7 echo -e " -i <incoming repo> "
8 echo -e " -o <outgoing repo> "
9 echo -e " -k <gpg key> "
10 echo -e " -j <jfrog cli> "
11 echo -e " -d <base dir> "
Mike Marchetticb6f74f2017-07-25 16:46:07 -040012 echo -e " -b <build> "
13 echo -e " -r <release dir> "
14 echo -e " -h <rsync user@host> "
15 echo -e " -R <rsync options> "
Mike Marchetti1e980592017-07-27 15:43:44 -040016 echo -e " -P <public key file> "
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040017 exit 1
18}
19
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040020function FATAL() {
21 echo -e $1
22 exit 1
23}
24
Mike Marchetticb6f74f2017-07-25 16:46:07 -040025function dump_vars() {
26 echo "incoming repo: $IN_REPO"
27 echo "outgoing repo: $OUT_REPO"
28 echo "GPGKEY: $GPGKEY"
29 echo "JFROG_CLI: $JFROG_CLI"
30 echo "REPO_BASE: $REPO_BASE"
31 echo "RELEASE_DIR: $RELEASE_DIR"
32 echo "BUILD: $BUILD"
33 echo "RSYNC_USER_HOST $RSYNC_USER_HOST"
34 echo "RSYNC_OPTIONS $RSYNC_OPTIONS"
Mike Marchetti1e980592017-07-27 15:43:44 -040035 echo "PUBLIC_KEY_FILE $PUBLIC_KEY_FILE"
Mike Marchetti0d567602017-09-29 14:30:28 -040036 echo "BUILD: $BUILD"
37 echo "BUILD_NUMBER: $BUILD_NUMBER"
Mike Marchetticb6f74f2017-07-25 16:46:07 -040038}
39
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040040IN_REPO="unstable"
41OUT_REPO="stable"
42GPGKEY=71C0472C
43JFROG_CLI=~/jfrog
44REPO_BASE=repo
Mike Marchetticb6f74f2017-07-25 16:46:07 -040045RELEASE_DIR=ReleaseTWO
46RSYNC_USER_HOST=osmusers@osm-download.etsi.org
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040047CURR_DIR=$(pwd)
Mike Marchetti1e980592017-07-27 15:43:44 -040048PUBLIC_KEY_FILE=~/OSM\ ETSI\ Release\ Key.gpg
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040049
Mike Marchetti1e980592017-07-27 15:43:44 -040050while getopts ":p:i:o:k:j::d:b:r:h:R:P:" o; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040051 case "${o}" in
52 p)
53 PASSPHRASE_FILE=${OPTARG}
54 ;;
55 i)
56 IN_REPO=${OPTARG}
57 ;;
58 o)
59 OUT_REPO=${OPTARG}
60 ;;
61 k)
62 GPGKEY=${OPTARG}
63 ;;
64 j)
65 JFROG_CLI=${OPTARG}
66 ;;
67 d)
68 BASE_DIR=${OPTARG}
69 ;;
Mike Marchetticb6f74f2017-07-25 16:46:07 -040070 b)
71 BUILD=${OPTARG}
72 ;;
73 r)
74 RELEASE_DIR=${OPTARG}
75 ;;
76 h)
77 RSYNC_USER_HOST=${OPTARG}
78 ;;
79 R)
80 RSYNC_OPTIONS=${OPTARG}
81 ;;
Mike Marchetti1e980592017-07-27 15:43:44 -040082 P)
83 PUBLIC_KEY_FILE=${OPTARG}
84 ;;
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040085 *)
86 usage
87 exit 1
88 ;;
89 esac
90done
91
Mike Marchetticb6f74f2017-07-25 16:46:07 -040092BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
93
94[ -z "$BUILD" ] && FATAL "missing option: -b <build>"
95
Mike Marchetti0d567602017-09-29 14:30:28 -040096BUILD_NUMBER=$(echo "$BUILD" | sed -e 's/.*:: //g')
97
98dump_vars
99
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400100[ -x $JFROG_CLI ] || FATAL "jfrog cli not found. Please install https://www.jfrog.com/getcli/ and use option '-j <jfrog cli location>'"
101
102$JFROG_CLI rt download --build "$BUILD" osm-release || FATAL "Failed to download"
103
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400104
Mike Marchettic6d52752017-07-26 15:32:34 -0400105[ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-tty --no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400106
107mkdir -p $BASE_DIR/dists
108
109cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
110cp -R $BUILD_NUMBER/pool $BASE_DIR/
111
112cd $BASE_DIR
113
Mike Marchetti43ae00a2017-09-26 13:43:06 -0400114for i in RO osmclient openvim SO UI IM; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400115
116 # gpg sign the packages
117 dpkg-sig -g "$GPG_PASSPHRASE" -k $GPGKEY --sign builder pool/$i/*.deb
118
119 # mkdir -p dists/stable/$i/binary-amd64/
120 apt-ftparchive packages pool/$i > dists/$OUT_REPO/$i/binary-amd64/Packages
121 rm -f dists/$OUT_REPO/$i/binary-amd64/Packages.gz
122 gzip -9fk dists/$OUT_REPO/$i/binary-amd64/Packages
123done
124
125# Generate the root Release
126# pushd dists/
127apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
128#gzip -9fk dists/$OUT_REPO/Release
129
130rm -f dists/$OUT_REPO/InRelease
Mike Marchettic6d52752017-07-26 15:32:34 -0400131eval gpg $GPG_PASSPHRASE --no-tty --default-key $GPGKEY --clearsign -o dists/$OUT_REPO/InRelease dists/$OUT_REPO/Release
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400132
133rm -f dists/$OUT_REPO/Release.gpg
Mike Marchettic6d52752017-07-26 15:32:34 -0400134eval gpg $GPG_PASSPHRASE --no-tty --default-key $GPGKEY -abs -o dists/$OUT_REPO/Release.gpg dists/$OUT_REPO/Release
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400135
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400136echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400137cd $CURR_DIR/$REPO_BASE
138
Mike Marchetti1e980592017-07-27 15:43:44 -0400139# copy over the public key file
140[ "$PUBLIC_KEY_FILE" ] && cp "$PUBLIC_KEY_FILE" osm/debian/$RELEASE_DIR
141
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400142rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos