Update dependency gradle to v8.4 #1803
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
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-13 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Java JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Build | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Check Publication Metadata | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Ktlint | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: ktlintCheck --scan | |
- name: Archive ktlint results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Lint | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Cache Maven | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-maven- | |
- name: Run Android Unit Tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: test koverXmlReportRelease --scan --no-build-cache | |
- name: Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true | |
- name: Archive test results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: android-unit-test-results | |
path: "**/build/reports/tests/" | |
- name: Archive kover results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: kover-results | |
path: "**/build/reports/kover/" | |
ios_tests: | |
name: iOS Unit Tests | |
runs-on: macos-13 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Java JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Run iOS Unit Tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Run JS Unit Tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: jsTest --scan | |
- name: Archive test results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: js-unit-test-results | |
path: "**/build/reports/tests/" | |
lint_ios_podspec: | |
name: Lint iOS Podspec | |
runs-on: macos-13 | |
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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Install CocoaPods | |
run: bundle install | |
- name: Create podspec | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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@v5 | |
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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Publish library | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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-13 | |
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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Cache Konan | |
uses: actions/cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ github.sha }} | |
restore-keys: ${{ runner.os }}-konan- | |
- name: Install CocoaPods | |
run: bundle install | |
- name: Create podspec | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: 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 [email protected]: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@v3 | |
with: | |
distribution: "temurin" | |
java-version-file: ".java-version" | |
- name: Publish package | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: :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)) || '' }} |