Skip to content

Merge pull request #14 from buildrun-tech/feature/updates-readme #14

Merge pull request #14 from buildrun-tech/feature/updates-readme

Merge pull request #14 from buildrun-tech/feature/updates-readme #14

Workflow file for this run

name: CD
on:
push:
branches: [ "main" ]
jobs:
re-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B package --file app/pom.xml
re-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Test with Maven
run: mvn test --file app/pom.xml
generate-release:
needs: [re-test, re-build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history and tags
- uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm' # See 'Options' for all available distributions
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Debug step
run: |
echo "GRAALVM_HOME: $GRAALVM_HOME"
echo "JAVA_HOME: $JAVA_HOME"
java --version
native-image --version
# - name: Compile to native image
# run: |
# pwd
# ls
# mvn -Pnative native:compile --file app/pom.xml
- name: Set Git user
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"
- name: Determine next version
id: version
run: |
last_tag=$(git describe --abbrev=0)
commit_range="${last_tag}..HEAD"
major=0
minor=0
patch=0
while IFS= read -r line; do
case "$line" in
*'feat:'*)
minor=$((minor + 1))
;;
*'fix:'*)
patch=$((patch + 1))
;;
*'BREAKING CHANGE:'*)
major=$((major + 1))
;;
esac
done < <(git log --pretty=format:"%s" "$commit_range")
if [ $major -gt 0 ]; then
new_version="$((major + 1)).0.0"
elif [ $minor -gt 0 ]; then
new_version="$major.$((minor + 1)).0"
else
new_version="$major.$minor.$((patch + 1))"
fi
echo "NEW VERSION SHOULD BE => $new_version"
echo "::set-output name=new_version::$new_version"
- name: Determine commits since last tag
id: commits
run: |
last_tag=$(git describe --abbrev=0)
commit_range="${last_tag}..HEAD"
git log --pretty=format:"%h %s" "$commit_range" > commits.txt
- name: Create new tag
run: git tag -a ${{ steps.version.outputs.new_version }} -m "Version ${{ steps.version.outputs.new_version }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate release notes
id: release_notes
run: |
while IFS= read -r line; do
commit_hash=$(echo "$line" | awk '{print $1}')
commit_msg=$(echo "$line" | awk '{$1=""; print $0}')
case "$commit_msg" in
*'feat:'*)
echo "* **Feature:** ${commit_msg#*:}"
;;
*'fix:'*)
echo "* **Fix:** ${commit_msg#*:}"
;;
*'BREAKING CHANGE:'*)
echo "* **Breaking Change:** ${commit_msg#*:}"
;;
*)
echo "* ${commit_msg}"
;;
esac
done < commits.txt > release_notes.txt
continue-on-error: false
- name: Debug release notes
id: debug_release_notes
run: |
cat release_notes.txt
continue-on-error: false
- name: Push new tag
run: git push origin ${{ steps.version.outputs.new_version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
files: |
${{ github.workspace }}
tag_name: ${{ steps.version.outputs.new_version }}
release_name: Release ${{ steps.version.outputs.new_version }}
body: |
Release notes for version ${{ steps.version.outputs.new_version }}:
cat release_notes.txt
token: ${{ secrets.GITHUB_TOKEN }}