Skip to content

feature/fix-actions-changelog #268

feature/fix-actions-changelog

feature/fix-actions-changelog #268

Workflow file for this run

name: CI
on:
push:
branches:
- master
tags:
- 'v*.*.*'
pull_request:
branches:
- '*'
env:
CR_REGISTRY: ghcr.io
CR_NAMESPACE: ${{ github.repository_owner }}
CR_USERNAME: ${{ github.actor }}
CR_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
jobs:
build-jvm:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: 20
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Gradle build
run: ./gradlew build
- name: Run app for testing
run: |
nohup java -jar service/build/libs/realworld-backend-micronaut*.jar &
sleep 5
- name: Run postman collection
run: >
npx newman run
https://raw.githubusercontent.com/gothinkster/realworld/master/api/Conduit.postman_collection.json
--delay-request 200
--global-var "APIURL=http://localhost:8080/api"
--global-var "USERNAME=username"
--global-var "EMAIL=username@example.com"
--global-var "PASSWORD=password"
- name: Upload app-jar
uses: actions/upload-artifact@v4
with:
name: app-jar
path: |
service/build/libs/realworld-backend-micronaut*.jar
retention-days: 7
build-native:
strategy:
matrix:
include:
- name: linux
os: ubuntu-20.04
artifact: app-native-linux
- name: windows
os: windows-latest
artifact: app-native-windows
- name: macos
os: macos-latest
artifact: app-native-macos
runs-on: ${{ matrix.os }}
name: build-native-${{ matrix.name }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup GraalVM
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'liberica'
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: 'true'
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: 20
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Gradle nativeCompile
run: ./gradlew :service:nativeCompile -x check
- name: Upload app-native
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: |
service/build/native/nativeCompile/realworld-backend-micronaut*
service/build/native/nativeCompile/gradle-artifact.txt
- name: Run app for testing
run: |
nohup ./service/build/native/nativeCompile/realworld-backend-micronaut* &
sleep 5
shell: bash
- name: Run postman collection
run: >
npx newman run
https://raw.githubusercontent.com/gothinkster/realworld/master/api/Conduit.postman_collection.json
--delay-request 200
--global-var "APIURL=http://localhost:8080/api"
--global-var "USERNAME=username"
--global-var "EMAIL=username@example.com"
--global-var "PASSWORD=password"
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Gradle jacocoReport
shell: bash
run: |
./gradlew --version
./gradlew --scan --no-parallel --stacktrace --warning-mode=all jacocoReport
- name: Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
release-notes:
runs-on: ubuntu-latest
needs: [build-jvm, build-native]
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download Artifacts
uses: actions/download-artifact@v4
- name: Prepare Linux Artifacts
run: |
cd app-native-linux
chmod +x realworld-backend-micronaut
tar -czf $(cat gradle-artifact.txt).tar.gz realworld-backend-micronaut
- name: Prepare macOS Artifacts
run: |
cd app-native-macos
chmod +x realworld-backend-micronaut
tar -czf $(cat gradle-artifact.txt).tar.gz realworld-backend-micronaut
- name: Prepare Windows Artifacts
run: |
cd app-native-windows
zip $(cat gradle-artifact.txt).zip realworld-backend-micronaut.exe
- name: Build Changelog
uses: mikepenz/release-changelog-builder-action@v4
with:
outputFile: changelog.txt
configuration: ".github/release-changelog-builder.json"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Release
uses: softprops/action-gh-release@v2
with:
body_path: changelog.txt
draft: true
files: |
app-jar/*.jar
app-native-linux/*.tar.gz
app-native-macos/*.tar.gz
app-native-windows/*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-docker:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Login to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.CR_REGISTRY }}
username: ${{ env.CR_USERNAME }}
password: ${{ env.CR_PASSWORD }}
- name: Gradle dockerPushNative
run: ./gradlew dockerPushNative
- name: Deploy on Render
run: |
curl -X POST ${{ secrets.RENDER_WEBHOOK }}