stage_4 support
[osm/devops.git] / tools / gen-repo.sh
1 #!/bin/bash
2
3 function 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> "
12 echo -e " -b <build> "
13 echo -e " -r <release dir> "
14 echo -e " -h <rsync user@host> "
15 echo -e " -R <rsync options> "
16 echo -e " -P <public key file> "
17 echo -e " -c <changelogfile> "
18 exit 1
19 }
20
21 function FATAL() {
22 echo -e $1
23 exit 1
24 }
25
26 function dump_vars() {
27 echo "incoming repo: $IN_REPO"
28 echo "outgoing repo: $OUT_REPO"
29 echo "GPGKEY: $GPGKEY"
30 echo "JFROG_CLI: $JFROG_CLI"
31 echo "REPO_BASE: $REPO_BASE"
32 echo "RELEASE_DIR: $RELEASE_DIR"
33 echo "BUILD: $BUILD"
34 echo "RSYNC_USER_HOST $RSYNC_USER_HOST"
35 echo "RSYNC_OPTIONS $RSYNC_OPTIONS"
36 echo "PUBLIC_KEY_FILE $PUBLIC_KEY_FILE"
37 echo "BUILD: $BUILD"
38 echo "BUILD_NUMBER: $BUILD_NUMBER"
39 }
40
41 IN_REPO="unstable"
42 OUT_REPO="stable"
43 GPGKEY=71C0472C
44 JFROG_CLI=~/jfrog
45 REPO_BASE=repo
46 RELEASE_DIR=ReleaseTWO
47 RSYNC_USER_HOST=osmusers@osm-download.etsi.org
48 CURR_DIR=$(pwd)
49 PUBLIC_KEY_FILE=~/OSM\ ETSI\ Release\ Key.gpg
50 CHANGE_LOG_FILE=
51
52 while getopts ":p:i:o:k:j::d:b:r:h:R:P:c:" o; do
53 case "${o}" in
54 p)
55 PASSPHRASE_FILE=${OPTARG}
56 ;;
57 i)
58 IN_REPO=${OPTARG}
59 ;;
60 o)
61 OUT_REPO=${OPTARG}
62 ;;
63 k)
64 GPGKEY=${OPTARG}
65 ;;
66 j)
67 JFROG_CLI=${OPTARG}
68 ;;
69 d)
70 BASE_DIR=${OPTARG}
71 ;;
72 b)
73 BUILD=${OPTARG}
74 ;;
75 r)
76 RELEASE_DIR=${OPTARG}
77 ;;
78 h)
79 RSYNC_USER_HOST=${OPTARG}
80 ;;
81 R)
82 RSYNC_OPTIONS=${OPTARG}
83 ;;
84 P)
85 PUBLIC_KEY_FILE=${OPTARG}
86 ;;
87 c)
88 CHANGE_LOG_FILE=${OPTARG}
89 ;;
90 *)
91 usage
92 exit 1
93 ;;
94 esac
95 done
96
97 BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
98
99 [ -z "$BUILD" ] && FATAL "missing option: -b <build>"
100
101 BUILD_NUMBER=$(echo "$BUILD" | sed -e 's/.*:: //g')
102
103 dump_vars
104
105 [ -x $JFROG_CLI ] || FATAL "jfrog cli not found. Please install https://www.jfrog.com/getcli/ and use option '-j <jfrog cli location>'"
106
107 $JFROG_CLI rt download --build "$BUILD" osm-release || FATAL "Failed to download"
108
109
110 [ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-tty --no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
111
112 mkdir -p $BASE_DIR/dists
113
114 cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
115 cp -R $BUILD_NUMBER/pool $BASE_DIR/
116
117 cd $BASE_DIR
118
119 for i in RO osmclient openvim SO UI IM; do
120
121 # gpg sign the packages
122 dpkg-sig -g "$GPG_PASSPHRASE" -k $GPGKEY --sign builder pool/$i/*.deb
123
124 # mkdir -p dists/stable/$i/binary-amd64/
125 apt-ftparchive packages pool/$i > dists/$OUT_REPO/$i/binary-amd64/Packages
126 rm -f dists/$OUT_REPO/$i/binary-amd64/Packages.gz
127 gzip -9fk dists/$OUT_REPO/$i/binary-amd64/Packages
128 done
129
130 # Generate the root Release
131 # pushd dists/
132 apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
133 #gzip -9fk dists/$OUT_REPO/Release
134
135 rm -f dists/$OUT_REPO/InRelease
136 eval gpg $GPG_PASSPHRASE --no-tty --default-key $GPGKEY --clearsign -o dists/$OUT_REPO/InRelease dists/$OUT_REPO/Release
137
138 rm -f dists/$OUT_REPO/Release.gpg
139 eval gpg $GPG_PASSPHRASE --no-tty --default-key $GPGKEY -abs -o dists/$OUT_REPO/Release.gpg dists/$OUT_REPO/Release
140
141 echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
142 cd $CURR_DIR/$REPO_BASE
143
144 # copy over the public key file
145 [ "$PUBLIC_KEY_FILE" ] && cp "$PUBLIC_KEY_FILE" osm/debian/$RELEASE_DIR
146
147 # copy over the changelog file
148 [ "$CHANGE_LOG_FILE" ] && cp "$CHANGE_LOG_FILE" osm/debian/$RELEASE_DIR
149
150 rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos