dev -> main #523
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
# Thanks to https://github.com/coil-kt/coil/blob/master/.github/workflows/ci.yml | |
name: CI | |
on: | |
push: | |
tags: | |
- '*' | |
pull_request: | |
jobs: | |
publish_archives: | |
name: Publish Archives | |
if: startsWith(github.ref, 'refs/tags/') | |
strategy: | |
matrix: | |
os: [macOS-latest, ubuntu-latest, windows-latest] | |
runs-on: ${{matrix.os}} | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: | | |
11 | |
15 | |
17 | |
- name: Copy CI gradle.properties | |
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties | |
- name: Checkout Gradle Build Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
!~/.gradle/wrapper/dists/**/gradle*.zip | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
gradle-${{ runner.os }}- | |
- name: Cache konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
gradle-${{ runner.os }}- | |
- name: Prepare Gradle Publish properties | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
echo "gradle.publish.key=${{ secrets.GRADLE_PUBLISH_KEY }}" >> ~/.gradle/gradle.properties | |
echo "gradle.publish.secret=${{ secrets.GRADLE_PUBLISH_SECRET }}" >> ~/.gradle/gradle.properties | |
- name: Release Plugin | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
cd plugin-build | |
./gradlew publishPlugins | true | |
- name: Publish the macOS artifacts | |
if: matrix.os == 'macOS-latest' | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_PRIVATE_KEY }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} | |
run: | | |
./gradlew aboutlibraries-core:publishAllPublicationsToMavenCentralRepository --no-daemon -Plibrary_core_only --no-configure-on-demand --no-parallel | |
./gradlew aboutlibraries-compose-m2:publishAllPublicationsToMavenCentralRepository -x test -x lint -Plibrary_compose_only --no-configure-on-demand --no-parallel | |
./gradlew aboutlibraries-compose-m3:publishAllPublicationsToMavenCentralRepository -x test -x lint -Plibrary_compose_m3_only --no-configure-on-demand --no-parallel | |
- name: Publish the windows artifact | |
if: matrix.os == 'windows-latest' | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_PRIVATE_KEY }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} | |
run: ./gradlew aboutlibraries-core:publishMingwX64PublicationToMavenCentralRepository -Plibrary_core_only --no-configure-on-demand --no-parallel | |
- name: Publish the linux artifact | |
if: matrix.os == 'ubuntu-latest' | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_PRIVATE_KEY }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} | |
run: | | |
./gradlew aboutlibraries-core:publishLinuxX64PublicationToMavenCentralRepository -Plibrary_core_only --no-configure-on-demand --no-parallel | |
./gradlew aboutlibraries:publishAllPublicationsToMavenCentralRepository -x test -x lint -Plibrary_only --no-configure-on-demand --no-parallel | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 100 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: | | |
11 | |
15 | |
17 | |
- name: Validate gradle wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Copy CI gradle.properties | |
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties | |
- name: Checkout Gradle Build Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
!~/.gradle/wrapper/dists/**/gradle*.zip | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
gradle-${{ runner.os }}- | |
- name: Publish plugin locally | |
run: | | |
cd plugin-build | |
./gradlew publishToMavenLocal | |
- name: Build Debug | |
run: ./gradlew app:assembleDebug | |
- name: Run Lint | |
if: github.event_name == 'pull_request' | |
run: ./gradlew lintDebug | |
- name: Setup Ruby | |
if: github.event_name == 'pull_request' | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.0' | |
bundler-cache: true | |
- name: Run Danger | |
if: github.event_name == 'pull_request' | |
run: | | |
gem install danger | |
bundle exec danger --dangerfile=Dangerfile --danger_id=danger-pr | |
env: | |
DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Prepare Keystore and Local. | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
echo "${{ secrets.KEYSTORE }}" > opensource.jks.asc | |
gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "opensource.jks.asc" > "app/opensource.jks" | |
echo "${{ secrets.SIGNING_GRADLE }}" > signing.gradle.asc | |
gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "signing.gradle.asc" > "app/signing.gradle" | |
echo "openSource.signing.file=signing.gradle" >> local.properties | |
- name: Build Release App | |
if: startsWith(github.ref, 'refs/tags/') | |
run: ./gradlew app:assembleStaging app:assembleRelease app:bundleRelease | |
- name: Collect artifacts | |
run: | | |
COLLECT_PWD=${PWD} | |
mkdir -p "artifacts" | |
find . -name "*-staging.apk" -type f -exec cp {} "artifacts" \; | |
find . -name "*-release.apk" -type f -exec cp {} "artifacts" \; | |
find . -name "*-release.aab" -type f -exec cp {} "artifacts" \; | |
- name: Archive Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "App-Artifacts" | |
path: artifacts/* | |
- name: Build Changelog | |
id: github_release | |
uses: mikepenz/release-changelog-builder-action@v4 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
configuration: ".github/config/configuration.json" | |
ignorePreReleases: ${{ !contains(github.ref, '-') }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Release | |
uses: mikepenz/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
body: ${{steps.github_release.outputs.changelog}} | |
prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-b') || contains(github.ref, '-a') }} | |
files: artifacts/* | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |