diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 71ba756e..16f8ba24 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -100,48 +100,3 @@ jobs: # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md - name: Generate and submit dependency graph uses: gradle/actions/dependency-submission@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - - generate-api-reference: - needs: build - - runs-on: ubuntu-latest - permissions: - contents: read - - steps: - - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. - # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md - - name: Setup Gradle - uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - - - name: Generate Dokkatoo site - run: ./gradlew :dokkatooGenerate - - name: Upload GitHub Pages artifact - uses: actions/upload-pages-artifact@v3.0.1 - with: - path: 'build/dokka/html' - - deploy-api-reference: - needs: generate-api-reference - - permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/on_release_tag.yml b/.github/workflows/on_release_tag.yml new file mode 100644 index 00000000..4ec44204 --- /dev/null +++ b/.github/workflows/on_release_tag.yml @@ -0,0 +1,127 @@ +name: On release tag + +on: + push: + tags: + - '^[0-9]+\.[0-9]+\.[0-9]+(?!.*-SNAPSHOT).*$' + +jobs: + detekt: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + - name: Run Detekt on commonMain + run: ./gradlew detektCommonMain + + validate-binary-compatibility: + runs-on: macos-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + - name: Validate binary compatibility + run: ./gradlew apiCheck + + test-public-api: + runs-on: macos-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + - name: Test public API + run: ./gradlew :apiTester:assemble + + build: + needs: [ detekt, validate-binary-compatibility, test-public-api ] + runs-on: macos-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. + # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + + - name: Build libraries + run: ./gradlew assemble -x :composeApp:assemble + - name: Build sample + run: ./gradlew :composeApp:assembleDebug + + generate-api-reference: + needs: build + + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - uses: gradle/wrapper-validation-action@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. + # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + + - name: Generate Dokkatoo site + run: ./gradlew :dokkatooGenerate + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v3.0.1 + with: + path: 'build/dokka/html' + + deploy-api-reference: + needs: generate-api-reference + + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 999546c8..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Release - -on: - push: - tags: - - '[0-9]+.[0-9]+.[0-9]+-[0-9]+.[0-9]+.[0-9]+-[0-9]+.[0-9]+.[0-9]+' - -jobs: - - release: - if: github.repository == 'JayShortway/kobankat' - runs-on: macos-latest - permissions: - id-token: write - contents: write - pull-requests: read - steps: - - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - name: Setup Gradle - uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - - - name: Publish to Maven Central - run: ./gradlew publishAllPublicationsToCentralPortal --no-configuration-cache - env: - ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_CENTRAL_USERNAME }} - ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_CENTRAL_PASSWORD }} - ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY }} - ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY_PASSWORD }} - - - name: Create GitHub Release - uses: marvinpinto/action-automatic-releases@v1.2.1 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - prerelease: false \ No newline at end of file