stripe-ios/bitrise.yml

552 lines
16 KiB
YAML

format_version: "11"
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: ios
app:
envs:
- FASTLANE_XCODE_LIST_TIMEOUT: "120"
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 12 mini,OS=16.1
- BITRISE_PROJECT_PATH: Stripe.xcworkspace
- GIT_AUTHOR_NAME: Bitrise CI
- GIT_AUTHOR_EMAIL: mobile-sdk-team@stripe.com
- GIT_COMMITTER_NAME: Bitrise CI
- GIT_COMMITTER_EMAIL: mobile-sdk-team@stripe.com
- opts:
is_expand: false
FASTLANE_WORK_DIR: .
- opts:
is_expand: false
FASTLANE_LANE: ios integration_all
trigger_map:
- push_branch: master
pipeline: main-trigger-pipeline
- pull_request_source_branch: releases/*
pipeline: releases-trigger-pipeline
- pull_request_source_branch: '*'
pipeline: main-trigger-pipeline
pipelines:
main-trigger-pipeline:
stages:
- stage-trigger-run-all: {}
releases-trigger-pipeline:
stages:
- stage-releases-run-all: {}
nightly-pipeline:
stages:
- stage-nightly-all: {}
stages:
stage-trigger-run-all:
workflows:
- framework-tests: {}
- test-builds-xcode-143: {}
- install-tests-non-carthage: {}
- lint-tests: {}
- size-report: {}
- ui-tests-1: {}
- ui-tests-2: {}
- integration-all: {}
stage-releases-run-all:
workflows:
- framework-tests: {}
- test-builds-xcode-143: {}
- deploy-docs: {}
- install-tests-non-carthage: {}
- lint-tests: {}
- size-report: {}
- basic-integration-tests: {}
- ui-tests-1: {}
- ui-tests-2: {}
- legacy-tests-14: {}
- carthage-install-test: {}
- pod-lint-tests: {}
- integration-all: {}
stage-nightly-all:
workflows:
- basic-integration-tests: {}
- check-docs: {}
- legacy-tests-14: {}
- carthage-install-test: {}
- data-theorem-sast: {}
- deploy-dry-run: {}
- pod-lint-tests: {}
workflows:
basic-integration-tests:
steps:
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: Basic Integration
- deploy-to-bitrise-io@2: {}
before_run:
- prep_all
after_run:
- notify_ci
carthage-install-test:
steps:
- fastlane@3:
inputs:
- lane: installation_carthage
title: fastlane installation_carthage
before_run:
- prep_all
after_run:
- notify_ci
check-docs:
steps:
- script@1:
inputs:
- content: bundle exec ./ci_scripts/build_documentation.rb
title: Build documentation
before_run:
- prep_all
after_run:
- notify_ci
data-theorem-sast:
steps:
- script@1:
inputs:
- content: bundle config set path 'vendor/bundle'
is_always_run: true
title: Set Bundler to use local vendor directory
- script@1:
inputs:
- content: bundle config set without 'development'
title: Set bundler to ignore development and test gems
- git-clone@6: {}
- cache-pull@2: {}
- tuist@0:
run_if: .IsCI
inputs:
- command: generate -n
- bundler@0: {}
- cache-push@2:
inputs:
- compress_archive: "true"
- cache_paths: |
vendor
SourcePackages
- script@1:
inputs:
- content: bundle exec ./ci_scripts/push_dt.rb "$BITRISE_GIT_BRANCH" "$DT_UPLOAD_API_KEY"
title: Submit app to Data Theorem for SAST
after_run:
- notify_ci
deploy-docs:
steps:
- activate-ssh-key@4: {}
- script@1:
inputs:
- content: bundle config set path 'vendor/bundle'
is_always_run: true
title: Set Bundler to use local vendor directory
- git-clone@6:
inputs:
- merge_pr: "no"
- fetch_tags: "yes"
- cache-pull@2: {}
- bundler@0: {}
- cache-push@2:
inputs:
- compress_archive: "true"
- cache_paths: |
vendor
SourcePackages
- script@1:
inputs:
- content: git fetch origin
title: Fetch full branch history
- script@1:
inputs:
- content: bundle exec ./ci_scripts/build_documentation.rb --publish
title: Build documentation
deploy-dry-run:
steps:
- script@1:
inputs:
- content: brew install sourcekitten
is_always_run: true
title: Install Sourcekitten
- script@1:
inputs:
- content: bundle exec ./ci_scripts/create_release.rb --version 99.99.99 --dry-run
is_always_run: true
title: Create release
- script@1:
inputs:
- content: bundle exec ./ci_scripts/deploy_release.rb --dry-run
is_always_run: true
title: Deploy release
before_run:
- prep_all
after_run:
- notify_ci
meta:
bitrise.io:
stack: osx-xcode-14.1.x-ventura
machine_type_id: g2-m1.8core
deploy-example-apps:
steps:
- set-xcode-build-number@1:
inputs:
- plist_path: '$BITRISE_SOURCE_DIR/Example/PaymentSheet Example/PaymentSheet Example/Info.plist'
- set-xcode-build-number@1:
inputs:
- plist_path: '$BITRISE_SOURCE_DIR/Example/IdentityVerification Example/IdentityVerification Example/Info.plist'
- xcode-archive@4:
inputs:
- project_path: Stripe.xcworkspace
- distribution_method: app-store
- automatic_code_signing: apple-id
- xcodebuild_options: DEVELOPMENT_TEAM=Y28TH9SHX7
- scheme: PaymentSheet Example
- xcode-archive@4:
inputs:
- project_path: Stripe.xcworkspace
- distribution_method: app-store
- automatic_code_signing: apple-id
- xcodebuild_options: DEVELOPMENT_TEAM=Y28TH9SHX7
- scheme: IdentityVerification Example
- deploy-to-bitrise-io@2: {}
before_run:
- prep_all
financial-connections-stability-tests:
before_run:
- prep_all
steps:
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: FinancialConnections Example
- pagerduty@0:
is_always_run: true
run_if: .IsBuildFailed
inputs:
- event_description: iOS E2E tests failing! $BITRISE_BUILD_URL.
- integration_key: $AUX_PAGERDUTY_INTEGRATION_KEY
- slack@3:
is_always_run: true
run_if: .IsBuildFailed
inputs:
- webhook_url: $SLACK_KGAIDIS_TESTING_WEBHOOK_URL
- webhook_url_on_error: $SLACK_KGAIDIS_TESTING_WEBHOOK_URL
- deploy-to-bitrise-io@2: {}
framework-tests:
steps:
- fastlane@3:
inputs:
- lane: preflight
title: fastlane preflight
- fastlane@3:
inputs:
- lane: threeds2_tests
title: fastlane threeds2_tests
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeiOS
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripePayments
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripePaymentsUI
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripePaymentSheet
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeCameraCore
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeCore
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeIdentity
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeFinancialConnections
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeCardScan
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeApplePay
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeUICore
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: StripeLinkCore
- deploy-to-bitrise-io@2: {}
- save-spm-cache@1: {}
before_run:
- prep_all
after_run: []
test-builds-xcode-143:
steps:
- xcode-build-for-test@2:
inputs:
- scheme: AllStripeFrameworks
envs:
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 8,OS=16.4
before_run:
- prep_all
meta:
bitrise.io:
stack: osx-xcode-14.3.x-ventura
machine_type_id: g2-m1.8core
install-tests-non-carthage:
steps:
- fastlane@3:
inputs:
- lane: installation_cocoapods_without_frameworks_objc
title: fastlane installation_cocoapods_without_frameworks_objc
- fastlane@3:
inputs:
- lane: installation_cocoapods_frameworks_objc
title: fastlane installation_cocoapods_frameworks_objc
- fastlane@3:
inputs:
- lane: installation_cocoapods_frameworks_swift
title: fastlane installation_cocoapods_frameworks_swift
- fastlane@3:
inputs:
- lane: installation_spm_objc
title: fastlane installation_spm_objc
- fastlane@3:
inputs:
- lane: installation_spm_swift
title: fastlane installation_spm_swift
before_run:
- prep_all
integration-all:
steps:
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: IntegrationTester
- log_formatter: xcbeautify
- deploy-to-bitrise-io@2: {}
before_run:
- prep_all
meta:
bitrise.io:
stack: osx-xcode-14.1.x-ventura
machine_type_id: g2-m1-max.10core
legacy-tests-14:
steps:
- fastlane@3:
inputs:
- lane: legacy_tests_14
title: fastlane legacy_tests_14
envs:
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 8,OS=14.5
before_run:
- prep_all
after_run:
- upload_logs
- notify_ci
lint-tests:
steps:
- script@1:
inputs:
- content: ./ci_scripts/lint_modified_files.sh
title: Run swiftlint
- script@1:
inputs:
- content: ./ci_scripts/check_paymentsheet_test_sharding.rb
title: Check PaymentSheet test sharding
- fastlane@3:
inputs:
- lane: build_extras
title: fastlane build_extras
- fastlane@3:
inputs:
- lane: analyze
title: fastlane analyze
before_run:
- prep_all
envs:
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 14,OS=16.4
meta:
bitrise.io:
stack: osx-xcode-14.3.x-ventura
machine_type_id: g2-m1.8core
notify_ci:
steps:
- script@1:
inputs:
- content: ./ci_scripts/notify_ci.rb
title: Send notification if failed
is_always_run: true
run_if: .IsBuildFailed
pod-lint-tests:
steps:
- script@1:
inputs:
- content: pod lib lint --include-podspecs='*.podspec'
title: pod lib lint
before_run:
- prep_all
prep_all:
steps:
- xcode-start-simulator@0:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- set-env-var@0:
inputs:
- destination_keys: CONFIGURATION_BUILD_DIR
- value: $BITRISE_SOURCE_DIR/stpbuild/products
title: Set CONFIGURATION_BUILD_DIR
- set-env-var@0:
inputs:
- destination_keys: CONFIGURATION_TEMP_DIR
- value: $BITRISE_SOURCE_DIR/stpbuild/intermediates
title: Set CONFIGURATION_TEMP_DIR
- script@1:
inputs:
- content: bundle config set path 'vendor/bundle'
is_always_run: true
title: Set Bundler to use local vendor directory
- git-clone@6:
inputs:
- clone_depth: "1"
- tuist@0:
run_if: .IsCI
inputs:
- command: generate -n
- cache-pull@2: {}
- bundler@0: {}
- cache-push@2:
inputs:
- compress_archive: "true"
- cache_paths: |
vendor
- restore-spm-cache@1: {}
size-report:
steps:
- script@1:
inputs:
- content: bundle config set path 'vendor/bundle'
is_always_run: true
title: Set Bundler to use local vendor directory
- git-clone@6:
inputs:
- merge_pr: "no"
- fetch_tags: "yes"
- cache-pull@2: {}
- bundler@0: {}
- cache-push@2:
inputs:
- compress_archive: "true"
- cache_paths: |
vendor
SourcePackages
- script@1:
inputs:
- content: git fetch origin
title: Fetch full branch history
- script@1:
inputs:
- content: bundle exec fastlane size_report
title: Generate size report
ui-tests-1:
steps:
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: LocalizationTester
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: PaymentSheet Example
- test_plan: PaymentSheet Example-Shard1
- log_formatter: xcbeautify
- xcodebuild_options: -maximum-concurrent-test-simulator-destinations 2 -maximum-parallel-testing-workers 2
- deploy-to-bitrise-io@2: {}
before_run:
- prep_all
envs:
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 14,OS=16.4
meta:
bitrise.io:
stack: osx-xcode-14.3.x-ventura
machine_type_id: g2-m1-max.10core
ui-tests-2:
steps:
- xcode-test@4:
inputs:
- destination: $DEFAULT_TEST_DEVICE
- test_repetition_mode: retry_on_failure
- maximum_test_repetitions: "5"
- scheme: PaymentSheet Example
- test_plan: PaymentSheet Example-Shard2
- log_formatter: xcbeautify
- xcodebuild_options: -maximum-concurrent-test-simulator-destinations 2 -maximum-parallel-testing-workers 2
- deploy-to-bitrise-io@2: {}
before_run:
- prep_all
envs:
- DEFAULT_TEST_DEVICE: platform=iOS Simulator,name=iPhone 14,OS=16.4
meta:
bitrise.io:
stack: osx-xcode-14.3.x-ventura
machine_type_id: g2-m1-max.10core
upload_logs:
steps:
- deploy-to-bitrise-io@2:
inputs:
- notify_user_groups: none
- is_compress: "true"
- deploy_path: build-ci-tests/Logs/Test
- is_enable_public_page: "false"
title: Deploy test log artifacts
meta:
bitrise.io:
stack: osx-xcode-14.1.x-ventura
machine_type_id: g2-m1.8core