Kaynağa Gözat

split up release script into subscripts

Nick Sweeting 5 yıl önce
ebeveyn
işleme
2c69b012c9
8 değiştirilmiş dosya ile 192 ekleme ve 56 silme
  1. 38 0
      bin/build_git.sh
  2. 15 56
      bin/release.sh
  3. 19 0
      bin/release_brew.sh
  4. 20 0
      bin/release_deb.sh
  5. 24 0
      bin/release_docker.sh
  6. 25 0
      bin/release_docs.sh
  7. 25 0
      bin/release_git.sh
  8. 26 0
      bin/release_pip.sh

+ 38 - 0
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
+

+ 15 - 56
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
 
 
-# Bump version number in source
-function bump_semver {
-    echo "$1" | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g'
-}
+# Run the linters and tests
+# ./bin/lint.sh
+# ./bin/test.sh
 
-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"

+ 19 - 0
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

+ 20 - 0
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"

+ 24 - 0
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

+ 25 - 0
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

+ 25 - 0
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"

+ 26 - 0
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}