Skip to content

Commit bffc006

Browse files
committed
release.sh: better support 3rd party signers
adds binary downloading from website if the specified signer is not one of the two hardcoded signers with sftp access to the airlock server. This makes it easier for other signers to run the script and create signatures for spesmilo/electrum-signatures.
1 parent 440c1e9 commit bffc006

File tree

1 file changed

+48
-12
lines changed

1 file changed

+48
-12
lines changed

contrib/release.sh

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
# - assumes all keys are available, and signs everything
77
# This script, for other builders:
88
# - builds all reproducible binaries,
9-
# - downloads binaries built by the release manager (from airlock), compares and signs them,
10-
# - and then uploads sigs
9+
# - downloads binaries built by the release manager (from airlock if SFTPUSER, else from website),
10+
# compares and signs them,
11+
# - and then uploads sigs (if SFTPUSER), else they can be submitted as PR to spesmilo/electrum-signatures
1112
# Note: the .dmg should be built separately beforehand and copied into dist/
1213
# (as it is built on a separate machine)
1314
#
@@ -57,7 +58,6 @@ if [ -z "$GPGUSER" ]; then
5758
fail "usage: $0 gpg_username"
5859
fi
5960

60-
export SSHUSER="$GPGUSER"
6161
RELEASEMANAGER=""
6262
if [ "$GPGUSER" == "ThomasV" ]; then
6363
PUBKEY="--local-user 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6"
@@ -68,6 +68,8 @@ elif [ "$GPGUSER" == "sombernight_releasekey" ]; then
6868
export SSHUSER=sombernight
6969
else
7070
warn "unexpected GPGUSER=$GPGUSER"
71+
PUBKEY=""
72+
export SSHUSER=""
7173
fi
7274

7375

@@ -208,13 +210,41 @@ if [ -z "$RELEASEMANAGER" ] ; then
208210
rm -rf "$PROJECT_ROOT/dist/releasemanager"
209211
mkdir --parent "$PROJECT_ROOT/dist/releasemanager"
210212
cd "$PROJECT_ROOT/dist/releasemanager"
211-
# TODO check somehow that RM had finished uploading
212-
sftp -oBatchMode=no -b - "$SSHUSER@uploadserver" << !
213-
cd electrum-downloads-airlock
214-
cd "$VERSION"
215-
mget *
216-
bye
217-
!
213+
214+
if [ -z "$SSHUSER" ]; then
215+
info "No SFTP access, downloading binaries from website"
216+
BASE_URL="https://download.electrum.org/$VERSION"
217+
FILES_TO_DOWNLOAD=(
218+
"$tarball"
219+
"$srctarball"
220+
"$appimage"
221+
"$win1"
222+
"$win2"
223+
"$win3"
224+
"$apk1"
225+
"$apk2"
226+
"$apk3"
227+
"$dmg"
228+
)
229+
230+
for filename in "${FILES_TO_DOWNLOAD[@]}"; do
231+
if [ ! -f "$filename" ]; then
232+
info "Downloading $filename..."
233+
wget -q "$BASE_URL/$filename" -O "$filename" || fail "Failed to download $filename"
234+
else
235+
info "File already exists: $filename"
236+
fi
237+
done
238+
else
239+
# TODO check somehow that RM had finished uploading
240+
sftp -oBatchMode=no -b - "$SSHUSER@uploadserver" <<-EOF
241+
cd electrum-downloads-airlock
242+
cd "$VERSION"
243+
mget *
244+
bye
245+
EOF
246+
fi
247+
218248
# check we have each binary
219249
test -f "$tarball" || fail "tarball not found among sftp downloads"
220250
test -f "$srctarball" || fail "srctarball not found among sftp downloads"
@@ -254,8 +284,14 @@ if [ -z "$RELEASEMANAGER" ] ; then
254284
signame="$fname.$GPGUSER.asc"
255285
gpg --sign --armor --detach $PUBKEY --output "$PROJECT_ROOT/dist/sigs/$signame" "$fname"
256286
done
257-
# upload sigs
258-
ELECBUILD_UPLOADFROM="$PROJECT_ROOT/dist/sigs/" "$CONTRIB/upload.sh"
287+
288+
if [ -z "$SSHUSER" ]; then
289+
info "Signing successfully, now open a pull request with your signatures to spesmilo/electrum-signatures"
290+
exit 0
291+
else
292+
# upload sigs
293+
ELECBUILD_UPLOADFROM="$PROJECT_ROOT/dist/sigs/" "$CONTRIB/upload.sh"
294+
fi
259295

260296
else
261297
# ONLY release manager

0 commit comments

Comments
 (0)