Skip to content

Commit

Permalink
Merge pull request #40 from KIT-MRT/compute_version_from_pr_description
Browse files Browse the repository at this point in the history
Compute version from PR description
  • Loading branch information
ll-nick authored Nov 30, 2024
2 parents e512a18 + 3de7483 commit 251db47
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 25 deletions.
41 changes: 16 additions & 25 deletions .github/workflows/bump-version-and-create-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,19 @@ jobs:
permissions:
contents: write
outputs:
new_tag: ${{ steps.bump_version.outputs.new_tag }}
new_version: ${{ steps.bump_version.outputs.new_version }}
steps:
- name: Check out the repository
uses: actions/checkout@v4

- name: Read version from file
run: |
# Read the version from the version file, only store the number (without the 'v')
INITIAL_VERSION=$(source version && echo ${VERSION#v})
echo "Current version: $INITIAL_VERSION"
echo "INITIAL_VERSION=${INITIAL_VERSION}" >> $GITHUB_ENV
- name: Bump version
- name: Compute new version
id: bump_version
uses: anothrNick/github-tag-action@v1
env:
DEFAULT_BUMP: minor
DRY_RUN: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INITIAL_VERSION: ${{ env.INITIAL_VERSION }}
WITH_V: true

PR_BODY: ${{ github.event.pull_request.body }}
run: |
source version
new_version=$(.github/workflows/compute_version.sh "$VERSION" "${PR_BODY//[^a-zA-Z0-9# $'\n']/}")
echo "new_version=$new_version" >> $GITHUB_OUTPUT
update-version-file:
needs: compute-version
Expand All @@ -49,18 +40,18 @@ jobs:

- name: Update version file with new version
run: |
echo "New version: ${{ needs.compute-version.outputs.new_tag }}"
echo "VERSION=${{ needs.compute-version.outputs.new_tag }}" > version
echo "New version: ${{ needs.compute-version.outputs.new_version }}"
echo "VERSION=${{ needs.compute-version.outputs.new_version }}" > version
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git add version
git commit -m "chore: update version file to ${{ needs.compute-version.outputs.new_tag }}"
git commit -m "chore: update version file to ${{ needs.compute-version.outputs.new_version }}"
git push
- name: Push new tag
run: |
git tag ${{ needs.compute-version.outputs.new_tag }}
git push origin ${{ needs.compute-version.outputs.new_tag }}
git tag ${{ needs.compute-version.outputs.new_version }}
git push origin ${{ needs.compute-version.outputs.new_version }}
create-release:
Expand All @@ -73,7 +64,7 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ needs.compute-version.outputs.new_tag }}
ref: ${{ needs.compute-version.outputs.new_version }}

- name: Build release packages
uses: docker/build-push-action@v6
Expand All @@ -93,7 +84,7 @@ jobs:
uses: ncipollo/release-action@v1
with:
artifacts: "/tmp/artifacts/release/*"
tag: ${{ needs.compute-version.outputs.new_tag }}
tag: ${{ needs.compute-version.outputs.new_version }}
body: ${{ github.event.pull_request.body }}


Expand All @@ -105,11 +96,11 @@ jobs:
uses: docker/build-push-action@v6
with:
build-args: |
RELEASE_DOWNLOAD_URL=https://github.com/KIT-MRT/util_caching/releases/download/${{ needs.compute-version.outputs.new_tag }}
RELEASE_DOWNLOAD_URL=https://github.com/KIT-MRT/util_caching/releases/download/${{ needs.compute-version.outputs.new_version }}
push: false
tags: release_tester
target: release_test

- name: Run unit tests with/against released version
run: |
docker run --rm release_tester
docker run --rm release_tester
39 changes: 39 additions & 0 deletions .github/workflows/compute_version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

set -e

if [[ $# -ne 2 ]]; then
echo "Usage: $0 <version> <input_string>"
exit 1
fi

initial_version=${1//[^0-9.]/}
input_string=${2//[^a-zA-Z0-9# $'\n']/}

initial_major=$(echo "$initial_version" | cut -d'.' -f1)
initial_minor=$(echo "$initial_version" | cut -d'.' -f2)
initial_patch=$(echo "$initial_version" | cut -d'.' -f3)

# Determine the bump type based on input string
if [[ "$input_string" == *"#major"* ]]; then
new_major=$((initial_major + 1))
new_minor=0
new_patch=0
elif [[ "$input_string" == *"#minor"* ]]; then
new_major=$initial_major
new_minor=$((initial_minor + 1))
new_patch=0
elif [[ "$input_string" == *"#patch"* ]]; then
new_major=$initial_major
new_minor=$initial_minor
new_patch=$((initial_patch + 1))
else
# Default to minor bump
new_major=$initial_major
new_minor=$((initial_minor + 1))
new_patch=0
fi

new_version="v${new_major}.${new_minor}.${new_patch}"
echo "${new_version}"

0 comments on commit 251db47

Please sign in to comment.