Add dependency between sign and publish tasks #142
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: 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: 17 | |
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: 17 | |
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: 17 | |
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: 17 | |
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: 17 | |
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 | |
with: | |
fetch-depth: 0 | |
- 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 sonar --stacktrace | |
shell: bash | |
deploy-snapshot: | |
needs: [ test, lint, analysis, assemble, coverage ] | |
if: ${{ github.ref == 'refs/heads/main' }} | |
runs-on: macos-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: 17 | |
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: macos-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: 17 | |
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: 17 | |
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 |