Skip to content

Update dependency com.android.tools.build:gradle to v8.6.0 #2168

Update dependency com.android.tools.build:gradle to v8.6.0

Update dependency com.android.tools.build:gradle to v8.6.0 #2168

Workflow file for this run

name: Build Library
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
inputs:
triggerRelease:
description: 'Release Build'
required: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
ORG_GRADLE_PROJECT_releaseBuild: ${{ github.event_name == 'workflow_dispatch' && inputs.triggerRelease && github.ref == 'refs/heads/main' }}
ORG_GRADLE_PROJECT_versionSuffix: ${{ (github.event_name == 'pull_request' && format('PR{0}', github.event.pull_request.number)) || '' }}
jobs:
build:
name: Build
# run on mac so iOS compilation is executed as well
runs-on: macos-14
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Build
run: ./gradlew assemble --scan
check_metadata:
name: Check Publication Metadata
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Check Publication Metadata
run: ./gradlew generateMetadataFileForKotlinMultiplatformPublication --scan
ktlint:
name: Ktlint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Ktlint
run: ./gradlew ktlintCheck --scan
- name: Archive ktlint results
if: always()
uses: actions/upload-artifact@v4
with:
name: ktlint-results
path: "**/build/reports/ktlint/"
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Lint
run: ./gradlew lint --scan
android_tests:
name: Android Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.sha }}
restore-keys: ${{ runner.os }}-maven-
- name: Run Android Unit Tests
run: ./gradlew test koverXmlReportRelease --scan --no-build-cache
- name: Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: Archive test results
if: always()
uses: actions/upload-artifact@v4
with:
name: android-unit-test-results
path: "**/build/reports/tests/"
- name: Archive kover results
if: always()
uses: actions/upload-artifact@v4
with:
name: kover-results
path: "**/build/reports/kover/"
ios_tests:
name: iOS Unit Tests
runs-on: macos-14
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run iOS Unit Tests
run: ./gradlew iosX64Test iosX64BackgroundTest --scan
js_tests:
name: JS Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run JS Unit Tests
run: ./gradlew jsTest --scan
- name: Archive test results
if: always()
uses: actions/upload-artifact@v4
with:
name: js-unit-test-results
path: "**/build/reports/tests/"
lint_ios_podspec:
name: Lint iOS Podspec
runs-on: macos-14
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Create podspec
run: ./gradlew podspec
- name: Lint podspec
run: bundle exec pod spec lint *.podspec --allow-warnings --verbose
check_version:
name: Check Version is Unreleased
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
tag: ${{ steps.tag_name.outputs.tag }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Find Version
id: version
run: grep ^version= gradle.properties >> $GITHUB_OUTPUT
- name: Generate Tag Name
id: tag_name
run: echo tag=$TAG_NAME >> $GITHUB_OUTPUT
env:
TAG_NAME: v${{ steps.version.outputs.version }}
- name: Check if version was already released
run: "! git ls-remote -t --exit-code origin $TAG_NAME"
env:
TAG_NAME: ${{ steps.tag_name.outputs.tag }}
tag_release:
name: Tag Release & Bump Version
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' && inputs.triggerRelease && github.ref == 'refs/heads/main'
needs: [ build, check_metadata, ktlint, lint, android_tests, ios_tests, js_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create Tag
env:
TAG_NAME: ${{ needs.check_version.outputs.tag }}
run: |
git tag $TAG_NAME
git push origin $TAG_NAME
- name: Generate next version
id: bump_version
uses: actions-ecosystem/action-bump-semver@v1
with:
current_version: ${{ needs.check_version.outputs.version }}
level: patch
- name: Update version for new development
run: sed -i "s/version=${{ needs.check_version.outputs.version }}/version=${{ steps.bump_version.outputs.new_version }}/" gradle.properties
- name: Create Version Bump Pull Request
uses: peter-evans/create-pull-request@v6
with:
branch: "versionBump/${{ steps.bump_version.outputs.new_version }}"
title: "Bump version after release"
commit-message: "Bump version to ${{steps.bump_version.outputs.new_version}}"
deploy:
name: Publish Library
runs-on: ubuntu-latest
if: |
(github.event_name == 'push' && github.ref == 'refs/heads/main') ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Publish PR SNAPSHOT: Maven')) ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
needs: [ build, check_metadata, ktlint, lint, android_tests, ios_tests, js_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Publish library
run: ./gradlew publish --scan
env:
ORG_GRADLE_PROJECT_cruGlobalMavenRepositoryUsername: ${{ secrets.JFROG_USERNAME }}
ORG_GRADLE_PROJECT_cruGlobalMavenRepositoryPassword: ${{ secrets.JFROG_PASSWORD }}
deploy_ios_podspec:
name: Publish iOS Podspec
runs-on: macos-14
if: |
(github.event_name == 'push' && github.ref == 'refs/heads/main') ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Publish PR SNAPSHOT: CocoaPods')) ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
needs: [ build, check_metadata, ktlint, lint, ios_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Create podspec
run: ./gradlew podspec
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
known_hosts: ${{ secrets.KNOWN_HOSTS }}
- name: Add CruGlobal CocoaPods Repo
run: bundle exec pod repo add CruGlobal git@github.com:CruGlobal/cocoapods-specs.git
- name: Push podspec
run: bundle exec pod repo push CruGlobal *.podspec --allow-warnings
deploy_npm:
name: Publish npm package
runs-on: ubuntu-latest
if: |
(github.event_name == 'push' && github.ref == 'refs/heads/main') ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Publish PR SNAPSHOT: npm')) ||
(github.event_name == 'workflow_dispatch' && inputs.triggerRelease && github.ref == 'refs/heads/main')
needs: [ build, check_metadata, ktlint, lint, js_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Publish package
run: ./gradlew :publishing:npm:publish --scan
env:
ORG_GRADLE_PROJECT_npmPublishRegistryNpmjsAuthToken: ${{ secrets.NPM_PUBLISH_TOKEN }}
ORG_GRADLE_PROJECT_npmPublishTag: ${{ (github.event_name == 'pull_request' && format('pr{0}', github.event.pull_request.number)) || '' }}