blob: 5227f880e61f15a44b824817e6aca4224b1f3593 [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 Marchetti9cfcbca2017-07-25 11:54:01 -040016 exit 1
17}
18
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040019function FATAL() {
20 echo -e $1
21 exit 1
22}
23
Mike Marchetticb6f74f2017-07-25 16:46:07 -040024function dump_vars() {
25 echo "incoming repo: $IN_REPO"
26 echo "outgoing repo: $OUT_REPO"
27 echo "GPGKEY: $GPGKEY"
28 echo "JFROG_CLI: $JFROG_CLI"
29 echo "REPO_BASE: $REPO_BASE"
30 echo "RELEASE_DIR: $RELEASE_DIR"
31 echo "BUILD: $BUILD"
32 echo "RSYNC_USER_HOST $RSYNC_USER_HOST"
33 echo "RSYNC_OPTIONS $RSYNC_OPTIONS"
34}
35
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040036IN_REPO="unstable"
37OUT_REPO="stable"
38GPGKEY=71C0472C
39JFROG_CLI=~/jfrog
40REPO_BASE=repo
Mike Marchetticb6f74f2017-07-25 16:46:07 -040041RELEASE_DIR=ReleaseTWO
42RSYNC_USER_HOST=osmusers@osm-download.etsi.org
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040043CURR_DIR=$(pwd)
44
Mike Marchetticb6f74f2017-07-25 16:46:07 -040045while getopts ":p:i:o:k:j::d:b:r:h:R:" o; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040046 case "${o}" in
47 p)
48 PASSPHRASE_FILE=${OPTARG}
49 ;;
50 i)
51 IN_REPO=${OPTARG}
52 ;;
53 o)
54 OUT_REPO=${OPTARG}
55 ;;
56 k)
57 GPGKEY=${OPTARG}
58 ;;
59 j)
60 JFROG_CLI=${OPTARG}
61 ;;
62 d)
63 BASE_DIR=${OPTARG}
64 ;;
Mike Marchetticb6f74f2017-07-25 16:46:07 -040065 b)
66 BUILD=${OPTARG}
67 ;;
68 r)
69 RELEASE_DIR=${OPTARG}
70 ;;
71 h)
72 RSYNC_USER_HOST=${OPTARG}
73 ;;
74 R)
75 RSYNC_OPTIONS=${OPTARG}
76 ;;
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040077 *)
78 usage
79 exit 1
80 ;;
81 esac
82done
83
Mike Marchetticb6f74f2017-07-25 16:46:07 -040084dump_vars
85
86BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
87
88[ -z "$BUILD" ] && FATAL "missing option: -b <build>"
89
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040090[ -x $JFROG_CLI ] || FATAL "jfrog cli not found. Please install https://www.jfrog.com/getcli/ and use option '-j <jfrog cli location>'"
91
92$JFROG_CLI rt download --build "$BUILD" osm-release || FATAL "Failed to download"
93
94BUILD_NUMBER=$(basename "$BUILD")
95
96[ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
97
98mkdir -p $BASE_DIR/dists
99
100cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
101cp -R $BUILD_NUMBER/pool $BASE_DIR/
102
103cd $BASE_DIR
104
105for i in RO osmclient openvim SO UI; do
106
107 # gpg sign the packages
108 dpkg-sig -g "$GPG_PASSPHRASE" -k $GPGKEY --sign builder pool/$i/*.deb
109
110 # mkdir -p dists/stable/$i/binary-amd64/
111 apt-ftparchive packages pool/$i > dists/$OUT_REPO/$i/binary-amd64/Packages
112 rm -f dists/$OUT_REPO/$i/binary-amd64/Packages.gz
113 gzip -9fk dists/$OUT_REPO/$i/binary-amd64/Packages
114done
115
116# Generate the root Release
117# pushd dists/
118apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
119#gzip -9fk dists/$OUT_REPO/Release
120
121rm -f dists/$OUT_REPO/InRelease
122eval gpg $GPG_PASSPHRASE --default-key $GPGKEY --clearsign -o dists/$OUT_REPO/InRelease dists/$OUT_REPO/Release
123
124rm -f dists/$OUT_REPO/Release.gpg
125eval gpg $GPG_PASSPHRASE --default-key $GPGKEY -abs -o dists/$OUT_REPO/Release.gpg dists/$OUT_REPO/Release
126
127
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400128echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400129cd $CURR_DIR/$REPO_BASE
130
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400131rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos