Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate Minor release - Feature Freeze #7585

Merged
82 changes: 82 additions & 0 deletions .github/workflows/minor_release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Minor Release - Feature Freeze
on:
workflow_dispatch:

# The workflow needs the permission to push branches
permissions:
contents: write

jobs:
minor-release-feature-freeze:
name: Minor Release - Feature Freeze
runs-on: ubuntu-latest

steps:
- name: Install Linux Dependencies
run: |
sudo apt-get update
sudo apt-get install pip

- name: Install Python Dependencies
run: |
pip install PyGithub requests

- name: Checkout TimescaleDB
uses: actions/checkout@v4

- name: Set env var NEW_VERSION
run: echo "NEW_VERSION=$(head -1 version.config | cut -d ' ' -f 3 | cut -d '-' -f 1)" >> $GITHUB_ENV
- name: Test env var NEW_VERSION
run: echo $NEW_VERSION

- name: Set env var RELEASE_BRANCH
run: echo "RELEASE_BRANCH="${${{ env.NEW_VERSION }}/%.0/.x}"" >> $GITHUB_ENV
- name: Test env var RELEASE_BRANCH
run: echo $RELEASE_BRANCH

- name: Set env var CURRENT_MINOR_VERSION
run: echo "CURRENT_MINOR_VERSION="$(echo ${{ env.NEW_VERSION }} | cut -d '.' -f 2)"" >> $GITHUB_ENV
- name: Test env var CURRENT_MINOR_VERSION
run: echo $CURRENT_MINOR_VERSION

- name: Set env var NEW_MINOR_VERSION
run: echo "NEW_MINOR_VERSION="$((${{ env.CURRENT_MINOR_VERSION }} + 1))"" >> $GITHUB_ENV
- name: Test env var NEW_MINOR_VERSION
run: echo $NEW_MINOR_VERSION

- name: Set env var NEW_MINOR_VERSION_FULL
run: echo "NEW_MINOR_VERSION_FULL="$(echo ${{ env.NEW_VERSION }} | sed -e "s/${{ env.CURRENT_MINOR_VERSION }}/${{ env.NEW_MINOR_VERSION }}/g")"" >> $GITHUB_ENV
- name: Test env var NEW_MINOR_VERSION_FULL
run: echo $NEW_MINOR_VERSION_FULL

- name: Create PR to bump version in the main branch
env:
GITHUB_TOKEN: ${{ secrets.ORG_AUTOMATION_TOKEN }}
run: |
git remote --verbose
git checkout -b release/bump-version-in-main-to-${{ env.NEW_MINOR_VERSION_FULL }}-dev origin/main
sed -i.bak "s/${{ env.CURRENT_MINOR_VERSION }}/${{ env.NEW_MINOR_VERSION }}/g" version.config
rm version.config.bak
git commit --no-verify -a -m "Bump version to ${{ env.NEW_MINOR_VERSION_FULL }}-dev"
git push origin release/bump-version-in-main-to-${{ env.NEW_MINOR_VERSION_FULL }}-dev

- name: Checkout TimescaleDB
uses: actions/checkout@v4

- name: Create release branch for minor release
env:
GITHUB_TOKEN: ${{ secrets.ORG_AUTOMATION_TOKEN }}
run: |
git remote --verbose
git checkout -b ${{ env.RELEASE_BRANCH }} origin/main
git push origin ${{ env.RELEASE_BRANCH }}:${{ env.RELEASE_BRANCH }}

- name: Checkout TimescaleDB
uses: actions/checkout@v4

- name: Create PR to release branch for minor release
env:
GITHUB_TOKEN: ${{ secrets.ORG_AUTOMATION_TOKEN }}
run: |
git remote --verbose
scripts/release/create_minor_release_PR_commit.sh ${{ env.RELEASE_BRANCH }}
28 changes: 16 additions & 12 deletions scripts/release/create_minor_release_PR_commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
set -eu

# Folder, where we have cloned repositories' sources
SOURCES_DIR="sources"
SOURCES_DIR="timescaledb"

GH_USERNAME=$(gh auth status | grep 'Logged in to' |cut -d ' ' -f 9)

FORK_DIR="$GH_USERNAME-timescaledb"
#folder-name
FORK_DIR="timescaledb"

echo "---- Deriving the release related versions from main ----"

Expand All @@ -17,6 +16,7 @@ NEW_PATCH_VERSION="0"
NEW_VERSION=$(head -1 version.config | cut -d ' ' -f 3 | cut -d '-' -f 1)
RELEASE_BRANCH="${NEW_VERSION/%.$NEW_PATCH_VERSION/.x}"
CURRENT_VERSION=$(tail -1 version.config | cut -d ' ' -f 3)

cd sql/updates

for f in ./*
Expand All @@ -29,26 +29,28 @@ done
LAST_VERSION=$(echo "$LAST_UPDATE_FILE" |cut -d '-' -f 1 |cut -d '/' -f 2)

echo "CURRENT_VERSION is $CURRENT_VERSION"
#echo "LAST_UPDATE_FILE is $LAST_UPDATE_FILE"
echo "LAST_VERSION is $LAST_VERSION"
echo "RELEASE_BRANCH is $RELEASE_BRANCH"
echo "NEW_VERSION is $NEW_VERSION"
cd ~/"$SOURCES_DIR"/"$FORK_DIR"


# Derived Variables
#RELEASE_PR_BRANCH="release-$NEW_VERSION-$RELEASE_BRANCH"
RELEASE_PR_BRANCH="release-$NEW_VERSION"
RELEASE_PR_BRANCH="release/$NEW_VERSION"
UPDATE_FILE="$CURRENT_VERSION--$NEW_VERSION.sql"
DOWNGRADE_FILE="$NEW_VERSION--$CURRENT_VERSION.sql"
LAST_UPDATE_FILE="$LAST_VERSION--$CURRENT_VERSION.sql"
LAST_DOWNGRADE_FILE="$CURRENT_VERSION--$LAST_VERSION.sql"

BASE_BRANCH="$1"
RELEASE_PR_BRANCH="$RELEASE_PR_BRANCH-to-$BASE_BRANCH"

echo "final BASE_BRANCH is $BASE_BRANCH"
echo "RELEASE_PR_BRANCH is $RELEASE_PR_BRANCH"

echo "---- Creating release branch $RELEASE_PR_BRANCH from $RELEASE_BRANCH, on the fork ----"
echo "---- Creating release branch $RELEASE_PR_BRANCH from $BASE_BRANCH, on the fork ----"

git checkout -b "$RELEASE_PR_BRANCH" upstream/"$RELEASE_BRANCH"
#git checkout -b "$RELEASE_PR_BRANCH" upstream/main
git checkout -b "$RELEASE_PR_BRANCH" origin/"$BASE_BRANCH"
git branch
git pull && git diff HEAD

Expand Down Expand Up @@ -92,11 +94,13 @@ sed -i.bak "s/FILE reverse-dev.sql)/FILE ${DOWNGRADE_FILE})/g" CMakeLists.txt
rm CMakeLists.txt.bak



cd ~/"$SOURCES_DIR"/"$FORK_DIR"

echo "---- Creating CHANGELOG_$NEW_VERSION.md file ----"

rm -f ~/CHANGELOG_"$NEW_VERSION".md

cd ~/"$SOURCES_DIR"/"$FORK_DIR"
./scripts/merge_changelogs.sh > ~/CHANGELOG_"$NEW_VERSION".md

echo "---- Editing the CHANGELOG.md file with the contents of CHANGELOG_$NEW_VERSION.md file. ----"
Expand Down Expand Up @@ -129,13 +133,13 @@ done

cd ..


git diff HEAD --name-only


echo "---- Committing the Release PR to fork ----"

#Remove date from the intermediate CHANGELOG file.

cut -d '(' -f1 < ~/CHANGELOG_"$NEW_VERSION".md > ~/CHANGELOG_"$NEW_VERSION".md.tmp
mv ~/CHANGELOG_"$NEW_VERSION".md.tmp ~/CHANGELOG_"$NEW_VERSION".md

Expand Down
10 changes: 4 additions & 6 deletions scripts/release/create_minor_release_branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
set -eu

# Folder, where we have cloned repositories' sources
SOURCES_DIR="sources"
SOURCES_DIR="timescaledb"

GH_USERNAME=$(gh auth status | grep 'Logged in to' |cut -d ' ' -f 9)

FORK_DIR="$GH_USERNAME-timescaledb"
FORK_DIR="timescaledb"

echo "---- Deriving the release related versions from main ----"

Expand All @@ -25,6 +23,6 @@ echo "NEW_VERSION is $NEW_VERSION"
echo "---- Creating the version branch from main ----"

git fetch --all
git checkout -b "$RELEASE_BRANCH" upstream/main
git push upstream "$RELEASE_BRANCH":"$RELEASE_BRANCH"
git checkout -b "$RELEASE_BRANCH" origin/main
git push origin "$RELEASE_BRANCH":"$RELEASE_BRANCH"

Loading