diff --git a/contrib/release.sh b/contrib/release.sh new file mode 100755 index 000000000..b257af289 --- /dev/null +++ b/contrib/release.sh @@ -0,0 +1,181 @@ +# +# Note: update locale before: +# 1. cd /opt/electrum-locale && ./update && push +# 2. cd to the submodule dir, and git pull +# 3. cd .. && git push +#!/bin/bash + +ELECTRUM_DIR=/opt/electrum +WWW_DIR=/opt/electrum-web + +# Note: +# uploadserver and website are set in /etc/hosts + +cd $ELECTRUM_DIR +# rm -rf dist/* +# rm -f .buildozer + + +VERSION=`python3 -c "import electrum; print(electrum.version.ELECTRUM_VERSION)"` +echo "VERSION: $VERSION" +REV=`git describe --tags` +echo "REV: $REV" + + +git_status=$(git status --porcelain) +if [ ! -z "$git_status" ]; then + echo "$git_status" + echo "git repo not clean, aborting" + exit 1 +fi + +set -ex + +# create tarball +target=Electrum-$VERSION.tar.gz +if test -f dist/$target; then + echo "file exists: $target" +else + pushd . + sudo docker build -t electrum-sdist-builder-img contrib/build-linux/sdist + FRESH_CLONE=contrib/build-linux/sdist/fresh_clone && \ + sudo rm -rf $FRESH_CLONE && \ + umask 0022 && \ + mkdir -p $FRESH_CLONE && \ + cd $FRESH_CLONE && \ + git clone https://github.com/spesmilo/electrum.git &&\ + cd electrum + #git checkout $REV + sudo docker run -it \ + --name electrum-sdist-builder-cont \ + -v $PWD:/opt/electrum \ + --rm \ + --workdir /opt/electrum/contrib/build-linux/sdist \ + electrum-sdist-builder-img \ + ./build.sh + popd + cp /opt/electrum/contrib/build-linux/sdist/fresh_clone/electrum/dist/$target dist/ +fi + +# appimage +if [ $REV != $VERSION ]; then + target=electrum-${REV:0:-2}-x86_64.AppImage +else + target=electrum-$REV-x86_64.AppImage +fi + +if test -f dist/$target; then + echo "file exists: $target" +else + sudo docker build -t electrum-appimage-builder-img contrib/build-linux/appimage + sudo docker run -it \ + --name electrum-appimage-builder-cont \ + -v $PWD:/opt/electrum \ + --rm \ + --workdir /opt/electrum/contrib/build-linux/appimage \ + electrum-appimage-builder-img \ + ./build.sh +fi + + +# windows +target=electrum-$REV.exe +if test -f dist/$target; then + echo "file exists: $target" +else + pushd . + FRESH_CLONE=contrib/build-wine/fresh_clone && \ + sudo rm -rf $FRESH_CLONE && \ + mkdir -p $FRESH_CLONE && \ + cd $FRESH_CLONE && \ + git clone https://github.com/spesmilo/electrum.git && \ + cd electrum + #git checkout $REV + sudo docker run -it \ + --name electrum-wine-builder-cont \ + -v $PWD:/opt/wine64/drive_c/electrum \ + --rm \ + --workdir /opt/wine64/drive_c/electrum/contrib/build-wine \ + electrum-wine-builder-img \ + ./build.sh + # do this in the fresh clone directorry! + cd contrib/build-wine/ + ./sign.sh + cp ./signed/*.exe /opt/electrum/dist/ + popd +fi + +# android +target1=Electrum-$VERSION.0-armeabi-v7a-release.apk +target2=Electrum-$VERSION.0-arm64-v8a-release.apk + +if test -f dist/$target1; then + echo "file exists: $target" +else + ./contrib/make_packages + sudo docker build -t electrum-android-builder-img contrib/android + + mkdir --parents $PWD/.buildozer/.gradle + sudo docker run -it --rm \ + --name electrum-android-builder-cont \ + -v $PWD:/home/user/wspace/electrum \ + -v $PWD/.buildozer/.gradle:/home/user/.gradle \ + -v ~/.keystore:/home/user/.keystore \ + --workdir /home/user/wspace/electrum \ + electrum-android-builder-img \ + ./contrib/android/make_apk release + + cp bin/$target1 dist/ + cp bin/$target2 dist/ + +fi + +# wait for dmg before signing +if test -f dist/electrum-$VERSION.dmg; then + if test -f dist/electrum-$VERSION.dmg.asc; then + echo "packages are already signed" + else + echo "signing packages" + ./contrib/sign_packages + fi +else + echo "dmg is missing, aborting" + exit 1 +fi + + + +echo "updating www repo" +./contrib/make_download $WWW_DIR +echo "signing the version file" +sig=`./run_electrum -o signmessage $ELECTRUM_SIGNING_ADDRESS $VERSION -w $ELECTRUM_SIGNING_WALLET` +echo "{ \"version\":\"$VERSION\", \"signatures\":{ \"$ELECTRUM_SIGNING_ADDRESS\":\"$sig\"}}" > $WWW_DIR/version + + +if [ $REV != $VERSION ]; then + echo "versions differ, not uploading" + exit 1 +fi + +# upload the files +if test -f dist/uploaded; then + echo "files already uploaded" +else + ./contrib/upload uploadserver + touch dist/uploaded +fi + +#exit 0 + +# push changes to website +pushd $WWW_DIR +git diff +git commit -a -m "version $VERSION" +git push +popd + +# update webserver: +echo "to deploy, type:" +echo "ssh root@website \"cd /var/www/new; git pull github master\"" + +# clear cloudflare cache diff --git a/contrib/sign_version b/contrib/sign_version deleted file mode 100755 index 4a503ff5f..000000000 --- a/contrib/sign_version +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -version=`python3 -c "import electrum; print(electrum.version.ELECTRUM_VERSION)"` -sig=`./run_electrum -o signmessage $SIGNING_ADDRESS $version -w $SIGNING_WALLET` -echo "{ \"version\":\"$version\", \"signatures\":{ \"$SIGNING_ADDRESS\":\"$sig\"}}"