[1.1.0] Rewrite Jenkins API #121
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@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: Gradle Information | |
run: ./gradlew project dependencies | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
needs: setup | |
permissions: | |
checks: write | |
pull-requests: write | |
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: Generate Docker Cache Key | |
id: docker_cache_key | |
run: | | |
files=$(find . -type f \( -name 'docker-compose.yml' -o -name 'Dockerfile' \)) | |
file_contents=$(cat $files) | |
key=$(echo "${file_contents}" | sha1sum | awk '{print $1}') | |
echo "key=${key}" >> "$GITHUB_OUTPUT" | |
- name: Load Docker Cache | |
uses: ScribeMD/[email protected] | |
with: | |
key: docker-${{ runner.os }}-${{ steps.docker_cache_key.outputs.key }} | |
- name: Change Permissions | |
run: chmod +x ./gradlew | |
- name: Gradle Test | |
run: bash .github/test.sh | |
- name: Stop Servers | |
if: success() || failure() | |
run: | | |
docker stop jenkins-rest | |
docker rm jenkins-rest | |
docker stop nexus-rest | |
docker rm nexus-rest | |
docker stop mariadb | |
docker rm mariadb | |
docker network rm codemc | |
- name: Collect JaCoCo Report | |
if: ${{ github.event_name != 'pull_request' }} | |
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 | |
minimum_coverage: 85 | |
fail_below_threshold: false | |
publish_only_summary: false | |
- name: Print JaCoCo Report | |
if: ${{ github.event_name != 'pull_request' }} | |
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 (Push) | |
if: ${{ github.event_name != 'pull_request' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report | |
path: "*/coverage-results.md" | |
- name: Upload Code Coverage Artifacts (Pull Request) | |
if: ${{ github.event_name == 'pull_request' }} | |
uses: madrapps/[email protected] | |
with: | |
paths: build/jacoco.xml | |
token: ${{ secrets.GITHUB_TOKEN }} | |
pass-emoji: ✅ | |
min-coverage-overall: 85 | |
min-coverage-changed-files: 90 | |
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 | |
dokka: | |
runs-on: ubuntu-latest | |
needs: [build, test] | |
name: Deploy Dokka | |
if: ${{ github.event_name != 'pull_request' && github.ref_name == 'master' }} | |
timeout-minutes: 30 | |
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 Dokka | |
run: ./gradlew clean dokkaHtml | |
- name: Deploy Dokka | |
run: bash dokka.sh ${GITHUB_SHA::7} |