feature/fix-actions-changelog #268
Workflow file for this run
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: 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 }} |