diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml new file mode 100644 index 00000000..9bdc339f --- /dev/null +++ b/.github/workflows/gradle-build.yml @@ -0,0 +1,82 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle +name: Build +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] +jobs: + validation: + name: "Gradle wrapper validation" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.5 + - uses: gradle/wrapper-validation-action@v1.0.4 + build: + name: "Build and publish" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.5 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'temurin' + - name: Cache SonarCloud packages + uses: actions/cache@v2.1.6 + if: env.SONAR_TOKEN != null && env.SONAR_TOKEN != '' + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Build + id: gradle + uses: eskatos/gradle-command-action@v1 + with: + arguments: check + wrapper-cache-enabled: true + dependencies-cache-enabled: true + configuration-cache-enabled: true + - name: "Comment build scan url" + uses: actions/github-script@v5 + if: github.event_name == 'pull_request' && failure() + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: '❌ ${{ github.workflow }} failed: ${{ steps.gradle.outputs.build-scan-url }}' + }) + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action/composite@v1 + if: always() + with: + files: '**/test-results/**/*.xml' + - name: Analyze with SonarCloud + continue-on-error: true + if: env.SONAR_TOKEN != null && env.SONAR_TOKEN != '' + uses: eskatos/gradle-command-action@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + arguments: sonarqube -Psonar.organization=swagger2markup + dependencies-cache-enabled: true + configuration-cache-enabled: true + - name: Publish to Sonatype + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + uses: eskatos/gradle-command-action@v1 + env: + ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }} + ORG_GRADLE_PROJECT_sonatypePassword : ${{ secrets.SONATYPE_PASSWORD }} + with: + arguments: publishToSonatype + dependencies-cache-enabled: true + configuration-cache-enabled: true