Skip to content

feat: test ci

feat: test ci #43

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 "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 }}