This commit is contained in:
Jakob Borg
2016-05-11 15:21:52 +02:00
commit d4e451a80a
4 changed files with 153 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
# rsync destination for APT archive
export RELEASE_ROOT="user@server:/path"
# location of Syncthing secret EC key
export PRIVATE_KEY="~/secret/key.priv"
# GitHub token for uploads
export GITHUB_TOKEN="abcdef0123456789abcdef0123456789abcdef01"
# "rsh" command for rsync
export RSYNC_RSH_CMD="ssh -p 2443"
+42
View File
@@ -0,0 +1,42 @@
#!/bin/bash
set -euo pipefail
export TMPDIR=/var/tmp
workdir=$(mktemp -d)
echo Working dir is "$workdir"
pushd "$workdir" >/dev/null
echo Downloading release
dlbuild -match '\.deb' http://build.syncthing.net/job/syncthing-release-debian/lastSuccessfulBuild
ver=(syncthing_*_amd64.deb)
ver="${ver#syncthing_}"
ver="${ver%_amd64.deb}"
echo Release version $ver
for arch in amd64 armel armhf i386 ; do
mv "syncthing_${ver}_${arch}.deb" "$HOME/apt-dists/dists/syncthing/release/binary-$arch"
done
popd >/dev/null
rm -r "$workdir"
pushd "$HOME/apt-dists" >/dev/null
echo Cleaning out old releases
find dists/syncthing/release -name syncthing_\*.deb -mtime +30 -delete
echo Generating and signing package archives
for f in dists/syncthing/release/binary-* ; do
apt-ftparchive packages "$f" > "$f/Packages.new"
mv "$f/Packages.new" "$f/Packages"
gzip -c "$f/Packages" > "$f/Packages.gz"
done
apt-ftparchive -c Releases.conf release dists/syncthing | gpg --clearsign > dists/syncthing/InRelease
apt-ftparchive -c Releases.conf release dists/syncthing > dists/syncthing/Release
gpg --detach-sign --yes -a -o dists/syncthing/Release.gpg dists/syncthing/Release
echo Uploading new distribution
rsync -va --delete --rsh="$RSYNC_RSH_CMD" dists/ "$RELEASE_ROOT/dists/"
+64
View File
@@ -0,0 +1,64 @@
#!/bin/bash
set -euo pipefail
export TMPDIR=/var/tmp
workdir=$(mktemp -d)
echo Working dir is "$workdir"
pushd "$workdir"
dlbuild -match '\.tar\.gz|\.zip' http://build.syncthing.net/job/syncthing-release/lastSuccessfulBuild
dlbuild -match '\.tar\.gz|\.zip' http://build.syncthing.net/job/syncthing-release-windows/lastSuccessfulBuild
dlbuild -match '\.tar\.gz|\.zip' http://build.syncthing.net/job/syncthing-release-mac/lastSuccessfulBuild
ver=(syncthing-linux-amd64-*.tar.gz)
ver="${ver#syncthing-linux-amd64-}"
ver="${ver%.tar.gz}"
echo Release version $ver
for f in *.tar.gz; do
base="${f%.tar.gz}"
tar zxf "$f"
if [ -f "$base/syncthing" ] ; then
echo Signing "$base"
mkdir "$base/.metadata"
stsigtool sign "$PRIVATE_KEY" "$base/syncthing" > "$base/syncthing.sig"
( echo "$f"; cat "$base/syncthing" ) | stsigtool sign "$PRIVATE_KEY" > "$base/.metadata/release.sig"
tar zcf "$f" "$base"
rm -rf "$base"
rm -rf syncthing
fi
done
for f in *.zip; do
base="${f%.zip}"
unzip -q "$f"
if [ -f "$base/syncthing.exe" ] ; then
echo Signing "$base"
mkdir "$base/metadata"
stsigtool sign "$PRIVATE_KEY" "$base/syncthing.exe" > "$base/syncthing.exe.sig"
( echo "$f"; cat "$base/syncthing.exe" ) | stsigtool sign "$PRIVATE_KEY" > "$base/metadata/release.sig"
rm -f "$f"
zip -q -r "$f" "$base"
rm -rf "$base"
fi
done
files=(*.tar.gz *.zip)
sha1sum "${files[@]}" | gpg --clearsign >sha1sum.txt.asc
sha256sum "${files[@]}" | gpg --clearsign >sha256sum.txt.asc
for f in sha1sum.txt.asc sha256sum.txt.asc "${files[@]}" ; do
relup syncthing/syncthing "$ver" "$f"
done
echo
echo If everything went well, hit enter to delete temporary files.
echo If there were upload errors, hit ^C, go to "$workdir"
echo "and retry upload by \"relup syncthing/syncthing "$ver" <filename>\"."
echo It may be necessary to manually delete the broken upload from Github.
read
popd
rm -rf "$workdir"
Executable
+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
set -euo pipefail
export TMPDIR=/var/tmp
workdir=$(mktemp -d)
echo Working dir is "$workdir"
pushd "$workdir" >/dev/null
echo Downloading release
dlbuild -match '\.deb' http://build.syncthing.net/job/syncthing-inotify-debian/lastSuccessfulBuild
ver=(syncthing-inotify_*_amd64.deb)
ver="${ver#syncthing-inotify_}"
ver="${ver%_amd64.deb}"
echo Release version $ver
for arch in amd64 armel armhf i386 ; do
mv "syncthing-inotify_${ver}_${arch}.deb" "$HOME/apt-dists/dists/syncthing/release/binary-$arch"
done
popd >/dev/null
rm -r "$workdir"
pushd "$HOME/apt-dists" >/dev/null
echo Generating and signing package archives
for f in dists/syncthing/release/binary-* ; do
apt-ftparchive packages "$f" > "$f/Packages.new"
mv "$f/Packages.new" "$f/Packages"
gzip -c "$f/Packages" > "$f/Packages.gz"
done
apt-ftparchive -c Releases.conf release dists/syncthing | gpg --clearsign > dists/syncthing/InRelease
apt-ftparchive -c Releases.conf release dists/syncthing > dists/syncthing/Release
gpg --detach-sign --yes -a -o dists/syncthing/Release.gpg dists/syncthing/Release
echo Uploading new distribution
rsync -va --delete --rsh="$RSYNC_RSH_CMD" dists/ "$RELEASE_ROOT" /dists/