Skip to content

Commit 5584739

Browse files
tomusdrw5chdn
authored andcommitted
Fix checksums and auto-update push (#7846)
* Re-enable auto-update for windows. Fail build on non 2xx response from updater. * Fix format of md5 and sha256 files. * Fix identation. * Add critical to metadata. * Add some logs. * Fix pushing build. * Attempt to fix release pushing. * Fix missing rhash? * Workaround broken rhash.
1 parent 8b0004b commit 5584739

File tree

6 files changed

+110
-60
lines changed

6 files changed

+110
-60
lines changed

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ trim_trailing_whitespace=true
99
max_line_length=120
1010
insert_final_newline=true
1111

12-
[.travis.yml]
12+
[*.{yml,sh}]
1313
indent_style=space
1414
indent_size=2
1515
tab_width=8

.gitlab-ci.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,6 @@ push-release:
239239
- triggers
240240
image: parity/rust:gitlab-ci
241241
script:
242-
- rustup default stable
243-
- curl --data "secret=$RELEASES_SECRET" http://update.parity.io:1337/push-release/$CI_BUILD_REF_NAME/$CI_BUILD_REF
244-
- curl --data "secret=$RELEASES_SECRET" http://update.parity.io:1338/push-release/$CI_BUILD_REF_NAME/$CI_BUILD_REF
242+
- scripts/gitlab-push-release.sh
245243
tags:
246244
- curl

scripts/gitlab-build.sh

+73-56
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ echo "Parity version: " $VER
2222
echo "Branch: " $CI_BUILD_REF_NAME
2323
echo "--------------------"
2424

25+
echo "Rhash version:"
26+
# NOTE for md5 and sha256 we want to display filename as well
27+
# hence we use --* instead of -p *
28+
MD5_BIN="rhash --md5"
29+
SHA256_BIN="rhash --sha256"
30+
# NOTE For SHA3 we need only hash (hence -p)
31+
SHA3_BIN="rhash -p %{sha3-256}"
32+
2533
set_env () {
2634
echo "Set ENVIROMENT"
2735
export HOST_CC=gcc
@@ -52,26 +60,34 @@ build () {
5260
echo "Build ethkey-cli:"
5361
cargo build --target $PLATFORM --release -p ethkey-cli
5462
}
55-
strip_md5 () {
63+
strip_binaries () {
5664
echo "Strip binaries:"
5765
$STRIP_BIN -v target/$PLATFORM/release/parity
5866
$STRIP_BIN -v target/$PLATFORM/release/parity-evm
5967
$STRIP_BIN -v target/$PLATFORM/release/ethstore
6068
$STRIP_BIN -v target/$PLATFORM/release/ethkey;
61-
export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h)
69+
}
70+
calculate_checksums () {
6271
echo "Checksum calculation:"
72+
rhash --version
6373
rm -rf *.md5
6474
rm -rf *.sha256
65-
export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h)
66-
echo "Parity file SHA3:" $SHA3
67-
md5sum target/$PLATFORM/release/parity > parity.md5
68-
sha256sum target/$PLATFORM/release/parity > parity.sha256
69-
md5sum target/$PLATFORM/release/parity-evm > parity-evm.md5
70-
sha256sum target/$PLATFORM/release/parity-evm > parity-evm.sha256
71-
md5sum target/$PLATFORM/release/ethstore > ethstore.md5
72-
sha256sum target/$PLATFORM/release/ethstore > ethstore.sha256
73-
md5sum target/$PLATFORM/release/ethkey > ethkey.md5
74-
sha256sum target/$PLATFORM/release/ethkey > ethkey.sha256
75+
76+
export SHA3="$($SHA3_BIN target/$PLATFORM/release/parity$S3WIN)"
77+
# NOTE rhash 1.3.1 doesnt support keccak, workaround
78+
if [ "$SHA3" == "%{sha3-256}" ]; then
79+
export SHA3="$(target/$PLATFORM/release/parity$S3WIN tools hash target/$PLATFORM/release/parity$S3WIN)"
80+
fi
81+
82+
echo "Parity file SHA3: $SHA3"
83+
$MD5_BIN target/$PLATFORM/release/parity$S3WIN > parity$S3WIN.md5
84+
$SHA256_BIN target/$PLATFORM/release/parity$S3WIN > parity$S3WIN.sha256
85+
$MD5_BIN target/$PLATFORM/release/parity-evm$S3WIN > parity-evm$S3WIN.md5
86+
$SHA256_BIN target/$PLATFORM/release/parity-evm$S3WIN > parity-evm$S3WIN.sha256
87+
$MD5_BIN target/$PLATFORM/release/ethstore$S3WIN > ethstore$S3WIN.md5
88+
$SHA256_BIN target/$PLATFORM/release/ethstore$S3WIN > ethstore$S3WIN.sha256
89+
$MD5_BIN target/$PLATFORM/release/ethkey$S3WIN > ethkey$S3WIN.md5
90+
$SHA256_BIN target/$PLATFORM/release/ethkey$S3WIN > ethkey$S3WIN.sha256
7591
}
7692
make_deb () {
7793
rm -rf deb
@@ -106,8 +122,8 @@ make_deb () {
106122
cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore
107123
cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey
108124
dpkg-deb -b deb "parity_"$VER"_"$IDENT"_"$ARC".deb"
109-
md5sum "parity_"$VER"_"$IDENT"_"$ARC".deb" > "parity_"$VER"_"$IDENT"_"$ARC".deb.md5"
110-
sha256sum "parity_"$VER"_"$IDENT"_"$ARC".deb" > "parity_"$VER"_"$IDENT"_"$ARC".deb.sha256"
125+
$MD5_BIN "parity_"$VER"_"$IDENT"_"$ARC".deb" > "parity_"$VER"_"$IDENT"_"$ARC".deb.md5"
126+
$SHA256_BIN "parity_"$VER"_"$IDENT"_"$ARC".deb" > "parity_"$VER"_"$IDENT"_"$ARC".deb.sha256"
111127
}
112128
make_rpm () {
113129
rm -rf /install
@@ -116,10 +132,12 @@ make_rpm () {
116132
cp target/$PLATFORM/release/parity-evm /install/usr/bin/parity-evm
117133
cp target/$PLATFORM/release/ethstore /install/usr/bin/ethstore
118134
cp target/$PLATFORM/release/ethkey /install/usr/bin/ethkey
135+
136+
rm -rf "parity-"$VER"-1."$ARC".rpm" || true
119137
fpm -s dir -t rpm -n parity -v $VER --epoch 1 --license GPLv3 -d openssl --provides parity --url https://parity.io --vendor "Parity Technologies" -a x86_64 -m "<[email protected]>" --description "Ethereum network client by Parity Technologies" -C /install/
120138
cp "parity-"$VER"-1."$ARC".rpm" "parity_"$VER"_"$IDENT"_"$ARC".rpm"
121-
md5sum "parity_"$VER"_"$IDENT"_"$ARC".rpm" > "parity_"$VER"_"$IDENT"_"$ARC".rpm.md5"
122-
sha256sum "parity_"$VER"_"$IDENT"_"$ARC".rpm" > "parity_"$VER"_"$IDENT"_"$ARC".rpm.sha256"
139+
$MD5_BIN "parity_"$VER"_"$IDENT"_"$ARC".rpm" > "parity_"$VER"_"$IDENT"_"$ARC".rpm.md5"
140+
$SHA256_BIN "parity_"$VER"_"$IDENT"_"$ARC".rpm" > "parity_"$VER"_"$IDENT"_"$ARC".rpm.sha256"
123141
}
124142
make_pkg () {
125143
echo "make PKG"
@@ -133,24 +151,13 @@ make_pkg () {
133151
packagesbuild -v mac/Parity.pkgproj
134152
productsign --sign 'Developer ID Installer: PARITY TECHNOLOGIES LIMITED (P2PX3JU8FT)' target/release/Parity\ Ethereum.pkg target/release/Parity\ Ethereum-signed.pkg
135153
mv target/release/Parity\ Ethereum-signed.pkg "parity_"$VER"_"$ARC".pkg"
136-
md5sum "parity_"$VER"_"$ARC"."$EXT >> "parity_"$VER"_"$ARC".pkg.md5"
137-
sha256sum "parity_"$VER"_"$ARC"."$EXT >> "parity_"$VER"_"$ARC".pkg.sha256"
154+
$MD5_BIN "parity_"$VER"_"$ARC"."$EXT >> "parity_"$VER"_"$ARC".pkg.md5"
155+
$SHA256_BIN "parity_"$VER"_"$ARC"."$EXT >> "parity_"$VER"_"$ARC".pkg.sha256"
138156
}
139-
make_exe () {
157+
sign_exe () {
140158
./sign.cmd $keyfile $certpass "target/$PLATFORM/release/parity.exe"
141-
SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity.exe -p %h)
142-
echo "Checksum calculation:"
143-
rm -rf *.md5
144-
rm -rf *.sha256
145-
echo "Parity file SHA3:" $SHA3
146-
rhash --md5 target/$PLATFORM/release/parity.exe -p %h > parity.exe.md5
147-
rhash --sha256 target/$PLATFORM/release/parity.exe -p %h > parity.exe.sha256
148-
rhash --md5 target/$PLATFORM/release/parity-evm.exe -p %h > parity-evm.exe.md5
149-
rhash --sha256 target/$PLATFORM/release/parity-evm.exe -p %h > parity-evm.exe.sha256
150-
rhash --md5 target/$PLATFORM/release/ethstore.exe -p %h > ethstore.exe.md5
151-
rhash --sha256 target/$PLATFORM/release/ethstore.exe -p %h > ethstore.exe.sha256
152-
rhash --md5 target/$PLATFORM/release/ethkey.exe -p %h > ethkey.exe.md5
153-
rhash --sha256 target/$PLATFORM/release/ethkey.exe -p %h > ethkey.exe.sha256
159+
}
160+
make_exe () {
154161
./msbuild.cmd
155162
./sign.cmd $keyfile $certpass windows/ptray/x64/release/ptray.exe
156163
cd nsis
@@ -160,8 +167,8 @@ make_exe () {
160167
cd ..
161168
cp nsis/installer.exe "parity_"$VER"_"$IDENT"_"$ARC"."$EXT
162169
./sign.cmd $keyfile $certpass "parity_"$VER"_"$IDENT"_"$ARC"."$EXT
163-
rhash --md5 "parity_"$VER"_"$IDENT"_"$ARC"."$EXT -p %h > "parity_"$VER"_"$IDENT"_"$ARC"."$EXT".md5"
164-
rhash --sha256 "parity_"$VER"_"$IDENT"_"$ARC"."$EXT -p %h > "parity_"$VER"_"$IDENT"_"$ARC"."$EXT".sha256"
170+
$MD5_BIN "parity_"$VER"_"$IDENT"_"$ARC"."$EXT -p %h > "parity_"$VER"_"$IDENT"_"$ARC"."$EXT".md5"
171+
$SHA256_BIN "parity_"$VER"_"$IDENT"_"$ARC"."$EXT -p %h > "parity_"$VER"_"$IDENT"_"$ARC"."$EXT".sha256"
165172
}
166173
push_binaries () {
167174
echo "Push binaries to AWS S3"
@@ -195,100 +202,108 @@ make_archive () {
195202
rm -rf parity.zip
196203
zip -r parity.zip target/$PLATFORM/release/parity$S3WIN target/$PLATFORM/release/parity-evm$S3WIN target/$PLATFORM/release/ethstore$S3WIN target/$PLATFORM/release/ethkey$S3WIN parity$S3WIN.md5 parity-evm$S3WIN.md5 ethstore$S3WIN.md5 ethkey$S3WIN.md5 parity$S3WIN.sha256 parity-evm$S3WIN.sha256 ethstore$S3WIN.sha256 ethkey$S3WIN.sha256
197204
}
198-
push_release () {
205+
206+
updater_push_release () {
199207
echo "push release"
200-
curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM
201-
curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM
208+
209+
DATA="commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity$S3WIN&secret=$RELEASES_SECRET"
210+
# Mainnet
211+
source scripts/safe_curl.sh $DATA "http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$BUILD_PLATFORM"
212+
# Kovan
213+
source scripts/safe_curl.sh $DATA "http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$BUILD_PLATFORM"
202214
}
215+
203216
case $BUILD_PLATFORM in
204217
x86_64-unknown-linux-gnu)
205218
#set strip bin
206219
STRIP_BIN="strip"
207220
#package extention
208221
EXT="deb"
209222
build
210-
strip_md5
223+
strip_binaries
224+
calculate_checksums
211225
make_deb
212226
make_archive
213227
push_binaries
214-
push_release
228+
updater_push_release
215229
;;
216230
x86_64-unknown-debian-gnu)
217231
STRIP_BIN="strip"
218232
EXT="deb"
219233
LIBSSL="libssl1.1 (>=1.1.0)"
220234
echo "Use libssl1.1 (>=1.1.0) for Debian builds"
221235
build
222-
strip_md5
236+
strip_binaries
237+
calculate_checksums
223238
make_deb
224239
make_archive
225240
push_binaries
226-
push_release
227241
;;
228242
x86_64-unknown-centos-gnu)
229243
STRIP_BIN="strip"
230244
EXT="rpm"
231245
build
232-
strip_md5
246+
strip_binaries
247+
calculate_checksums
233248
make_rpm
234249
make_archive
235250
push_binaries
236-
push_release
237251
;;
238252
i686-unknown-linux-gnu)
239253
STRIP_BIN="strip"
240254
EXT="deb"
241255
set_env
242256
build
243-
strip_md5
257+
strip_binaries
258+
calculate_checksums
244259
make_deb
245260
make_archive
246261
push_binaries
247-
push_release
248262
;;
249263
armv7-unknown-linux-gnueabihf)
250264
STRIP_BIN="arm-linux-gnueabihf-strip"
251265
EXT="deb"
252266
set_env
253267
build
254-
strip_md5
268+
strip_binaries
269+
calculate_checksums
255270
make_deb
256271
make_archive
257272
push_binaries
258-
push_release
259273
;;
260274
arm-unknown-linux-gnueabihf)
261275
STRIP_BIN="arm-linux-gnueabihf-strip"
262276
EXT="deb"
263277
set_env
264278
build
265-
strip_md5
279+
strip_binaries
280+
calculate_checksums
266281
make_deb
267282
make_archive
268283
push_binaries
269-
push_release
270284
;;
271285
aarch64-unknown-linux-gnu)
272286
STRIP_BIN="aarch64-linux-gnu-strip"
273287
EXT="deb"
274288
set_env
275289
build
276-
strip_md5
290+
strip_binaries
291+
calculate_checksums
277292
make_deb
278293
make_archive
279294
push_binaries
280-
push_release
281295
;;
282296
x86_64-apple-darwin)
283297
STRIP_BIN="strip"
284298
PLATFORM="x86_64-apple-darwin"
285299
EXT="pkg"
286300
build
287-
strip_md5
301+
strip_binaries
302+
calculate_checksums
288303
make_pkg
289304
make_archive
290305
push_binaries
291-
push_release
306+
updater_push_release
292307
;;
293308
x86_64-unknown-snap-gnu)
294309
cd snap
@@ -298,17 +313,19 @@ case $BUILD_PLATFORM in
298313
sed -i 's/master/'"$VER"'/g' snapcraft.yaml
299314
snapcraft
300315
cp "parity_"$CI_BUILD_REF_NAME"_amd64.snap" "parity_"$VER"_amd64.snap"
301-
md5sum "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.md5"
302-
sha256sum "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.sha256"
316+
$MD5_BIN "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.md5"
317+
$SHA256_BIN "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.sha256"
303318
push_binaries
304319
;;
305320
x86_64-pc-windows-msvc)
306321
set_env_win
307322
EXT="exe"
308323
S3WIN=".exe"
309324
build
325+
sign_exe
326+
calculate_checksums
310327
make_exe
311328
make_archive
312329
push_binaries
313-
push_release
330+
updater_push_release
314331
esac

