blob: 24646d178d8690791e02c12ab91a4d11f8733c16 [file] [log] [blame]
Mike Marchetti9cfcbca2017-07-25 11:54:01 -04001#!/bin/bash
garciadeblasc16af7f2020-05-08 14:24:43 +00002#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040015
16function usage() {
17 echo -e "usage: $0 [OPTIONS] BUILD"
18 echo -e " OPTIONS"
19 echo -e " -p <passphrase file>: gpg passphrase file"
20 echo -e " -i <incoming repo> "
21 echo -e " -o <outgoing repo> "
22 echo -e " -k <gpg key> "
23 echo -e " -j <jfrog cli> "
24 echo -e " -d <base dir> "
Mike Marchetticb6f74f2017-07-25 16:46:07 -040025 echo -e " -b <build> "
26 echo -e " -r <release dir> "
27 echo -e " -h <rsync user@host> "
28 echo -e " -R <rsync options> "
Mike Marchetti1e980592017-07-27 15:43:44 -040029 echo -e " -P <public key file> "
Mike Marchettif94dd8a2017-11-06 11:04:38 -050030 echo -e " -c <changelogfile> "
Mike Marchetti5eab1c02018-03-27 15:09:44 -040031 echo -e " -m <MDG repos> "
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040032 exit 1
33}
34
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040035function FATAL() {
36 echo -e $1
37 exit 1
38}
39
Mike Marchetticb6f74f2017-07-25 16:46:07 -040040function dump_vars() {
41 echo "incoming repo: $IN_REPO"
42 echo "outgoing repo: $OUT_REPO"
43 echo "GPGKEY: $GPGKEY"
44 echo "JFROG_CLI: $JFROG_CLI"
45 echo "REPO_BASE: $REPO_BASE"
46 echo "RELEASE_DIR: $RELEASE_DIR"
47 echo "BUILD: $BUILD"
48 echo "RSYNC_USER_HOST $RSYNC_USER_HOST"
49 echo "RSYNC_OPTIONS $RSYNC_OPTIONS"
Mike Marchetti1e980592017-07-27 15:43:44 -040050 echo "PUBLIC_KEY_FILE $PUBLIC_KEY_FILE"
Mike Marchetti0d567602017-09-29 14:30:28 -040051 echo "BUILD: $BUILD"
52 echo "BUILD_NUMBER: $BUILD_NUMBER"
Mike Marchetticb6f74f2017-07-25 16:46:07 -040053}
54
garciadeblasc16af7f2020-05-08 14:24:43 +000055MDG_REPOS="RO osmclient openvim SO UI IM devops MON N2VC NBI common POL PLA LW-UI NG-UI"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040056IN_REPO="unstable"
57OUT_REPO="stable"
58GPGKEY=71C0472C
59JFROG_CLI=~/jfrog
60REPO_BASE=repo
Mike Marchetticb6f74f2017-07-25 16:46:07 -040061RELEASE_DIR=ReleaseTWO
62RSYNC_USER_HOST=osmusers@osm-download.etsi.org
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040063CURR_DIR=$(pwd)
Mike Marchetti1e980592017-07-27 15:43:44 -040064PUBLIC_KEY_FILE=~/OSM\ ETSI\ Release\ Key.gpg
Mike Marchettif94dd8a2017-11-06 11:04:38 -050065CHANGE_LOG_FILE=
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040066
Mike Marchetti5eab1c02018-03-27 15:09:44 -040067while getopts ":p:i:o:k:j::d:b:r:h:R:P:c:m:" o; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -040068 case "${o}" in
69 p)
70 PASSPHRASE_FILE=${OPTARG}
71 ;;
72 i)
73 IN_REPO=${OPTARG}
74 ;;
75 o)
76 OUT_REPO=${OPTARG}
77 ;;
78 k)
79 GPGKEY=${OPTARG}
80 ;;
81 j)
82 JFROG_CLI=${OPTARG}
83 ;;
84 d)
85 BASE_DIR=${OPTARG}
86 ;;
Mike Marchetticb6f74f2017-07-25 16:46:07 -040087 b)
88 BUILD=${OPTARG}
89 ;;
90 r)
91 RELEASE_DIR=${OPTARG}
92 ;;
93 h)
94 RSYNC_USER_HOST=${OPTARG}
95 ;;
96 R)
97 RSYNC_OPTIONS=${OPTARG}
98 ;;
Mike Marchetti1e980592017-07-27 15:43:44 -040099 P)
100 PUBLIC_KEY_FILE=${OPTARG}
101 ;;
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500102 c)
103 CHANGE_LOG_FILE=${OPTARG}
104 ;;
Mike Marchetti5eab1c02018-03-27 15:09:44 -0400105 m)
106 MDG_REPOS=${OPTARG}
107 ;;
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400108 *)
109 usage
110 exit 1
111 ;;
112 esac
113done
114
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400115BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
116
117[ -z "$BUILD" ] && FATAL "missing option: -b <build>"
118
Mike Marchetti0d567602017-09-29 14:30:28 -0400119BUILD_NUMBER=$(echo "$BUILD" | sed -e 's/.*:: //g')
120
121dump_vars
122
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400123[ -x $JFROG_CLI ] || FATAL "jfrog cli not found. Please install https://www.jfrog.com/getcli/ and use option '-j <jfrog cli location>'"
124
125$JFROG_CLI rt download --build "$BUILD" osm-release || FATAL "Failed to download"
126
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400127
Mike Marchettic6d52752017-07-26 15:32:34 -0400128[ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-tty --no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400129
130mkdir -p $BASE_DIR/dists
131
132cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
133cp -R $BUILD_NUMBER/pool $BASE_DIR/
Mike Marchettibdc31282017-11-29 13:38:41 -0500134
135echo "copy changelog from $BUILD_NUMBER/changelog to $BASE_DIR/"
136cp -R $BUILD_NUMBER/changelog $BASE_DIR/
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400137
138cd $BASE_DIR
139
Mike Marchetti5eab1c02018-03-27 15:09:44 -0400140for i in $MDG_REPOS; do
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400141
142 # gpg sign the packages
143 dpkg-sig -g "$GPG_PASSPHRASE" -k $GPGKEY --sign builder pool/$i/*.deb
144
145 # mkdir -p dists/stable/$i/binary-amd64/
146 apt-ftparchive packages pool/$i > dists/$OUT_REPO/$i/binary-amd64/Packages
147 rm -f dists/$OUT_REPO/$i/binary-amd64/Packages.gz
148 gzip -9fk dists/$OUT_REPO/$i/binary-amd64/Packages
149done
150
151# Generate the root Release
152# pushd dists/
153apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
154#gzip -9fk dists/$OUT_REPO/Release
155
156rm -f dists/$OUT_REPO/InRelease
Mike Marchettic6d52752017-07-26 15:32:34 -0400157eval 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 -0400158
159rm -f dists/$OUT_REPO/Release.gpg
Mike Marchettic6d52752017-07-26 15:32:34 -0400160eval 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 -0400161
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400162echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
Mike Marchetti9cfcbca2017-07-25 11:54:01 -0400163cd $CURR_DIR/$REPO_BASE
164
Mike Marchetti1e980592017-07-27 15:43:44 -0400165# copy over the public key file
166[ "$PUBLIC_KEY_FILE" ] && cp "$PUBLIC_KEY_FILE" osm/debian/$RELEASE_DIR
167
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500168# copy over the changelog file
169[ "$CHANGE_LOG_FILE" ] && cp "$CHANGE_LOG_FILE" osm/debian/$RELEASE_DIR
170
Mike Marchetti41ae07e2018-10-02 09:19:36 -0400171IM_BASE="osm/debian/$RELEASE_DIR/pool/IM/osm-imdocs_"
172if ls "$IM_BASE"* 1> /dev/null 2>&1; then
173 IM_TMP_DIR=$(mktemp -d)
174 dpkg -x "$IM_BASE"* $IM_TMP_DIR
175 mkdir osm/debian/$RELEASE_DIR/docs
176 cp -R $IM_TMP_DIR/usr/share/osm-im osm/debian/$RELEASE_DIR/docs
177fi
178
Mike Marchetticb6f74f2017-07-25 16:46:07 -0400179rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos