Skip to content

Update semver-ci.yml #131

Update semver-ci.yml

Update semver-ci.yml #131

Workflow file for this run

name: Semver CI
on:
push:
branches: [ main ]
tags: [ '[0-9]+.[0-9]+.[0-9]+' ]
paths-ignore:
- '**.md'
workflow_dispatch:
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
env:
DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Run all tests
run: ./gradlew allTests --stacktrace
shell: bash
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Run format check
run: ./gradlew ktlintCheck --stacktrace
shell: bash
analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Run code analysis
run: ./gradlew detekt --stacktrace
shell: bash
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: build/reports/detekt/detekt.sarif
- name: Upload analysis report
uses: actions/upload-artifact@v4
with:
name: analysis-report
path: build/reports/detekt
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Calculate coverage
run: ./gradlew koverXmlReport --stacktrace
shell: bash
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: build/reports/kover
assemble:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Run assemble
run: ./gradlew assemble --stacktrace
shell: bash
upload-reports:
needs: [ test, lint, analysis, assemble, coverage ]
runs-on: ubuntu-latest
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_NUMBER: ${{ github.run_number }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: zulu
- name: SonarCloud cache
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Download coverage report
uses: actions/download-artifact@v4
with:
name: coverage-report
path: build/reports/kover
- name: Download analysis report
uses: actions/download-artifact@v4
with:
name: analysis-report
path: build/reports/detekt
- name: Upload reports to SonarCloud
run: ./gradlew sonarqube --stacktrace
shell: bash
deploy-snapshot:
needs: [ test, lint, analysis, assemble, coverage ]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }}
BUILD_NUMBER: ${{ github.run_number }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Deploy snapshot
run: ./gradlew publish -Dsnapshot=true --stacktrace
shell: bash
deploy-release:
needs: [ test, lint, analysis, assemble, coverage ]
if: startsWith(github.ref, 'refs/tags')
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }}
BUILD_NUMBER: ${{ github.run_number }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Deploy release
run: ./gradlew publish --stacktrace
shell: bash
deploy-gh-pages:
needs: [ test, lint, analysis, assemble, coverage ]
if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: zulu
- name: Cache Konan
uses: ./.github/actions/cache-konan
- name: Cache Gradle
uses: ./.github/actions/cache-gradle
- name: Generate HTML docs
run: ./gradlew dokkaHtml --stacktrace
shell: bash
- name: Deploy docs to GitHub Pages
uses: JamesIves/[email protected]
with:
branch: gh-pages
folder: build/dokka