Skip to content

Build CI

Build CI #3

Workflow file for this run

name: Build CI
on:
workflow_dispatch:
push:
branches: [ "main" ]
paths-ignore:
- '**.md'
pull_request:
branches: [ "main" ]
paths-ignore:
- '**.md'
permissions:
contents: read
checks: write
pages: write
id-token: write
concurrency:
group: "build"
cancel-in-progress: false
env:
JAVA_VERSION: "17"
JAVA_DISTR: 'corretto'
jobs:
test:
name: "πŸ€– Unit Tests"
runs-on: ubuntu-20.04
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: ${{ env.JAVA_DISTR }}
java-version: ${{ env.JAVA_VERSION }}
- name: Setup gradle
uses: gradle/gradle-build-action@v2.5.1
- name: Run tests
run: ./gradlew allTests --stacktrace
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: success() || failure() # always run even if the previous step fails
with:
report_paths: '**/build/test-results/test*/TEST-*.xml'
android-lint:
name: "πŸ” Android Lint"
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: ${{ env.JAVA_DISTR }}
java-version: ${{ env.JAVA_VERSION }}
- name: Increase gradle daemon memory
run: "echo \"org.gradle.jvmargs=-Xmx4096m\" >> gradle.properties"
- name: Setup gradle
uses: gradle/gradle-build-action@v2.5.1
- name: Lint sources
run: ./gradlew androidApp:lint --stacktrace
- name: Generate GitHub annotations
uses: yutailang0119/action-android-lint@v3
with:
report-path: '**/build/reports/*.xml'
assemble-apk:
name: "πŸ“¦ Assemble Android APKs"
needs:
- test
- android-lint
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: ${{ env.JAVA_DISTR }}
java-version: ${{ env.JAVA_VERSION }}
- name: Setup gradle
uses: gradle/gradle-build-action@v2.5.1
- name: Assemble debug APKs
run: ./gradlew androidApp:assembleDebug --stacktrace
- name: Upload APKs
uses: actions/upload-artifact@v3
with:
name: APKs
path: androidApp/build/outputs/apk/**/androidApp-debug.apk
package-desktop:
name: "πŸ“¦ Package Desktop"
needs:
- test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macOS-latest ]
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: ${{ env.JAVA_DISTR }}
java-version: ${{ env.JAVA_VERSION }}
- name: Setup gradle
uses: gradle/gradle-build-action@v2.5.1
- name: Package distribution for current OS
run: ./gradlew packageDistributionForCurrentOS --stacktrace
- name: Upload distributions
uses: actions/upload-artifact@v3
with:
name: Desktop
path: desktopApp/build/compose/binaries/main/**/*
package-web:
name: "πŸ“¦ Build and Deploy Web"
runs-on: ubuntu-latest
needs:
- test
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: ${{ env.JAVA_DISTR }}
java-version: ${{ env.JAVA_VERSION }}
- name: Setup gradle
uses: gradle/gradle-build-action@v2.5.1
- name: Build Web
run: ./gradlew wasmJsBrowserDistribution --stacktrace
- name: Upload Web artifacts
uses: actions/upload-pages-artifact@v3
with:
path: ./composeApp/build/dist/wasmJs/productionExecutable/
deploy-web:
name: "πŸš€ Deploy Web"
runs-on: ubuntu-latest
environment:
name: gh-pages
url: ${{ steps.deployment.outputs.page_url }}
needs:
- package-web
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4