From 5250989e326de83803933f795596dee1f3921af2 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Tue, 12 Jan 2021 12:56:00 +0200 Subject: [PATCH] split up release script into subscripts --- bin/build_git.sh | 38 +++++++++++++++++++++++ bin/release.sh | 71 +++++++++---------------------------------- bin/release_brew.sh | 19 ++++++++++++ bin/release_deb.sh | 20 ++++++++++++ bin/release_docker.sh | 24 +++++++++++++++ bin/release_docs.sh | 25 +++++++++++++++ bin/release_git.sh | 25 +++++++++++++++ bin/release_pip.sh | 26 ++++++++++++++++ 8 files changed, 192 insertions(+), 56 deletions(-) create mode 100644 bin/build_git.sh create mode 100644 bin/release_brew.sh create mode 100644 bin/release_deb.sh create mode 100644 bin/release_docker.sh create mode 100644 bin/release_docs.sh create mode 100644 bin/release_git.sh create mode 100644 bin/release_pip.sh diff --git a/bin/build_git.sh b/bin/build_git.sh new file mode 100644 index 00000000..19e185e8 --- /dev/null +++ b/bin/build_git.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" + +cd "$REPO_DIR" +source "./.venv/bin/activate" + + +# Make sure git is clean +if [ -z "$(git status --porcelain)" ] && [[ "$(git branch --show-current)" == "master" ]]; then + git pull +else + echo "[!] Warning: git status is dirty!" + echo " Press Ctrl-C to cancel, or wait 10sec to continue..." + sleep 10 +fi + +# Bump version number in source +function bump_semver { + echo "$1" | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g' +} + +OLD_VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +NEW_VERSION="$(bump_semver "$OLD_VERSION")" +echo "[*] Bumping VERSION from $OLD_VERSION to $NEW_VERSION" +contents="$(jq ".version = \"$NEW_VERSION\"" "$REPO_DIR/package.json")" && \ +echo "${contents}" > package.json + diff --git a/bin/release.sh b/bin/release.sh index 12459c74..34256fad 100755 --- a/bin/release.sh +++ b/bin/release.sh @@ -11,69 +11,28 @@ set -o pipefail IFS=$'\n' REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" - cd "$REPO_DIR" -source "./.venv/bin/activate" -# Make sure git is clean -if [ -z "$(git status --porcelain)" ] && [[ "$(git branch --show-current)" == "master" ]]; then - git pull -else - echo "[!] Warning: git status is dirty!" - echo " Press Ctrl-C to cancel, or wait 10sec to continue..." - sleep 10 -fi +# Run the linters and tests +# ./bin/lint.sh +# ./bin/test.sh - -# Bump version number in source -function bump_semver { - echo "$1" | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g' -} - -OLD_VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" -NEW_VERSION="$(bump_semver "$OLD_VERSION")" -echo "[*] Bumping VERSION from $OLD_VERSION to $NEW_VERSION" -contents="$(jq ".version = \"$NEW_VERSION\"" "$REPO_DIR/package.json")" && \ -echo "${contents}" > package.json - - -# Build docs, python package, and docker image +# Run all the build scripts +./bin/build_git.sh ./bin/build_docs.sh ./bin/build_pip.sh ./bin/build_deb.sh +./bin/build_brew.sh ./bin/build_docker.sh +# Push relase to public repositories +./bin/release_git.sh +./bin/release_docs.sh +./bin/release_pip.sh +./bin/release_deb.sh +./bin/release_brew.sh +./bin/release_docker.sh -# Push build to github -echo "[^] Pushing source to github" -git add "$REPO_DIR/docs" -git add "$REPO_DIR/deb_dist" -git add "$REPO_DIR/pip_dist" -git add "$REPO_DIR/brew_dist" -git add "$REPO_DIR/package.json" -git add "$REPO_DIR/package-lock.json" -git commit -m "$NEW_VERSION release" -git tag -a "v$NEW_VERSION" -m "v$NEW_VERSION" -git push origin master -git push origin --tags - - -# Push releases to github -echo "[^] Uploading to test.pypi.org" -python3 -m twine upload --repository testpypi pip_dist/*.{whl,tar.gz} - -echo "[^] Uploading to pypi.org" -python3 -m twine upload --repository pypi pip_dist/*.{whl,tar.gz} - -echo "[^] Uploading to launchpad.net" -dput archivebox "deb_dist/archivebox_${NEW_VERSION}-1_source.changes" - -echo "[^] Uploading docker image" -# docker login --username=nikisweeting -# docker login docker.pkg.github.com --username=pirate -docker push docker.io/nikisweeting/archivebox -docker push docker.io/archivebox/archivebox -docker push docker.pkg.github.com/archivebox/archivebox/archivebox - -echo "[√] Done. Published version v$NEW_VERSION" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +echo "[√] Done. Published version v$VERSION" diff --git a/bin/release_brew.sh b/bin/release_brew.sh new file mode 100644 index 00000000..526d9d59 --- /dev/null +++ b/bin/release_brew.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')" +cd "$REPO_DIR" + +# TODO +exit 0 diff --git a/bin/release_deb.sh b/bin/release_deb.sh new file mode 100644 index 00000000..dc1bff35 --- /dev/null +++ b/bin/release_deb.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')" +cd "$REPO_DIR" + + +echo "[^] Uploading to launchpad.net" +dput archivebox "deb_dist/archivebox_${VERSION}-1_source.changes" diff --git a/bin/release_docker.sh b/bin/release_docker.sh new file mode 100644 index 00000000..344a456d --- /dev/null +++ b/bin/release_docker.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')" +cd "$REPO_DIR" + + +echo "[^] Uploading docker image" +# docker login --username=nikisweeting +# docker login docker.pkg.github.com --username=pirate +docker push docker.io/nikisweeting/archivebox +docker push docker.io/archivebox/archivebox +docker push docker.pkg.github.com/archivebox/archivebox/archivebox diff --git a/bin/release_docs.sh b/bin/release_docs.sh new file mode 100644 index 00000000..114c1262 --- /dev/null +++ b/bin/release_docs.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')" +cd "$REPO_DIR" + + +echo "[^] Pushing docs to github" +cd docs/ +git commit -am "$NEW_VERSION release" +git push +git tag -a "v$NEW_VERSION" -m "v$NEW_VERSION" +git push origin master +git push origin --tags diff --git a/bin/release_git.sh b/bin/release_git.sh new file mode 100644 index 00000000..4a999e34 --- /dev/null +++ b/bin/release_git.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +cd "$REPO_DIR" + + +# Push build to github +echo "[^] Pushing release commit + tag to Github" +git commit -am "$VERSION release" +git tag -a "v$VERSION" -m "v$VERSION" +git push origin master +git push origin --tags +echo " To finish publishing the release go here:" +echo " https://github.com/ArchiveBox/ArchiveBox/releases/new" diff --git a/bin/release_pip.sh b/bin/release_pip.sh new file mode 100644 index 00000000..87323603 --- /dev/null +++ b/bin/release_pip.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +### Bash Environment Setup +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html +# set -o xtrace +set -o errexit +set -o errtrace +set -o nounset +set -o pipefail +IFS=$'\n' + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" +VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")" +cd "$REPO_DIR" + + +# apt install python3 python3-all python3-dev +# pip install '.[dev]' + + +echo "[^] Uploading to test.pypi.org" +python3 -m twine upload --repository testpypi pip_dist/archivebox-${VERSION}*.{whl,tar.gz} + +echo "[^] Uploading to pypi.org" +python3 -m twine upload --repository pypi pip_dist/archivebox-${VERSION}*.{whl,tar.gz}