Skip to content

Commit b748ba7

Browse files
authored
Ci update (dimxy#123)
1 parent 09345b2 commit b748ba7

File tree

2 files changed

+233
-34
lines changed

2 files changed

+233
-34
lines changed

.gitlab-ci.yml

+39-32
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ stages:
55

66
variables:
77
VERSION: 0.3.13
8-
VERUS_CLI_LINUX: "verus-cli-linux-v${VERSION}-beta.tar.gz"
9-
VERUS_CLI_WINDOWS: "verus-cli-windows-v${VERSION}-beta.zip"
10-
VERUS_CLI_MACOS: "verus-cli-mac-v${VERSION}-beta.tar.gz"
11-
POST_COMMENT: "Branch: ${CI_COMMIT_REF_NAME} Commit: ${CI_COMMIT_SHA}"
8+
VERUS_CLI_LINUX: "Verus-CLI-Linux-v${VERSION}-beta.tar.gz"
9+
VERUS_CLI_WINDOWS: "Verus-CLI-Windows-v${VERSION}-beta.zip"
10+
VERUS_CLI_MACOS: "Verus-CLI-MacOS-v${VERSION}-beta.tar.gz"
11+
POST_COMMENT: "Branch and Commit: ${CI_COMMIT_REF_NAME} ${CI_COMMIT_SHA} $'\n'MD5: "
1212

1313
build:linux:
1414
image: asherd/veruscoin-cross-compiler:linux
@@ -22,12 +22,14 @@ build:linux:
2222
- zcutil/build.sh -j4
2323
- cp src/komodod src/komodo-cli kmd/linux/verus-cli
2424
- chmod +x kmd/linux/verus-cli/komodod
25-
kmd/linux/verus-cli/komodo-cli
26-
kmd/linux/verus-cli/verus
27-
kmd/linux/verus-cli/verusd
28-
kmd/linux/verus-cli/fetch-params
25+
- chmod +x kmd/linux/verus-cli/komodo-cli
26+
- chmod +x kmd/linux/verus-cli/verus
27+
- chmod +x kmd/linux/verus-cli/verusd
28+
- chmod +x kmd/linux/verus-cli/fetch-params
2929
- dos2unix kmd/linux/verus-cli/README.txt
30-
- tar -C kmd/linux/ -czvf $VERUS_CLI_LINUX verus-cli ./
30+
- cd kmd/linux/
31+
- tar -czvf $VERUS_CLI_LINUX verus-cli
32+
- mv $VERUS_CLI_LINUX ../..
3133
after_script:
3234
- mv /root/.ccache ./ || true
3335
cache:
@@ -78,16 +80,16 @@ build:mac:
7880
- depends/built
7981
script:
8082
- brew bundle
81-
- zcutil/build-mac.sh | xcpretty
82-
- ./makeReleaseMac.sh -j6
83+
- zcutil/build-mac.sh -j6 | xcpretty
84+
- ./makeReleaseMac.sh
8385
- dos2unix kmd/mac/verus-cli/README.txt
8486
- tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS verus-cli ./
8587
artifacts:
8688
paths: [$VERUS_CLI_MACOS]
8789
expire_in: 1 week
8890

8991

90-
code_quality:
92+
.code_quality:
9193
image: docker:stable
9294
variables:
9395
DOCKER_DRIVER: overlay2
@@ -105,7 +107,7 @@ code_quality:
105107
paths: [gl-code-quality-report.json]
106108

107109

108-
sast:
110+
.sast:
109111
image: docker:stable
110112
variables:
111113
DOCKER_DRIVER: overlay2
@@ -124,7 +126,7 @@ sast:
124126

125127

126128

127-
license_management:
129+
.license_management:
128130
image: docker:stable
129131
variables:
130132
DOCKER_DRIVER: overlay2
@@ -140,7 +142,7 @@ license_management:
140142
paths: [gl-license-management-report.json]
141143

142144

143-
ubuntu:xenial:
145+
.ubuntu:xenial:
144146
image: ubuntu:xenial
145147
variables:
146148
DOCKER_DRIVER: overlay2
@@ -165,7 +167,7 @@ ubuntu:xenial:
165167
- build:linux
166168

167169

168-
ubuntu:bionic:
170+
.ubuntu:bionic:
169171
image: ubuntu:bionic
170172
variables:
171173
DOCKER_DRIVER: overlay2
@@ -241,36 +243,41 @@ deploy:
241243
- build:linux
242244
- build:windows
243245
- build:mac
246+
before_script:
247+
- export VERUS_CLI_LINUX_MD5=$(md5sum $VERUS_CLI_LINUX | cut -d " " -f 1)
248+
- export VERUS_CLI_WINDOWS_MD5=$(md5sum $VERUS_CLI_WINDOWS | cut -d " " -f 1)
249+
- export VERUS_CLI_MACOS_MD5=$(md5sum $VERUS_CLI_MACOS | cut -d " " -f 1)
244250
script:
251+
- export VERUS_CLI_LINUX_MD5=$(md5sum $VERUS_CLI_LINUX | cut -d " " -f 1)
245252
- curl -F file=@"$VERUS_CLI_LINUX"
246253
-F channels="$CLI_POST_CHANNEL"
247-
-F initial_comment="${POST_COMMENT}"
254+
-F initial_comment="${POST_COMMENT}$VERUS_CLI_LINUX_MD5"
248255
-H "${SLACK_BOT_AUTH}"
249256
"https://slack.com/api/files.upload"
250257
- curl -F file=@"$VERUS_CLI_WINDOWS"
251258
-F channels="$CLI_POST_CHANNEL"
252-
-F initial_comment="${POST_COMMENT}"
259+
-F initial_comment="${POST_COMMENT}$VERUS_CLI_WINDOWS_MD5"
253260
-H "${SLACK_BOT_AUTH}"
254261
"https://slack.com/api/files.upload"
255262
- curl -F file=@"$VERUS_CLI_MACOS"
256263
-F channels="$CLI_POST_CHANNEL"
257-
-F initial_comment="${POST_COMMENT}"
264+
-F initial_comment="${POST_COMMENT}$VERUS_CLI_MACOS_MD5"
258265
-H "${SLACK_BOT_AUTH}"
259266
"https://slack.com/api/files.upload"
260-
- mkdir Windows
261-
- mkdir Linux
262-
- mkdir MacOS
263-
- mv $VERUS_CLI_WINDOWS Windows
264-
- mv $VERUS_CLI_LINUX Linux
265-
- mv $VERUS_CLI_MACOS MacOS
266-
- echo "$AUTH_KEY" > AUTH_KEY.json
267-
- gcloud auth activate-service-account
268-
--key-file AUTH_KEY.json
267+
- mkdir Windows && mkdir Linux && mkdir MacOS &&
268+
mv $VERUS_CLI_WINDOWS Windows &&
269+
mv $VERUS_CLI_LINUX Linux &&
270+
mv $VERUS_CLI_MACOS MacOS
271+
- echo "$AUTH_KEY" > AUTH_KEY.json &&
272+
gcloud auth activate-service-account
273+
--key-file AUTH_KEY.json
269274
- gsutil cp -r Windows Linux MacOS $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/
270275
- curl -X POST
271276
-F token="$CI_JOB_TOKEN"
272-
-F ref=master
273-
-F variables\[CLI_VERSION\]="$VERSION"
274-
-F variables\[AGAMA_VERSION\]="$VERSION"
275-
"https://gitlab.com/api/v4/projects/8018638/trigger/pipeline"
277+
-F ref=dev
278+
-F variables\[UPSTREAM_CLI_BRANCH\]="$CI_COMMIT_REF_NAME"
279+
-F variables\[VERUS_CLI_LINUX\]="$VERUS_CLI_LINUX"
280+
-F variables\[VERUS_CLI_WINDOWS\]="$VERUS_CLI_WINDOWS"
281+
-F variables\[VERUS_CLI_MACOS\]="$VERUS_CLI_MACOS"
282+
"https://gitlab.com/api/v4/projects/8018592/trigger/pipeline"
276283

kmd/mac/verus-cli/fetch-params

+194-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,199 @@
11
#!/bin/bash
22

33
set -eu
4-
curl "https://z.cash/downloads/sprout-proving.key" -o "$HOME/Library/Application Support/ZcashParams/sprout-proving.key"
5-
curl "https://z.cash/downloads/sprout-verifying.key" -o "$HOME/Library/Application Support/ZcashParams/sprout-verifying.key"
64

5+
if [[ "$OSTYPE" == "darwin"* ]]; then
6+
PARAMS_DIR="$HOME/Library/Application Support/ZcashParams"
7+
else
8+
PARAMS_DIR="$HOME/.zcash-params"
9+
fi
710

11+
SPROUT_PKEY_NAME='sprout-proving.key'
12+
SPROUT_VKEY_NAME='sprout-verifying.key'
13+
SAPLING_SPEND_NAME='sapling-spend.params'
14+
SAPLING_OUTPUT_NAME='sapling-output.params'
15+
SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params'
16+
SPROUT_URL="https://z.cash/downloads"
17+
SPROUT_IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo"
18+
19+
SHA256CMD="$(command -v sha256sum || echo shasum)"
20+
SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')"
21+
22+
WGETCMD="$(command -v wget || echo '')"
23+
IPFSCMD="$(command -v ipfs || echo '')"
24+
CURLCMD="$(command -v curl || echo '')"
25+
26+
# fetch methods can be disabled with ZC_DISABLE_SOMETHING=1
27+
ZC_DISABLE_WGET="${ZC_DISABLE_WGET:-}"
28+
ZC_DISABLE_IPFS="${ZC_DISABLE_IPFS:-}"
29+
ZC_DISABLE_CURL="${ZC_DISABLE_CURL:-}"
30+
31+
function fetch_wget {
32+
if [ -z "$WGETCMD" ] || ! [ -z "$ZC_DISABLE_WGET" ]; then
33+
return 1
34+
fi
35+
36+
local filename="$1"
37+
local dlname="$2"
38+
39+
cat <<EOF
40+
Retrieving (wget): $SPROUT_URL/$filename
41+
EOF
42+
43+
wget \
44+
--progress=dot:giga \
45+
--output-document="$dlname" \
46+
--continue \
47+
--retry-connrefused --waitretry=3 --timeout=30 \
48+
"$SPROUT_URL/$filename"
49+
}
50+
51+
function fetch_ipfs {
52+
if [ -z "$IPFSCMD" ] || ! [ -z "$ZC_DISABLE_IPFS" ]; then
53+
return 1
54+
fi
55+
56+
local filename="$1"
57+
local dlname="$2"
58+
59+
cat <<EOF
60+
Retrieving (ipfs): $SPROUT_IPFS/$filename
61+
EOF
62+
63+
ipfs get --output "$dlname" "$SPROUT_IPFS/$filename"
64+
}
65+
66+
function fetch_curl {
67+
if [ -z "$CURLCMD" ] || ! [ -z "$ZC_DISABLE_CURL" ]; then
68+
return 1
69+
fi
70+
71+
local filename="$1"
72+
local dlname="$2"
73+
74+
cat <<EOF
75+
Retrieving (curl): $SPROUT_URL/$filename
76+
EOF
77+
78+
curl \
79+
--output "$dlname" \
80+
-# -L -C - \
81+
"$SPROUT_URL/$filename"
82+
83+
}
84+
85+
function fetch_failure {
86+
cat >&2 <<EOF
87+
Failed to fetch the Zcash zkSNARK parameters!
88+
Try installing one of the following programs and make sure you're online:
89+
* ipfs
90+
* wget
91+
* curl
92+
EOF
93+
exit 1
94+
}
95+
96+
function fetch_params {
97+
local filename="$1"
98+
local output="$2"
99+
local dlname="${output}.dl"
100+
local expectedhash="$3"
101+
102+
if ! [ -f "$output" ]
103+
then
104+
for method in wget ipfs curl failure; do
105+
if "fetch_$method" "$filename" "$dlname"; then
106+
echo "Download successful!"
107+
break
108+
fi
109+
done
110+
111+
"$SHA256CMD" $SHA256ARGS -c <<EOF
112+
$expectedhash $dlname
113+
EOF
114+
115+
# Check the exit code of the shasum command:
116+
CHECKSUM_RESULT=$?
117+
if [ $CHECKSUM_RESULT -eq 0 ]; then
118+
mv -v "$dlname" "$output"
119+
else
120+
echo "Failed to verify parameter checksums!" >&2
121+
exit 1
122+
fi
123+
fi
124+
}
125+
126+
# Use flock to prevent parallel execution.
127+
function lock() {
128+
local lockfile=/tmp/fetch_params.lock
129+
if [[ "$OSTYPE" == "darwin"* ]]; then
130+
if shlock -f ${lockfile} -p $$; then
131+
return 0
132+
else
133+
return 1
134+
fi
135+
else
136+
# create lock file
137+
eval "exec 200>$lockfile"
138+
# acquire the lock
139+
flock -n 200 \
140+
&& return 0 \
141+
|| return 1
142+
fi
143+
}
144+
145+
function exit_locked_error {
146+
echo "Only one instance of fetch-params.sh can be run at a time." >&2
147+
exit 1
148+
}
149+
150+
function main() {
151+
152+
lock fetch-params.sh \
153+
|| exit_locked_error
154+
155+
cat <<EOF
156+
Zcash - fetch-params.sh
157+
This script will fetch the Zcash zkSNARK parameters and verify their
158+
integrity with sha256sum.
159+
If they already exist locally, it will exit now and do nothing else.
160+
EOF
161+
162+
# Now create PARAMS_DIR and insert a README if necessary:
163+
if ! [ -d "$PARAMS_DIR" ]
164+
then
165+
mkdir -p "$PARAMS_DIR"
166+
README_PATH="$PARAMS_DIR/README"
167+
cat >> "$README_PATH" <<EOF
168+
This directory stores common Zcash zkSNARK parameters. Note that it is
169+
distinct from the daemon's -datadir argument because the parameters are
170+
large and may be shared across multiple distinct -datadir's such as when
171+
setting up test networks.
172+
EOF
173+
174+
# This may be the first time the user's run this script, so give
175+
# them some info, especially about bandwidth usage:
176+
cat <<EOF
177+
The parameters are currently just under 911MB in size, so plan accordingly
178+
for your bandwidth constraints. If the files are already present and
179+
have the correct sha256sum, no networking is used.
180+
Creating params directory. For details about this directory, see:
181+
$README_PATH
182+
EOF
183+
fi
184+
185+
cd "$PARAMS_DIR"
186+
187+
# Sprout parameters:
188+
fetch_params "$SPROUT_PKEY_NAME" "$PARAMS_DIR/$SPROUT_PKEY_NAME" "8bc20a7f013b2b58970cddd2e7ea028975c88ae7ceb9259a5344a16bc2c0eef7"
189+
fetch_params "$SPROUT_VKEY_NAME" "$PARAMS_DIR/$SPROUT_VKEY_NAME" "4bd498dae0aacfd8e98dc306338d017d9c08dd0918ead18172bd0aec2fc5df82"
190+
191+
# Sapling parameters:
192+
fetch_params "$SAPLING_SPEND_NAME" "$PARAMS_DIR/$SAPLING_SPEND_NAME" "8e48ffd23abb3a5fd9c5589204f32d9c31285a04b78096ba40a79b75677efc13"
193+
fetch_params "$SAPLING_OUTPUT_NAME" "$PARAMS_DIR/$SAPLING_OUTPUT_NAME" "2f0ebbcbb9bb0bcffe95a397e7eba89c29eb4dde6191c339db88570e3f3fb0e4"
194+
fetch_params "$SAPLING_SPROUT_GROTH16_NAME" "$PARAMS_DIR/$SAPLING_SPROUT_GROTH16_NAME" "b685d700c60328498fbde589c8c7c484c722b788b265b72af448a5bf0ee55b50"
195+
}
196+
197+
main
198+
rm -f /tmp/fetch_params.lock
199+
exit 0

0 commit comments

Comments
 (0)