update rsync options
[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 exit 1
17 }
18
19 function FATAL() {
20 echo -e $1
21 exit 1
22 }
23
24 function 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
36 IN_REPO="unstable"
37 OUT_REPO="stable"
38 GPGKEY=71C0472C
39 JFROG_CLI=~/jfrog
40 REPO_BASE=repo
41 RELEASE_DIR=ReleaseTWO
42 RSYNC_USER_HOST=osmusers@osm-download.etsi.org
43 CURR_DIR=$(pwd)
44
45 while getopts ":p:i:o:k:j::d:b:r:h:R:" o; do
46 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 ;;
65 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 ;;
77 *)
78 usage
79 exit 1
80 ;;
81 esac
82 done
83
84 dump_vars
85
86 BASE_DIR=$REPO_BASE/osm/debian/$RELEASE_DIR
87
88 [ -z "$BUILD" ] && FATAL "missing option: -b <build>"
89
90 [ -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
94 BUILD_NUMBER=$(basename "$BUILD")
95
96 [ $PASSPHRASE_FILE ] && GPG_PASSPHRASE="--no-use-agent --passphrase \"$(cat $PASSPHRASE_FILE)\""
97
98 mkdir -p $BASE_DIR/dists
99
100 cp -R $BUILD_NUMBER/dists/$IN_REPO $BASE_DIR/dists/$OUT_REPO
101 cp -R $BUILD_NUMBER/pool $BASE_DIR/
102
103 cd $BASE_DIR
104
105 for 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
114 done
115
116 # Generate the root Release
117 # pushd dists/
118 apt-ftparchive release dists/$OUT_REPO > dists/$OUT_REPO/Release
119 #gzip -9fk dists/$OUT_REPO/Release
120
121 rm -f dists/$OUT_REPO/InRelease
122 eval gpg $GPG_PASSPHRASE --default-key $GPGKEY --clearsign -o dists/$OUT_REPO/InRelease dists/$OUT_REPO/Release
123
124 rm -f dists/$OUT_REPO/Release.gpg
125 eval gpg $GPG_PASSPHRASE --default-key $GPGKEY -abs -o dists/$OUT_REPO/Release.gpg dists/$OUT_REPO/Release
126
127
128 echo "performing rsync of repo $RELEASE_DIR/dist/$OUT_REPO to osm-download.etsi.org:/repos/"
129 cd $CURR_DIR/$REPO_BASE
130
131 rsync -avR $RSYNC_OPTIONS osm/debian/$RELEASE_DIR rsync://$RSYNC_USER_HOST/repos