Skip to content

Build

Build #228

Workflow file for this run

# This workflow will build a Java project with Gradle
name: Build
on:
schedule:
- cron: '40 5 * * SAT'
push:
branches: [ master ]
tags-ignore:
- 'v*'
jobs:
build:
name: πŸ—οΈ Build and Test
runs-on: ubuntu-latest
outputs:
next-version: ${{ steps.version.outputs.next-version }}
steps:
- name: Build trigger event πŸ”Ž
run: |
echo "event name - ${{github.event_name}}"
echo "github.ref - ${{github.ref}}"
- name: Checkout repository βš™οΈ
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Set up JDK 21 βš™οΈ
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle dependencies cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle wrapper cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Validate Gradle wrapper βš™οΈ
uses: gradle/actions/wrapper-validation@v4
- name: Grant execute permission for gradlew βš™οΈ
run: chmod +x gradlew
- name: Build and test πŸ—οΈ
run: ./gradlew clean build jacocoTestReport javadoc
- name: Get version number πŸ”’
id: get-version
uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Store next version πŸ”’
id: version
run: |
echo "next-version=${{ steps.get-version.outputs.tag_name }}" | cut -c -13,15- >> $GITHUB_OUTPUT
- name: Print next version πŸ”’
run: |
echo "Next version: ${{ steps.version.outputs.next-version }}"
code-analysis:
name: πŸ”Ž Code Analysis
needs: [build]
if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/master' && github.event_name != 'schedule' && github.repository == 'w3stling/mic' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository βš™οΈ
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Set up JDK 21 βš™οΈ
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Cache SonarCloud packages βš™οΈ
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
- name: Setup Gradle dependencies cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle wrapper cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Validate Gradle wrapper βš™οΈ
uses: gradle/actions/wrapper-validation@v4
- name: Grant execute permission for gradlew βš™οΈ
run: chmod +x gradlew
- name: Next version πŸ”’
run: |
echo "Next version: ${{ needs.build.outputs.next-version }}"
- name: Analyze code πŸ”ŽοΈ
run: ./gradlew test jacocoTestReport sonar --info -Dsonar.projectVersion=${{ needs.build.outputs.next-version }}-SNAPSHOT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
documentation:
name: πŸ“š Publish Javadoc
needs: [build]
if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/master' && github.event_name != 'schedule' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository βš™οΈ
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Set up JDK 21 βš™οΈ
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle dependencies cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle wrapper cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Validate Gradle wrapper βš™οΈ
uses: gradle/actions/wrapper-validation@v4
- name: Grant execute permission for gradlew βš™οΈ
run: chmod +x gradlew
- name: Next version πŸ”’
run: |
echo "Next version: ${{ needs.build.outputs.next-version }}"
- name: Generate Javadoc πŸ“
run: ./gradlew javadoc
- name: Deploy Javadoc πŸ“š
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: build/docs/javadoc
target-folder: javadoc/${{ needs.build.outputs.next-version }}-SNAPSHOT
commit-message: Publishing javadoc
clean: true
dry-run: false
publish-snapshot:
name: πŸš€ Publish Snapshot
needs: [build]
if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/master' && github.event_name != 'schedule' && github.repository == 'w3stling/mic' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository βš™οΈ
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Set up JDK 21 βš™οΈ
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle dependencies cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle wrapper cache βš™οΈ
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Validate Gradle wrapper βš™οΈ
uses: gradle/actions/wrapper-validation@v4
- name: Grant execute permission for gradlew βš™οΈ
run: chmod +x gradlew
- name: Next version πŸ”’
run: |
echo "Next version: ${{ needs.build.outputs.next-version }}"
- name: Publish snapshot build πŸš€
env:
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USERNAME }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.PGP_SECRET }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.PGP_PASSPHRASE }}
run: ./gradlew publishToSonatype -Pversion=${{ needs.build.outputs.next-version }}-SNAPSHOT