scripts/gitlab-push-release.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
set -e # fail on any error
4+
set -u # treat unset variables as error
5+
6+
DATA="secret=$RELEASES_SECRET"
7+
8+
echo "Pushing release to Mainnet"
9+
./scripts/safe_curl.sh $DATA "http://update.parity.io:1337/push-release/$CI_BUILD_REF_NAME/$CI_BUILD_REF"
10+
11+
echo "Pushing release to Kovan"
12+
./scripts/safe_curl.sh $DATA "http://update.parity.io:1338/push-release/$CI_BUILD_REF_NAME/$CI_BUILD_REF"

scripts/safe_curl.sh

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
DATA=$1
6+
ADDRESS=$2
7+
8+
CODE=$(curl -o out.txt -w '%{http_code}' --data $DATA $ADDRESS)
9+
cat out.txt && rm out.txt
10+
echo "\n"
11+
12+
if [[ $CODE -eq 200 ]]; then
13+
echo 'Pushed to updater service.';
14+
elif [[ $CODE -eq 202 ]]; then
15+
echo 'Updater service ignored request.';
16+
else
17+
echo 'Unable to push info to updater service.';
18+
exit 2
19+
fi
20+

util/version/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ build = "build.rs"
1212
# Used by auto-updater and for Parity version string.
1313
track = "nightly"
1414

15+
# Indicates a critical release in this track (i.e. consensus issue)
16+
critical = false
17+
1518
# Latest supported fork blocks for various networks. Used ONLY by auto-updater.
1619
[package.metadata.forks]
1720
foundation = 4370000

0 commit comments

Comments
 (0)