Skip to content

ci: add GitHub Actions workflows and JReleaser configuration #3

ci: add GitHub Actions workflows and JReleaser configuration

ci: add GitHub Actions workflows and JReleaser configuration #3

Workflow file for this run

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
env:
MAVEN_OPTS: -Xmx1024m
jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [17, 21]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
cache: maven
- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Run tests
run: mvn clean test
- name: Generate test report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Maven Tests
path: '**/target/surefire-reports/*.xml'
reporter: java-junit
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-jdk-${{ matrix.java-version }}
path: |
**/target/surefire-reports/
**/target/site/
retention-days: 7
build:
name: Build
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven
run: mvn clean compile package -DskipTests=true
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
**/target/*.jar
**/target/*.war
retention-days: 7
security:
name: Security Scan
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Run OWASP Dependency Check
uses: dependency-check/Dependency-Check_Action@main
with:
project: 'kinde-java-sdk'
path: '.'
format: 'ALL'
args: '--enableRetired --enableExperimental'
- name: Upload security scan results
uses: actions/upload-artifact@v4
if: always()
with:
name: security-scan-results
path: reports/
retention-days: 30
quality:
name: Code Quality
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Run SpotBugs
run: mvn spotbugs:check
- name: Run PMD
run: mvn pmd:check
- name: Run Checkstyle
run: mvn checkstyle:check
- name: Upload quality reports
uses: actions/upload-artifact@v4
if: always()
with:
name: quality-reports
path: |
**/target/spotbugsXml.xml
**/target/pmd.xml
**/target/checkstyle-result.xml
retention-days: 7