Merge pull request #14 from buildrun-tech/feature/updates-readme #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |