Update build.yml #18
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: Build Project | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
name: Gradle Setup | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: gradle/actions/wrapper-validation@v3 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
cache: 'gradle' | |
- name: Change Permissions | |
run: chmod +x ./gradlew | |
- name: Gradle Information | |
run: ./gradlew project dependencies | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
needs: setup | |
name: Test Project | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Setup Servers | |
run: | | |
docker build -t nexus-rest/nexus src/test/docker/nexus | |
docker run -d -p 8081:8081 --name nexus-rest nexus-rest/nexus | |
docker build -t jenkins-rest/jenkins src/test/docker/jenkins | |
docker run -d -p 8080:8080 --name jenkins-rest jenkins-rest/jenkins | |
- name: Wait for Jenkins | |
run: | | |
echo "Waiting for Jenkins to be ready..." | |
sleep 60 | |
until curl -s http://localhost:8080 | grep "Dashboard"; do | |
sleep 10 | |
done | |
- name: Wait for Nexus | |
run: | | |
echo "Waiting for Nexus to be ready..." | |
sleep 60 | |
until curl -s http://localhost:8081; do | |
sleep 10 | |
done | |
- name: Gradle Test | |
run: | | |
docker cp nexus-rest:/nexus-data/admin.password /tmp/admin.password | |
./gradlew test | |
rm -rf /tmp/admin.password | |
- name: Stop Servers | |
if: success() || failure() | |
run: | | |
docker stop jenkins-rest | |
docker rm jenkins-rest | |
docker stop nexus-rest | |
docker rm nexus-rest | |
- name: Collect JaCoCo Report | |
id: jacoco_reporter | |
uses: PavanMudigonda/[email protected] | |
with: | |
coverage_results_path: build/jacoco.xml | |
coverage_report_name: Code Coverage | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
skip_check_run: false | |
- name: Print JaCoCo Report | |
run: | | |
echo "| Outcome | Value |" >> $GITHUB_STEP_SUMMARY | |
echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY | |
echo "| Code Coverage % | ${{ steps.jacoco_reporter.outputs.coverage_percentage }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| :heavy_check_mark: Number of Lines Covered | ${{ steps.jacoco_reporter.outputs.covered_lines }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| :x: Number of Lines Missed | ${{ steps.jacoco_reporter.outputs.missed_lines }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| Total Number of Lines | ${{ steps.jacoco_reporter.outputs.total_lines }} |" >> $GITHUB_STEP_SUMMARY | |
- name: Upload Code Coverage Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report | |
path: "*/coverage-results.md" | |
build: | |
runs-on: ubuntu-latest | |
needs: setup | |
timeout-minutes: 30 | |
strategy: | |
matrix: | |
java-version: [ 17, 21 ] | |
name: Build Java Project | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK ${{ matrix.java-version }} | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: ${{ matrix.java-version }} | |
cache: 'gradle' | |
- name: Change Permissions | |
run: chmod +x ./gradlew | |
- name: Build with Gradle | |
run: ./gradlew assemble publishToMavenLocal | |
upload: | |
runs-on: ubuntu-latest | |
needs: build | |
timeout-minutes: 30 | |
name: Create Artifacts | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
cache: 'gradle' | |
- name: Change Permissions | |
run: chmod +x ./gradlew | |
- name: Build with Gradle | |
run: ./gradlew clean assemble | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: codemc-api | |
path: | | |
build/libs/*.jar | |