mirror of
https://github.com/syncthing/release-tools.git
synced 2026-05-08 09:02:26 +00:00
Initial
This commit is contained in:
@@ -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"
|
||||
Executable
+42
@@ -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/"
|
||||
|
||||
Executable
+64
@@ -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
@@ -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/
|
||||
|
||||
Reference in New Issue
Block a user