Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Fix ESPI compliance: Remove ObjectEntity and make all customer entiti… #3

Fix ESPI compliance: Remove ObjectEntity and make all customer entiti…

Fix ESPI compliance: Remove ObjectEntity and make all customer entiti… #3

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
env:
JAVA_VERSION: '21'
MAVEN_OPTS: -Xmx3200m
jobs:
test:
name: Test and Security Scan
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_DATABASE: testdb
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for better analysis
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.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: Verify Maven installation
run: |
mvn --version
java --version
- name: Run Maven compile
run: mvn clean compile -Dmaven.test.skip=true
continue-on-error: true
id: compile
- name: Compile status check
run: |
if [ "${{ steps.compile.outcome }}" = "failure" ]; then
echo "⚠️ Compilation has errors but continuing for analysis"
echo "This is expected during Spring Boot 3.5 migration"
else
echo "✅ Compilation successful"
fi
- name: Run security vulnerability scan
run: |
mvn org.owasp:dependency-check-maven:check \
-DfailBuildOnCVSS=0 \
-DsuppressionsFile=false \
-DskipSystemScope=false || true
continue-on-error: true
- name: Run unit tests (if compilation succeeds)
if: steps.compile.outcome == 'success'
run: mvn test -Dmaven.failsafe.skip=true
continue-on-error: true
- name: Generate test report
uses: dorny/test-reporter@v1
if: always()
with:
name: Maven Tests
path: target/surefire-reports/*.xml
reporter: java-junit
fail-on-error: false
- name: Upload OWASP Dependency Check results
uses: actions/upload-artifact@v4
if: always()
with:
name: dependency-check-report
path: target/dependency-check-report.html
retention-days: 30
build:
name: Build and Package
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: maven
- name: Build JAR (skip tests for now)
run: mvn clean package -Dmaven.test.skip=true
continue-on-error: true
- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: jar-artifacts
path: target/*.jar
retention-days: 30
code-quality:
name: Code Quality Analysis
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: maven
- name: Run SonarCloud analysis
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
if [ -n "$SONAR_TOKEN" ]; then
mvn sonar:sonar \
-Dsonar.projectKey=GreenButtonAlliance_OpenESPI-Common-java \
-Dsonar.organization=greenbuttonalliance \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.token=$SONAR_TOKEN \
-Dmaven.test.skip=true || true
else
echo "⚠️ SONAR_TOKEN not configured, skipping SonarCloud analysis"
fi
security:
name: Security Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: 'trivy-results.sarif'
- name: Check for hardcoded secrets
uses: trufflesecurity/trufflehog@main
with:
path: ./
base: main
head: HEAD
extra_args: --debug --only-verified