From cfdefb287c5aada76a3af8e2ea82def4d1eab49f Mon Sep 17 00:00:00 2001 From: Anthony Oteri Date: Fri, 29 Sep 2023 14:23:32 -0400 Subject: [PATCH] Additional scripts for managing the release process --- docs/release-notes-template.md | 10 ++++++++ scripts/generate-changelog.sh | 37 +++++++++++++++++++++++++++ scripts/make-release.sh | 45 +++++++++++++++++++++++++++++++++ scripts/update-release-notes.sh | 21 +++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 docs/release-notes-template.md create mode 100755 scripts/generate-changelog.sh create mode 100755 scripts/make-release.sh create mode 100755 scripts/update-release-notes.sh diff --git a/docs/release-notes-template.md b/docs/release-notes-template.md new file mode 100644 index 0000000..2b2f370 --- /dev/null +++ b/docs/release-notes-template.md @@ -0,0 +1,10 @@ +# Dredge Release Notes + +## Known Issues + +* The delete command is currently not implemented and will return an error + if called. +* Docker authentication is not currently supported, and attempts to query a + registry which requires authentication will fail. + +## Changelog diff --git a/scripts/generate-changelog.sh b/scripts/generate-changelog.sh new file mode 100755 index 0000000..d9d615d --- /dev/null +++ b/scripts/generate-changelog.sh @@ -0,0 +1,37 @@ +# +# Copyright 2023 Anthony Oteri +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#!/usr/bin/bash + +set -e + +REPO_ROOT=$(git rev-parse --show-toplevel) + +version=$1 + +if [ -z "$1" ]; then + echo "Usage $0 [from tag]" + exit 1 +fi + +previous=${2:-$(git describe --abbrev=0 --match='v*')} + +changelog="${REPO_ROOT}/docs/changelog-${previous}-${version}.md" + +echo "- ${version}" | tee ${changelog} +echo "" | tee -a ${changelog} +git log --pretty=format:' - %s by %an %h' --no-merges ${previous}.. | tee -a ${changelog} + diff --git a/scripts/make-release.sh b/scripts/make-release.sh new file mode 100755 index 0000000..ae369c1 --- /dev/null +++ b/scripts/make-release.sh @@ -0,0 +1,45 @@ +# +# Copyright 2023 Anthony Oteri +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#!/usr/bin/bash -e + +version=$1 +previous=$2 + +if [ -z "$1" ]; then + echo "Usage $0 [previous]" + exit 1 +fi + +REPO_ROOT=$(git rev-parse --show-toplevel) +SCRIPTS="${REPO_ROOT}/scripts" + +${SCRIPTS}/generate-changelog.sh "v${version}" "${previous}" && \ + ${SCRIPTS}/update-release-notes.sh && \ + git add "${REPO_ROOT}/docs" "${REPO_ROOT}/RELEASE_NOTES.md" + +sed -i "s/^version = \".*\"/version = \"${version}\"/" \ + "${REPO_ROOT}/Cargo.toml" && git add "${REPO_ROOT}/Cargo.toml" + +echo "*************************************************************************" +echo "Release is ready, please use the following to commit changes" +echo +echo "git commit -am \"Release version ${version}\" && \ " +echo " git tag -a -m v${version} v${version}" +echo +echo "*************************************************************************" + + diff --git a/scripts/update-release-notes.sh b/scripts/update-release-notes.sh new file mode 100755 index 0000000..ca3a58b --- /dev/null +++ b/scripts/update-release-notes.sh @@ -0,0 +1,21 @@ +# +# Copyright 2023 Anthony Oteri +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#!/usr/bin/bash + +REPO_ROOT=$(git rev-parse --show-toplevel) + +/usr/bin/cat "${REPO_ROOT}/docs/release-notes-template.md" $(/usr/bin/ls "${REPO_ROOT}/docs/changelog*.md" 2>/dev/null | true | sort -rn) | tee "${REPO_ROOT}/RELEASE_NOTES.md" \ No newline at end of file