Skip to content

Add matrix workflow (#259) #138

Add matrix workflow (#259)

Add matrix workflow (#259) #138

Workflow file for this run

name: Main
on:
push:
branches:
- main
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
detekt:
name: Detekt - Main
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Detekt - Main
run: ./gradlew detektAll
build-storage-base:
name: Build storage base - Main
if: ${{ success() }}
needs: [ detekt ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build storage base - Main
run: ./gradlew :storage-base:build
build-ui-base:
name: Build ui base - Main
if: ${{ success() }}
needs: [ detekt ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build ui base - Main
run: ./gradlew :ui-base:build
build-ui-tiles:
name: Build ui tiles - Main
if: ${{ success() }}
needs: [ build-ui-base ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build ui tiles - Main
run: ./gradlew :ui-tiles:build
build-ui-tiles-extended:
name: Build ui tiles extended - Main
if: ${{ success() }}
needs: [ build-ui-base ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build ui tiles extended - Main
run: ./gradlew :ui-tiles-extended:build
build-storage-memory:
name: Build storage memory - Main
if: ${{ success() }}
needs: [ build-storage-base ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build storage memory - Main
run: ./gradlew :storage-memory:build
build-storage-disk:
name: Build storage disk - Main
if: ${{ success() }}
needs: [ build-storage-base ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build
run: ./gradlew :storage-disk:build
build-sample-android:
name: Build sample Android- PR
if: ${{ success() }}
needs: [ build-storage-memory, build-storage-disk, build-ui-tiles, build-ui-tiles-extended ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build sample Android - Main
run: ./gradlew :composeApp:assembleDebug :composeApp:assembleRelease
build-sample-desktop:
name: Build sample Desktop - Main
if: ${{ success() }}
needs: [ build-storage-memory, build-storage-disk, build-ui-tiles, build-ui-tiles-extended ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build sample Desktop - Main
run: ./gradlew :composeApp:compileKotlinDesktop
build-sample-iOS:
name: Build sample iOS - Main
if: ${{ success() }}
needs: [ build-storage-memory, build-storage-disk, build-ui-tiles, build-ui-tiles-extended ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build sample iOS - Main
run: ./gradlew :composeApp:compileKotlinIosArm64 :composeApp:compileKotlinIosX64 :composeApp:compileKotlinIosSimulatorArm64
build-sample-js:
name: Build sample JS - Main
if: ${{ success() }}
needs: [ build-storage-memory, build-storage-disk, build-ui-tiles, build-ui-tiles-extended ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Build sample JS - Main
run: ./gradlew jsBrowserDistribution
- name: Upload your page as github pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: composeApp/build/dist/js/productionExecutable/
check-sign:
name: Check signature - Main
if: ${{ success() }}
needs: [ build-sample-android, build-sample-iOS, build-sample-desktop, build-sample-js ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Check signature - Main
run: ./gradlew signReleasePublication -Psigning.secretKeyRingFile=../secrets.gpg -Psigning.keyId=${{ secrets.GPG_KEY_NAME }} -Psigning.password=${{ secrets.GPG_PASSPHRASE }}
fake-publish:
name: Fake publish - Main
if: ${{ success() }}
needs: [ build-sample-android, build-sample-iOS, build-sample-desktop, build-sample-js ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Publish to MavenLocal
run: ./gradlew publishToMavenLocal -Psigning.secretKeyRingFile=../secrets.gpg -Psigning.keyId=${{ secrets.GPG_KEY_NAME }} -Psigning.password=${{ secrets.GPG_PASSPHRASE }}
publish-dry:
name: Dry run publish - Main
if: ${{ success() }}
needs: [ check-sign, build-sample-android, build-sample-iOS, build-sample-desktop, build-sample-js ]
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: adopt
java-version: 17
- name: Publish to MavenCentral (dry)
run: ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache --max-workers 1 -Psigning.secretKeyRingFile=../secrets.gpg -Psigning.keyId=${{ secrets.GPG_KEY_NAME }} -Psigning.password=${{ secrets.GPG_PASSPHRASE }} -PmavenCentralUsername=${{ secrets.OSSRH_USERNAME }} -PmavenCentralPassword=${{ secrets.OSSRH_PASSWORD }} --dry-run
# Deployment job
deploy:
name: Deploy to Github pages
if: ${{ success() }}
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: [ build-sample-js ]
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4