refactor: KitManagerImpl user-attribute forwarding and UserAttributeListener cleanup #5506
Workflow file for this run
This file contains hidden or 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 and Test" | |
| on: [workflow_dispatch, pull_request] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| checks: write | |
| id-token: write | |
| jobs: | |
| # Code quality checks | |
| trunk-check: | |
| name: Trunk code check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 #v5.0.0 | |
| - name: Trunk Check | |
| uses: trunk-io/trunk-action@75699af9e26881e564e9d832ef7dc3af25ec031b # v1.2.4 | |
| with: | |
| check-mode: pull_request | |
| pr-check-hadcoded-secrets: | |
| name: "Check PR for hardcoded secrets" | |
| uses: mParticle/mparticle-workflows/.github/workflows/security-hardcoded-secrets.yml@main | |
| pr-branch-check-name: | |
| name: "Check PR for semantic branch name" | |
| uses: mParticle/mparticle-workflows/.github/workflows/pr-branch-check-name.yml@main | |
| pr-title-check: | |
| name: "Check PR for semantic title" | |
| uses: mParticle/mparticle-workflows/.github/workflows/pr-title-check.yml@main | |
| instrumented-core: | |
| uses: ./.github/workflows/instrumented-tests.yml | |
| with: | |
| display_name: Core | |
| gradle_command: ":android-core:cAT -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=none --info --stacktrace" | |
| artifact_name: instrumented-core-results | |
| artifact_path: android-core/build/reports/androidTests/connected/** | |
| instrumented-kit-base: | |
| uses: ./.github/workflows/instrumented-tests.yml | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [0, 1, 2, 3] | |
| with: | |
| display_name: "Kit Base Shard ${{ matrix.shard }}/4" | |
| gradle_command: ":android-kit-base:cAT -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=none -Pandroid.testInstrumentationRunnerArguments.numShards=4 -Pandroid.testInstrumentationRunnerArguments.shardIndex=${{ matrix.shard }}" | |
| artifact_name: "instrumented-kit-base-results-shard-${{ matrix.shard }}" | |
| artifact_path: android-kit-base/build/reports/androidTests/connected/** | |
| instrumented-testutils: | |
| uses: ./.github/workflows/instrumented-tests.yml | |
| with: | |
| display_name: Testutils | |
| gradle_command: ":testutils:cAT -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=none --info --stacktrace" | |
| artifact_name: instrumented-testutils-results | |
| artifact_path: testutils/build/reports/androidTests/connected/** | |
| instrumented-orchestrator: | |
| uses: ./.github/workflows/instrumented-tests.yml | |
| with: | |
| display_name: Orchestrator | |
| gradle_command: "-Porchestrator=true :android-core:cAT -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=none --stacktrace" | |
| artifact_name: instrumented-orchestrator-results | |
| artifact_path: android-core/build/orchestrator/** | |
| unit-tests: | |
| name: "Unit Tests" | |
| timeout-minutes: 15 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: "Checkout Branch" | |
| uses: actions/checkout@v6 | |
| - name: "Install JDK 17" | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: "Run Unit Tests" | |
| run: ./gradlew test | |
| - name: "Print Android Unit Tests Report" | |
| uses: asadmansr/android-test-report-action@384cd31388782f4106dc4a1b37eea2ff02e0aad7 #v1.2.0 | |
| if: always() | |
| - name: "Archive Unit Test Results" | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: "unit-tests-results" | |
| path: ./**/build/reports/** | |
| lint-checks: | |
| name: "Lint Checks" | |
| timeout-minutes: 20 | |
| runs-on: macos-latest | |
| steps: | |
| - name: "Checkout Branch" | |
| uses: actions/checkout@v6 | |
| - run: echo "ORG_GRADLE_PROJECT_VERSION=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - run: echo "ORG_GRADLE_PROJECT_version=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - name: "Install JDK 17" | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: "Run Android Core SDK Lint" | |
| run: ./gradlew lint | |
| - name: "Setup Android Kit Lint" | |
| run: ./gradlew publishMavenPublicationToMavenLocal | |
| - name: "Run Android Kit Lint" | |
| run: ./gradlew -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true lint | |
| - name: "Archive Lint Test Results" | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: "lint-results" | |
| path: ./**/build/reports/** | |
| kotlin-lint-checks: | |
| name: "Kotlin Lint Checks" | |
| timeout-minutes: 15 | |
| runs-on: macos-latest | |
| steps: | |
| - name: "Checkout Branch" | |
| uses: actions/checkout@v6 | |
| - run: echo "ORG_GRADLE_PROJECT_VERSION=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - run: echo "ORG_GRADLE_PROJECT_version=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - name: "Install JDK 17" | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: "Run Android Core SDK Kotlin Lint" | |
| run: ./gradlew ktlintCheck | |
| - name: "Setup Android Kit Kotlin Lint" | |
| run: ./gradlew publishMavenPublicationToMavenLocal | |
| - name: "Run Android Kit Kotlin Lint" | |
| run: ./gradlew -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true ktlintCheck | |
| - name: "Archive Kotlin Lint Test Results" | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: "kotlin-lint-results" | |
| path: ./**/build/reports/** | |
| security-checks: | |
| name: "Security Lint Checks" | |
| uses: mparticle/mparticle-workflows/.github/workflows/security-checks.yml@main | |
| with: | |
| base_branch: main | |
| kit-compatibility-test: | |
| name: "Kit Compatibility Test" | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - name: "Checkout Branch" | |
| uses: actions/checkout@v6 | |
| - run: echo "ORG_GRADLE_PROJECT_VERSION=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - run: echo "ORG_GRADLE_PROJECT_version=$(head -n 1 VERSION)" >> $GITHUB_ENV | |
| - name: "Install JDK 17" | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "zulu" | |
| java-version: "17" | |
| - name: "Generate Core Release Build" | |
| run: ./gradlew publishMavenPublicationToMavenLocal | |
| - name: "Run Kit-Base Release Tests and Build" | |
| run: ./gradlew :android-kit-base:testRelease | |
| - name: "Run Kit Release Tests and Build" | |
| run: ./gradlew -p kits testRelease -c ../settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true | |
| - name: "Run Isolated Kit Compatibility Tests (urbanairship)" | |
| run: ./gradlew -Pmparticle.kit.mparticleFromMavenLocalOnly=true -p kits/urbanairship/urbanairship-20 -PisRelease=true testRelease | |
| automerge-dependabot: | |
| name: "Save PR Number for Dependabot Automerge" | |
| needs: | |
| [ | |
| instrumented-core, | |
| instrumented-kit-base, | |
| instrumented-testutils, | |
| instrumented-orchestrator, | |
| unit-tests, | |
| lint-checks, | |
| kotlin-lint-checks, | |
| kit-compatibility-test, | |
| ] | |
| uses: mParticle/mparticle-workflows/.github/workflows/dependabot-save-pr-number.yml@main | |
| pr-notify: | |
| if: > | |
| github.event_name == 'pull_request' && | |
| github.event.pull_request.draft == false | |
| needs: | |
| - instrumented-core | |
| - instrumented-kit-base | |
| - instrumented-testutils | |
| - instrumented-orchestrator | |
| - unit-tests | |
| - lint-checks | |
| - kotlin-lint-checks | |
| - security-checks | |
| name: Notify GChat | |
| uses: ROKT/rokt-workflows/.github/workflows/oss_pr_opened_notification.yml@main | |
| secrets: | |
| gchat_webhook: ${{ secrets.GCHAT_PRS_WEBHOOK }} |