blob: b33291850ec571735a618a1a1506fab844a768e5 [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 Marchettif94dd8a2017-11-06 11:04:38 -050017 echo -e " -c <changelogfile> "
Mike Marchetti5eab1c02018-03-27 15:09:44 -040018 echo -e " -m <MDG repos> "
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040019 exit 1
20}
21
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040022function FATAL() {
23 echo -e $1
24 exit 1
25}
26
Mike Marchetticb6f74f2017-07-25 16:46:07 -040027function dump_vars() {
28 echo "incoming repo: $IN_REPO"
29 echo "outgoing repo: $OUT_REPO"
30 echo "GPGKEY: $GPGKEY"
31 echo "JFROG_CLI: $JFROG_CLI"
32 echo "REPO_BASE: $REPO_BASE"
33 echo "RELEASE_DIR: $RELEASE_DIR"
34 echo "BUILD: $BUILD"
35 echo "RSYNC_USER_HOST $RSYNC_USER_HOST"
36 echo "RSYNC_OPTIONS $RSYNC_OPTIONS"
Mike Marchetti1e980592017-07-27 15:43:44 -040037 echo "PUBLIC_KEY_FILE $PUBLIC_KEY_FILE"
Mike Marchetti0d567602017-09-29 14:30:28 -040038 echo "BUILD: $BUILD"
39 echo "BUILD_NUMBER: $BUILD_NUMBER"
Mike Marchetticb6f74f2017-07-25 16:46:07 -040040}
41
Mike Marchetti9f2a63f2018-04-25 16:52:59 -040042MDG_REPOS="RO osmclient openvim SO UI IM devops MON N2VC NBI common"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040043IN_REPO="unstable"
44OUT_REPO="stable"
45GPGKEY=71C0472C
46JFROG_CLI=~/jfrog
47REPO_BASE=repo
Mike Marchetticb6f74f2017-07-25 16:46:07 -040048RELEASE_DIR=ReleaseTWO
49RSYNC_USER_HOST=osmusers@osm-download.etsi.org
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040050CURR_DIR=$(pwd)
Mike Marchetti1e980592017-07-27 15:43:44 -040051PUBLIC_KEY_FILE=~/OSM\ ETSI\ Release\ Key.gpg
Mike Marchettif94dd8a2017-11-06 11:04:38 -050052CHANGE_LOG_FILE=
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040053
Mike Marchetti5eab1c02018-03-27 15:09:44 -040054while getopts ":p:i:o:k:j::d:b:r:h:R:P:c:m:" o; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040055 case "${o}" in
56 p)
57 PASSPHRASE_FILE=${OPTARG}
58 ;;
59 i)
60 IN_REPO=${OPTARG}
61 ;;
62 o)
63 OUT_REPO=${OPTARG}
64 ;;
65 k)
66 GPGKEY=${OPTARG}
67 ;;
68 j)
69 JFROG_CLI=${OPTARG}
70 ;;
71 d)
72 BASE_DIR=${OPTARG}
73 ;;
Mike Marchetticb6f74f2017-07-25 16:46:07 -040074 b)
75 BUILD=${OPTARG}
76 ;;
77 r)
78 RELEASE_DIR=${OPTARG}
79 ;;
80 h)
81 RSYNC_USER_HOST=${OPTARG}
82 ;;
83 R)
84 RSYNC_OPTIONS=${OPTARG}
85 ;;
Mike Marchetti1e980592017-07-27 15:43:44 -040086 P)
87 PUBLIC_KEY_FILE=${OPTARG}
88 ;;
Mike Marchettif94dd8a2017-11-06 11:04:38 -050089 c)
90 CHANGE_LOG_FILE=${OPTARG}
91 ;;
Mike Marchetti5eab1c02018-03-27 15:09:44 -040092 m)
93 MDG_REPOS=${OPTARG}
94 ;;
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040095 *)
96 usage
97 exit 1
98 ;;
99 esac
100done
101
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400102BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
103
104[ -z "$BUILD" ] && FATAL "missing option: -b <build>"
105
Mike Marchetti0d567602017-09-29 14:30:28 -0400106BUILD_NUMBER=$(echo "$BUILD" | sed -e 's/.*:: //g')
107
108dump_vars
109
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400110[ -x $JFROG_CLI ] || FATAL "jfrog cli not found. Please install https://www.jfrog.com/getcli/ and use option '-j <jfrog cli location>'"
111
112$JFROG_CLI rt download --build "$BUILD" osm-release || FATAL "Failed to download"
113
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400114
Mike Marchettic6d52752017-07-26 15:32:34 -0400115[ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-tty --no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400116
117mkdir -p $BASE_DIR/dists
118
119cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
120cp -R $BUILD_NUMBER/pool $BASE_DIR/
Mike Marchettibdc31282017-11-29 13:38:41 -0500121
122echo "copy changelog from $BUILD_NUMBER/changelog to $BASE_DIR/"
123cp -R $BUILD_NUMBER/changelog $BASE_DIR/
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400124
125cd $BASE_DIR
126
Mike Marchetti5eab1c02018-03-27 15:09:44 -0400127for i in $MDG_REPOS; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400128
129 # gpg sign the packages
130 dpkg-sig -g "$GPG_PASSPHRASE" -k $GPGKEY --sign builder pool/$i/*.deb
131
132 # mkdir -p dists/stable/$i/binary-amd64/
133 apt-ftparchive packages pool/$i > dists/$OUT_REPO/$i/binary-amd64/Packages
134 rm -f dists/$OUT_REPO/$i/binary-amd64/Packages.gz
135 gzip -9fk dists/$OUT_REPO/$i/binary-amd64/Packages
136done
137
138# Generate the root Release
139# pushd dists/
140apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
141#gzip -9fk dists/$OUT_REPO/Release
142
143rm -f dists/$OUT_REPO/InRelease
Mike Marchettic6d52752017-07-26 15:32:34 -0400144eval 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 -0400145
146rm -f dists/$OUT_REPO/Release.gpg
Mike Marchettic6d52752017-07-26 15:32:34 -0400147eval 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 -0400148
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400149echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400150cd $CURR_DIR/$REPO_BASE
151
Mike Marchetti1e980592017-07-27 15:43:44 -0400152# copy over the public key file
153[ "$PUBLIC_KEY_FILE" ] && cp "$PUBLIC_KEY_FILE" osm/debian/$RELEASE_DIR
154
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500155# copy over the changelog file
156[ "$CHANGE_LOG_FILE" ] && cp "$CHANGE_LOG_FILE" osm/debian/$RELEASE_DIR
157
Mike Marchetti41ae07e2018-10-02 09:19:36 -0400158IM_BASE="osm/debian/$RELEASE_DIR/pool/IM/osm-imdocs_"
159if ls "$IM_BASE"* 1> /dev/null 2>&1; then
160 IM_TMP_DIR=$(mktemp -d)
161 dpkg -x "$IM_BASE"* $IM_TMP_DIR
162 mkdir osm/debian/$RELEASE_DIR/docs
163 cp -R $IM_TMP_DIR/usr/share/osm-im osm/debian/$RELEASE_DIR/docs
164fi
165
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400166rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos