From 30fb93212720fbc06d9016953ad30b7ec08d4edf Mon Sep 17 00:00:00 2001 From: Vikash Kothary Date: Sun, 16 Jan 2022 22:23:51 +0000 Subject: [PATCH] chore: Refactor release scripts to create branch and tags --- Makefile | 3 +-- scripts/prepare-release.sh | 23 ---------------------- scripts/release-branch.sh | 39 ++++++++++++++++++++++++++++++++++++++ scripts/release-tags.sh | 32 +++++++++++++++++++++++++++++++ scripts/release.sh | 15 --------------- 5 files changed, 72 insertions(+), 40 deletions(-) delete mode 100644 scripts/prepare-release.sh create mode 100644 scripts/release-branch.sh create mode 100644 scripts/release-tags.sh delete mode 100644 scripts/release.sh diff --git a/Makefile b/Makefile index 96b9661..2a927e8 100755 --- a/Makefile +++ b/Makefile @@ -36,8 +36,7 @@ init: @${POETRY} install .PHONY: release #: Create new Git release and tags. -release: - @${BASH} scripts/release.sh +release: release-branch release-tags .PHONY: open open: diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh deleted file mode 100644 index addb3b1..0000000 --- a/scripts/prepare-release.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# file: prepare-release.sh -# description: Prepare a release branch from develop to master. - -## TODO: get package version from pyproject.toml -CURRENT_VERSION=2.2.0 -## TODO: get new package version e.g. minor, major, bugfix -LATEST_VERSION=2.3.0 - -## TODO: ensure you're on the develop branch else fail - -## Create release branch -git checkout -b "release/${LATEST_VERSION}" develop - -## TODO: bump package version in pyproject.toml -## TODO: commit changes to pyproject.toml -## TODO: generate new CHANGELOG entry from commits -## TODO: commit changes to CHANGELOG - -## Push branch and tags -git push origin "release/${LATEST_VERSION}" - -## TODO: create PR for review \ No newline at end of file diff --git a/scripts/release-branch.sh b/scripts/release-branch.sh new file mode 100644 index 0000000..e254a71 --- /dev/null +++ b/scripts/release-branch.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# file: release-branch.sh +# description: Prepare a release branch from develop to master. + +## Build release context as environment variables. +GIT_BRANCH=$(git symbolic-ref --short HEAD) + +## TODO: get package version from pyproject.toml +CURRENT_VERSION=v2.2.0 +## TODO: get new package version e.g. minor, major, bugfix +NEW_VERSION=v2.3.0 + +## TODO: ensure you're on the develop branch else fail +if [[ "${GIT_BRANCH}" != "develop" ]]; then + echo 'Please switch to to the develop branch to create a release branch.' + exit 0 +fi + +## Create release branch +git checkout -b "release/${NEW_VERSION}" develop + +## TODO: bump package version in pyproject.toml +## TODO: commit changes to pyproject.toml +## TODO: generate new CHANGELOG entry from commits +## TODO: commit changes to CHANGELOG + +## Return to develop +git checkout develop + +if [[ -z "${CI}" ]]; then + echo "Please confirm the release branch is correct." + read -p "Press enter to continue" + echo +fi + +## Push branch and tags +git push origin "release/${NEW_VERSION}" + +## TODO: create PR for review \ No newline at end of file diff --git a/scripts/release-tags.sh b/scripts/release-tags.sh new file mode 100644 index 0000000..89c436f --- /dev/null +++ b/scripts/release-tags.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# file: release-tags.sh +# description: Automatic consistent release tags following the SemVer convension. + +# set -x +# trap read debug + +## Build release context as environment variables. +GIT_BRANCH=$(git symbolic-ref --short HEAD) + +## TODO: ensure this is the main branch +if [[ "${GIT_BRANCH}" != "main" ]]; then + echo 'Please switch to the main branch to create release tags.' + exit 0 +fi + +## TODO: get package version from pyproject.toml +CURRENT_VERSION=2.3.0 + +## Create GitHub Release +git tag -a ${CURRENT_VERSION} -m "v${CURRENT_VERSION}" + +if [[ -z "${CI}" ]]; then + echo "Please confirm the release tag is correct." + read -p "Press enter to continue" + echo +fi + +git push --tags + +## TODO: publish to PyPI. + diff --git a/scripts/release.sh b/scripts/release.sh deleted file mode 100644 index a0cf023..0000000 --- a/scripts/release.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# file: release.sh -# description: Tag master branch and release to PyPI. - - -## TODO: ensure this is the master branch - -## TODO: get package version from pyproject.toml -CURRENT_VERSION=2.3.0 - -## Create GitHub Release -git tag -a -m "${CURRENT_VERSION}" -git push --tags - -## TODO: publish to PyPI. \ No newline at end of file