Use bash
Shell
#15
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: Change Permissions | |
run: chmod +x ./gradlew | |
- name: Gradle Test | |
run: ./gradlew test | |
- 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 | |
# Test Jenkins Server | |
test-jenkins: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
name: Test Jenkins Server | |
needs: test | |
env: | |
# For Test Server | |
JENKINS_USERNAME: "admin" | |
JENKINS_PASSWORD: "password" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Test Jenkins Server | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: jenkins/jenkins:lts | |
options: -v ${{ github.workspace }}:/work | |
shell: bash | |
run: | | |
cd work | |
chmod +x ./gradlew | |
sudo ./gradlew test | |
# Test Nexus Server | |
test-nexus: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
name: Test Nexus Server | |
needs: test | |
env: | |
# For Test Server | |
NEXUS_INSTANCE: "true" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Test Nexus Server | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: sonatype/nexus3 | |
options: -v ${{ github.workspace }}:/work | |
shell: bash | |
run: | | |
cd work | |
chmod +x ./gradlew | |
sudo ./gradlew test |