diff --git a/.circleci/config.yml b/.circleci/config.yml index 292f1fa100..dfa7716a19 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2097,6 +2097,11 @@ workflows: pattern: "^(main|release/.*)$" value: << pipeline.git.branch >> - equal: [run-manual-tests, << pipeline.parameters.action >>] + # Exclude automatic bot branches (they use run-all-tests-auto instead) + - not: + matches: + pattern: "^(dependabot/.*|bump/.*|generated_snapshots/.*)$" + value: << pipeline.git.branch >> jobs: # ============================================================= # Reduced Test Suite: Auto-run on every push @@ -2295,6 +2300,197 @@ workflows: - run-all-maestro-e2e-tests - docs-build + # ============================================================= + # Automatic bot PRs: same jobs as run-all-tests but without + # the approve-full-tests manual approval gate. + # Matches branches from dependabot, RCGitBot version bumps, + # and RCGitBot generated snapshot PRs. + # ============================================================= + run-all-tests-auto: + when: + and: + - not: + equal: [scheduled_pipeline, << pipeline.trigger_source >>] + - not: + equal: ["release-train", << pipeline.schedule.name >>] + - not: + equal: [bump, << pipeline.parameters.action >>] + - not: << pipeline.parameters.generate_snapshots >> + - not: << pipeline.parameters.generate_revenuecatui_snapshots >> + - not: << pipeline.parameters.generate_swiftinterface >> + - not: + matches: + pattern: "^(main|release/.*)$" + value: << pipeline.git.branch >> + - matches: + pattern: "^(dependabot/.*|bump/.*|generated_snapshots/.*)$" + value: << pipeline.git.branch >> + jobs: + # ============================================================= + # Reduced Test Suite (same as run-all-tests) + # ============================================================= + - lint + - check-api-changes: + context: + - slack-secrets-ios + - validate-package-swift: + name: validate-package-swift-5.8 + xcode_version: "14.3.1" + mac_os_executor_name: macos-executor + - run-test-ios-26 + - pod-lib-lint + - run-revenuecat-ui-ios-26 + - emerge_purchases_ui_snapshot_tests + - emerge_binary_size_analysis + - build-tv-watch-mac-and-visionos: + context: + - slack-secrets + + # ============================================================= + # Full Test Suite (runs automatically, no approval gate) + # ============================================================= + + # Backend Integration Tests + - backend-integration-tests-SK1: + context: + - slack-secrets + - backend-integration-tests-SK2: + context: + - slack-secrets + - backend-integration-tests-custom-entitlements: + context: + - slack-secrets + - backend-integration-tests-other: + context: + - slack-secrets + - backend-integration-tests-offline: + context: + - slack-secrets + + # Older iOS Version Tests + - run-test-ios-18: + context: + - slack-secrets + - run-test-ios-14: + context: + - slack-secrets + - run-test-ios-15: + context: + - slack-secrets + - run-test-ios-16: + context: + - slack-secrets + - run-test-ios-17: + context: + - slack-secrets + + # Platform Runtime Tests + - run-test-macos: + context: + - slack-secrets + - run-test-tvos: + context: + - slack-secrets + - run-test-watchos: + context: + - slack-secrets + + # RevenueCatUI Tests + - run-revenuecat-ui-ios-18 + - spm-revenuecat-ui-ios-15: + context: + - slack-secrets + - spm-revenuecat-ui-ios-16: + context: + - slack-secrets + - run-revenuecat-ui-ios-17: + context: + - slack-secrets + - spm-revenuecat-ui-watchos: + context: + - slack-secrets + + # Installation Tests + - installation-tests-all-but-carthage: + context: + - slack-secrets + - installation-tests-carthage: + context: + - slack-secrets + + # SPM / Other Build Tests + - spm-release-build: + context: + - slack-secrets + - spm-release-build-xcode-14: + context: + - slack-secrets + - spm-release-build-xcode-15: + context: + - slack-secrets + - api-tests: + context: + - slack-secrets + - spm-receipt-parser: + context: + - slack-secrets + - deploy-purchase-tester: + dry_run: true + context: + - slack-secrets + - run-all-maestro-e2e-tests: + context: + - e2e-tests + - slack-secrets + - docs-build: + context: + - slack-secrets + + # ============================================================= + # Summary gate: blocks merge until all jobs pass + # ============================================================= + - all-tasks-passed: + requires: + # Reduced Test Suite + - lint + - check-api-changes + - validate-package-swift-5.8 + - run-test-ios-26 + - pod-lib-lint + - run-revenuecat-ui-ios-26 + - emerge_purchases_ui_snapshot_tests + - emerge_binary_size_analysis + - build-tv-watch-mac-and-visionos + # Full Test Suite + - backend-integration-tests-SK1 + - backend-integration-tests-SK2 + - backend-integration-tests-custom-entitlements + - backend-integration-tests-other + - backend-integration-tests-offline + - run-test-ios-18 + - run-test-ios-14 + - run-test-ios-15 + - run-test-ios-16 + - run-test-ios-17 + - run-test-macos + - run-test-tvos + - run-test-watchos + - spm-revenuecat-ui-ios-15 + - spm-revenuecat-ui-ios-16 + - run-revenuecat-ui-ios-17 + - run-revenuecat-ui-ios-18 + - spm-revenuecat-ui-watchos + - installation-tests-all-but-carthage + - installation-tests-carthage + - spm-release-build + - spm-release-build-xcode-14 + - spm-release-build-xcode-15 + - api-tests + - spm-receipt-parser + - deploy-purchase-tester + - run-all-maestro-e2e-tests + - docs-build + deploy-tag: when: not: