From 7ef32882f116a8f4532922005d557caacbb4fc13 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sun, 30 Oct 2022 12:56:49 +0100 Subject: [PATCH] Freeze release workflow (#242) * Freeze release workflow - Do not pull anything from master - Do not push release commit to master - Only push created version tag * Refine scripts to start new version 1. Cherry-pick hotfixes from released version 2. Bump version to new version Normally, 1 is only made of the release commit updating CHANGELOG with the release date. However, if a release branch was needed to apply hotfixes to the latest release, cherry picking will account for the whole release branch (i.e. multiple commits). * Ignore more paths for unit testing --- .github/workflows/release.yml | 6 +---- .github/workflows/test.yml | 2 ++ scripts/merge-released-version.sh | 27 +++++++++++++++++++ ...{after-release.sh => start-new-version.sh} | 11 +++----- 4 files changed, 34 insertions(+), 12 deletions(-) create mode 100755 scripts/merge-released-version.sh rename scripts/{after-release.sh => start-new-version.sh} (63%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 278b8d1c..bce66d3c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -169,14 +169,10 @@ jobs: git_commit_gpgsign: true git_tag_gpgsign: true git_push_gpgsign: false - - name: Pull metadata updates - run: | - git pull --no-tags origin $GITHUB_REF_NAME - git submodule update --recursive - name: Tag release run: | scripts/ci/commit-release.sh $TAG_NAME - git push && git push --tags + git push --tags - name: Assemble notes run: | scripts/ci/release-notes.sh $TAG_NAME >$RELEASE_NOTES diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4fd850a3..621d2d8d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,6 +6,8 @@ on: paths-ignore: - '.beta-*' - '**/*.md' + - '**/*.sh' + - '**/*.yml' - 'Passepartout/App/fastlane/**' jobs: diff --git a/scripts/merge-released-version.sh b/scripts/merge-released-version.sh new file mode 100755 index 00000000..267c8b78 --- /dev/null +++ b/scripts/merge-released-version.sh @@ -0,0 +1,27 @@ +#!/bin/bash +VERSION_PREV=$1 +if [[ -z $VERSION_PREV ]]; then + echo "Released version number required" + exit 1 +fi + +RELEASE_BASE=`git merge-base master "v$VERSION_PREV" 2>>/dev/null` +if [[ $? != 0 ]]; then + echo "Version does not exist" + exit 1 +fi + +COMMITS_COUNT=`git rev-list --count $RELEASE_BASE..v$VERSION_PREV` +if [[ $COMMITS_COUNT == 0 ]]; then + echo "Version is already merged" + exit 1 +fi + +if ! git checkout -b "merge/v$VERSION_PREV" master; then + echo "Could not create merge branch" + exit 1 +fi +if ! git cherry-pick $RELEASE_BASE.."v$VERSION_PREV"; then + echo "Automatic cherry-picking has failed" + exit 1 +fi diff --git a/scripts/after-release.sh b/scripts/start-new-version.sh similarity index 63% rename from scripts/after-release.sh rename to scripts/start-new-version.sh index e95bcb9a..9c4b6286 100755 --- a/scripts/after-release.sh +++ b/scripts/start-new-version.sh @@ -1,15 +1,12 @@ #!/bin/bash -VERSION=$1 - -if [[ -z $VERSION ]]; then - echo "Version number required" +VERSION_NEXT=$2 +if [[ -z $VERSION_NEXT ]]; then + echo "New version number required" exit 1 fi CHANGELOG_GLOB="CHANGELOG.md" - -ci/set-version.sh $VERSION +ci/set-version.sh $VERSION_NEXT sed -i '' -E "s/(^and this project adheres.*$)/\1\n\n## Unreleased/" $CHANGELOG_GLOB - git add *.plist $CHANGELOG_GLOB git commit -m "Bump version"