feat: test ci #43
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 "actions@github.com" | |
git config --global user.name "GitHub Actions" | |
- name: Get previous tag | |
id: previous_tag | |
run: | | |
git fetch --tags | |
previous_tag=$(git describe --abbrev=0 --tags $(git rev-list --tags --max-count=1)) | |
echo "PREVIOUS TAG => $previous_tag" | |
echo "::set-output name=previous_tag::$previous_tag" | |
- name: Determine next version | |
id: version | |
run: | | |
git fetch | |
last_tag=${{ steps.previous_tag.outputs.previous_tag }} | |
commit_range="${last_tag}..HEAD" | |
major=$(echo "$last_tag" | cut -d. -f1) | |
minor=$(echo "$last_tag" | cut -d. -f2) | |
patch=$(echo "$last_tag" | cut -d. -f3) | |
has_feat=false | |
has_breaking_change=false | |
while IFS= read -r line; do | |
echo $line | |
case "$line" in | |
*'feat:'*) | |
echo "has_feat=true because of [$line]" | |
has_feat=true | |
;; | |
*'BREAKING CHANGE:'*) | |
echo "has_breaking_change=true because of [$line]" | |
has_breaking_change=true | |
;; | |
*) | |
echo "not feat not breaking change, commit -> [$line]" | |
;; | |
esac | |
done < <(git log --pretty=format:"%s" "$commit_range") | |
if [ "$has_breaking_change" = true ]; then | |
major=$((major + 1)) | |
minor=0 | |
patch=0 | |
elif [ "$has_feat" = true ]; then | |
minor=$((minor + 1)) | |
patch=0 | |
else | |
patch=$((patch + 1)) | |
fi | |
new_version="$major.$minor.$patch" | |
echo "NEW VERSION SHOULD BE => $new_version" | |
echo "::set-output name=new_version::$new_version" | |
- name: Create new tag | |
id: new_tag | |
if: steps.commits.outputs.new_version != '0.0.0' | |
run: git tag -a ${{ steps.version.outputs.new_version }} -m "Version ${{ steps.version.outputs.new_version }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Push new tag | |
if: steps.commits.outputs.new_version != '0.0.0' | |
run: git push origin ${{ steps.version.outputs.new_version }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate release notes | |
id: release_notes | |
run: | | |
git fetch | |
echo "## What's changed" > release_notes.md | |
git log --pretty=format:"%h %s by @%an" ${{ steps.previous_tag.outputs.previous_tag }}..${{ steps.version.outputs.new_version }} | \ | |
while read line; do | |
echo $line | |
case "$line" in | |
*'feat:'*) | |
echo "* **Feature:** ${line#*:}" >> release_notes.md | |
;; | |
*'fix:'*) | |
echo "* **Fix:** ${line#*:}" >> release_notes.md | |
;; | |
*'BREAKING CHANGE:'*) | |
echo "* **Breaking Change:** ${line#*:}" >> release_notes.md | |
;; | |
*) | |
echo "* ${line#*:}" >> release_notes.md | |
;; | |
esac | |
done | |
echo "" >> release_notes.md | |
echo "" >> release_notes.md | |
echo "**Full Changelog**: https://github.com/buildrun-tech/brc-cli/commits/${{ steps.version.outputs.new_version }}" >> release_notes.md | |
continue-on-error: false | |
- name: Debug release notes | |
id: debug_release_notes | |
run: | | |
cat release_notes.md | |
continue-on-error: false | |
- 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_path: release_notes.md | |
token: ${{ secrets.GITHUB_TOKEN }} |