From 7e59d66b98ebe1206b1213aa329c5571118390ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 11:39:29 +0200 Subject: [PATCH 001/116] Add benchmark pipeline --- bitrise.yml | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 72563480..1cf7327a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -894,7 +894,185 @@ workflows: ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' - deploy-to-bitrise-io: {} + benchmark_build_baseline_wordpress: + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf set ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress + - xcode-build-for-simulator@3: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress + benchmark_build_baseline_tuist: + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Tuist + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist + benchmark_results: + steps: + - script@1: + inputs: + - content: |- + #!/usr/bin/env bash + # fail if any commands fails + set -exo pipefail + + pretty_diff() { + local t1=$1 + local t2=$2 + + local diff=$(( t2 - t1 )) + local sign="" + if (( diff < 0 )); then + sign="-" + diff=$(( -diff )) + fi + + local minutes=$(( diff / 60 )) + local seconds=$(( rem % 60 )) + + local out="" + (( minutes > 0 )) && out+="${minutes}m " + out+="${seconds}s" + + printf '%s%s\n' "$sign" "$out" + } + + mapfile -t apps <<< "$APPS" + + for app in "${apps[@]}"; do + pretty_diff "${app}_END" "${app}_START" + done + envs: + - APPS: |- + WordPress + WordPress_CC + Tuist + Tuist_CC + opts: + is_expand: false + benchmark_build_cc_wordpress: + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf set ruby 3.2.2 + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_CC + - xcode-build-for-simulator@3: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress_CC + benchmark_build_cc_tuist: + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_CC + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist_CC step_bundles: generate_gradle_verification_reference: steps: @@ -1105,3 +1283,15 @@ pipelines: - source_branch: "*" push: - branch: main + benchmark: + workflows: + benchmark_build_baseline_tuist: {} + benchmark_build_baseline_wordpress: {} + benchmark_results: + depends_on: + - benchmark_build_baseline_tuist + - benchmark_build_baseline_wordpress + - benchmark_build_cc_wordpress + - benchmark_build_cc_tuist + benchmark_build_cc_wordpress: {} + benchmark_build_cc_tuist: {} From 98e0760199388ab89da9d031ff4b0c3758df5363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 11:42:52 +0200 Subject: [PATCH 002/116] Add benchmark step bundles --- bitrise.yml | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 1cf7327a..55574df3 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1266,6 +1266,94 @@ step_bundles: title: Switch working dir to _tmp inputs: - path: "./_tmp" + benchmark-setup: + inputs: + - REPO_URL: "" + - BRANCH: "" + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: "" + steps: + - activate-ssh-key: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - script: + title: Delete DerivedData + inputs: + - content: rm -rf ~/Library/Developer/Xcode/DerivedData + - script: + title: Clean _benchmark dir + inputs: + - content: rm -rf ./_benchmark + - git-clone: {} + - script: + title: Build CLI + run_if: '{{enveq "USE_COMP_CACHE" "true"}}' + inputs: + - content: |- + set -exo pipefail + go build -o bitrise-build-cache-cli + - script: + title: Activate comp cache using CLI + run_if: '{{enveq "USE_COMP_CACHE" "true"}}' + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + ./bitrise-build-cache-cli -d activate xcode --cache + - script: + title: Git clone benchmark app + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + git clone --depth 1 $REPO_URL -b $BRANCH ./_benchmark/$BENCHMARK_APP_NAME + - change-workdir: + title: Switch working dir to _benchmark + inputs: + - path: ./_benchmark/$BENCHMARK_APP_NAME + - git::https://github.com/bitrise-steplib/bitrise-step-restore-xcodebuild-cache.git@main: + run_if: '{{enveq "USE_DD_CACHE" "true"}}' + inputs: + - project_root_path: . + - restore-spm-cache@2.1.1: + run_if: '{{enveq "USE_SPM" "true"}}' + benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: "" + steps: + - script: + title: Store action start time + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + envman add --key "${BENCHMARK_APP_NAME}_START" --value "$(date +%s)" + benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: "" + steps: + - script: + title: Store action end time + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + envman add --key "${BENCHMARK_APP_NAME}_END" --value "$(date +%s)" + - save-spm-cache@1.3.1: + run_if: '{{enveq "USE_SPM" "true"}}' + - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: + run_if: '{{enveq "USE_DD_CACHE" "true"}}' + inputs: + - project_root_path: . + - derived_data_path: $HOME/Library/Developer/Xcode/DerivedData + - skip_spm: $USE_SPM pipelines: features-e2e: From e13f9e05973a438e1fa0267e5d6fc24d84786068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 11:53:17 +0200 Subject: [PATCH 003/116] Set machines, fix ruby selection --- bitrise.yml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 55574df3..876cffb8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -895,6 +895,10 @@ workflows: ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' - deploy-to-bitrise-io: {} benchmark_build_baseline_wordpress: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge steps: - bundle::benchmark-setup: inputs: @@ -909,7 +913,8 @@ workflows: inputs: - content: |- set -exo pipefail - asdf set ruby 3.2.2 + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress @@ -918,7 +923,7 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress - - xcode-build-for-simulator@3: + - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace - scheme: WordPress @@ -930,6 +935,10 @@ workflows: - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress benchmark_build_baseline_tuist: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge tools: tuist: 4.70.0 steps: @@ -1006,6 +1015,10 @@ workflows: opts: is_expand: false benchmark_build_cc_wordpress: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge steps: - bundle::benchmark-setup: inputs: @@ -1020,7 +1033,8 @@ workflows: inputs: - content: |- set -exo pipefail - asdf set ruby 3.2.2 + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress @@ -1029,7 +1043,7 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_CC - - xcode-build-for-simulator@3: + - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace - scheme: WordPress @@ -1041,6 +1055,10 @@ workflows: - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_CC benchmark_build_cc_tuist: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge tools: tuist: 4.70.0 steps: From f18aaec5a7966bee05b13f5c014ba5d00f4468e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:18:54 +0200 Subject: [PATCH 004/116] Expand result variables --- bitrise.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 876cffb8..21d9666a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1004,7 +1004,9 @@ workflows: mapfile -t apps <<< "$APPS" for app in "${apps[@]}"; do - pretty_diff "${app}_END" "${app}_START" + local start="${app}_START" + local end="${app}_END" + pretty_diff "${!end}" "${!start}" done envs: - APPS: |- From eb14e138172d9f1e843dc96b3e3bbdf8dc283f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:20:05 +0200 Subject: [PATCH 005/116] Clean up whitespaces --- bitrise.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 21d9666a..dcd90dae 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -840,7 +840,7 @@ workflows: - content: |- echo "Xcodebuild command location after activation:" type xcodebuild || true - + echo "Config file content:" cat "$HOME/.bitrise-xcelerate/config.json" @@ -850,7 +850,7 @@ workflows: -scheme ComposableArchitecture \ -destination "generic/platform=iOS" \ -skipMacroValidation 2> wrapper.log | tee xcodebuild.log | xcpretty - + - script: title: gather info inputs: @@ -861,14 +861,14 @@ workflows: cp ~/.local/state/xcelerate/logs/* $BITRISE_DEPLOY_DIR cp xcodebuild.log $BITRISE_DEPLOY_DIR cp wrapper.log $BITRISE_DEPLOY_DIR - + cat "$BITRISE_DEPLOY_DIR/wrapper.log" head -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log tail -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log - + source ../_e2e/scripts/error.sh source ../_e2e/scripts/extract_invocation_id.sh - + invocation_id=$(extract_invocation_id_xcode "$BITRISE_DEPLOY_DIR/wrapper.log") if [[ -z "$invocation_id" ]]; then fatal "Invocation ID not found in logs" @@ -881,7 +881,7 @@ workflows: inputs: - content: |- source ../_e2e/scripts/assert_invocations.sh - + assert_bitrise_invocation_in_list "$INVOCATION_ID" "xcode" assert_bitrise_invocation_detail "$INVOCATION_ID" "xcode" assert_build_performance "$INVOCATION_ID" @@ -1255,11 +1255,11 @@ step_bundles: - content: |- #!/bin/bash set -ex - + rm -rf ./_e2e mkdir -p ./_e2e git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e - + ls -la ./_e2e - script: title: Delete _tmp dirs From f6de28ef2ee44a68103f96cd8a6b5b698c4b3bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:25:07 +0200 Subject: [PATCH 006/116] Add all variations to Tuist and WordPress build --- bitrise.yml | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 247 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index dcd90dae..22f1263f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1056,6 +1056,126 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_CC + benchmark_build_dd_cc_wordpress: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_CC + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress_CC + benchmark_build_spm_cc_wordpress: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_CC + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: WordPress_CC + benchmark_build_dd_spm_cc_wordpress: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_CC + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: WordPress_CC benchmark_build_cc_tuist: meta: bitrise.io: @@ -1093,6 +1213,117 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_CC + benchmark_build_dd_cc_tuist: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_CC + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist_CC + benchmark_build_spm_cc_tuist: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_CC + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Tuist_CC + benchmark_build_dd_spm_cc_tuist: + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_CC + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Tuist_CC step_bundles: generate_gradle_verification_reference: steps: @@ -1393,13 +1624,25 @@ pipelines: - branch: main benchmark: workflows: - benchmark_build_baseline_tuist: {} benchmark_build_baseline_wordpress: {} + benchmark_build_cc_wordpress: {} + benchmark_build_dd_cc_wordpress: {} + benchmark_build_spm_cc_wordpress: {} + benchmark_build_dd_spm_cc_wordpress: {} + benchmark_build_baseline_tuist: {} + benchmark_build_cc_tuist: {} + benchmark_build_dd_cc_tuist: {} + benchmark_build_spm_cc_tuist: {} + benchmark_build_dd_spm_cc_tuist: {} benchmark_results: depends_on: - - benchmark_build_baseline_tuist - benchmark_build_baseline_wordpress - benchmark_build_cc_wordpress + - benchmark_build_dd_cc_wordpress + - benchmark_build_spm_cc_wordpress + - benchmark_build_dd_spm_cc_wordpress + - benchmark_build_baseline_tuist - benchmark_build_cc_tuist - benchmark_build_cc_wordpress: {} - benchmark_build_cc_tuist: {} + - benchmark_build_dd_cc_tuist + - benchmark_build_spm_cc_tuist + - benchmark_build_dd_spm_cc_tuist From a164f052970468884cf80f3928ddbc8a3ea5fe90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:27:53 +0200 Subject: [PATCH 007/116] Add all variations to Tuist and WordPress build --- bitrise.yml | 132 +++++++++++++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 63 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 22f1263f..1d347a8f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -894,6 +894,57 @@ workflows: ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' - deploy-to-bitrise-io: {} + benchmark_results: + steps: + - script@1: + inputs: + - content: |- + #!/usr/bin/env bash + # fail if any commands fails + set -exo pipefail + + pretty_diff() { + local t1=$1 + local t2=$2 + + local diff=$(( t2 - t1 )) + local sign="" + if (( diff < 0 )); then + sign="-" + diff=$(( -diff )) + fi + + local minutes=$(( diff / 60 )) + local seconds=$(( rem % 60 )) + + local out="" + (( minutes > 0 )) && out+="${minutes}m " + out+="${seconds}s" + + printf '%s%s\n' "$sign" "$out" + } + + mapfile -t apps <<< "$APPS" + + for app in "${apps[@]}"; do + local start="${app}_START" + local end="${app}_END" + pretty_diff "${!end}" "${!start}" + done + envs: + - APPS: |- + WordPress + WordPress_CC + WordPress_DD_CC + WordPress_SPM_CC + WordPress_DD_SPM_CC + Tuist + Tuist_CC + Tuist_DD_CC + Tuist_SPM_CC + Tuist_DD_SPM_CC + opts: + is_expand: false benchmark_build_baseline_wordpress: meta: bitrise.io: @@ -971,51 +1022,6 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist - benchmark_results: - steps: - - script@1: - inputs: - - content: |- - #!/usr/bin/env bash - # fail if any commands fails - set -exo pipefail - - pretty_diff() { - local t1=$1 - local t2=$2 - - local diff=$(( t2 - t1 )) - local sign="" - if (( diff < 0 )); then - sign="-" - diff=$(( -diff )) - fi - - local minutes=$(( diff / 60 )) - local seconds=$(( rem % 60 )) - - local out="" - (( minutes > 0 )) && out+="${minutes}m " - out+="${seconds}s" - - printf '%s%s\n' "$sign" "$out" - } - - mapfile -t apps <<< "$APPS" - - for app in "${apps[@]}"; do - local start="${app}_START" - local end="${app}_END" - pretty_diff "${!end}" "${!start}" - done - envs: - - APPS: |- - WordPress - WordPress_CC - Tuist - Tuist_CC - opts: - is_expand: false benchmark_build_cc_wordpress: meta: bitrise.io: @@ -1069,7 +1075,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_CC - script: title: Install dependencies inputs: @@ -1084,7 +1090,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_CC - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1095,7 +1101,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_CC benchmark_build_spm_cc_wordpress: meta: bitrise.io: @@ -1109,7 +1115,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_SPM_CC - script: title: Install dependencies inputs: @@ -1124,7 +1130,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_SPM_CC - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1135,7 +1141,7 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_SPM_CC benchmark_build_dd_spm_cc_wordpress: meta: bitrise.io: @@ -1149,7 +1155,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC - script: title: Install dependencies inputs: @@ -1164,7 +1170,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1175,7 +1181,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC benchmark_build_cc_tuist: meta: bitrise.io: @@ -1228,7 +1234,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_CC - script: title: Generate workspace inputs: @@ -1238,7 +1244,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_CC - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1249,7 +1255,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_CC benchmark_build_spm_cc_tuist: meta: bitrise.io: @@ -1265,7 +1271,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_SPM_CC - script: title: Generate workspace inputs: @@ -1275,7 +1281,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_SPM_CC - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1286,7 +1292,7 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_SPM_CC benchmark_build_dd_spm_cc_tuist: meta: bitrise.io: @@ -1302,7 +1308,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC - script: title: Generate workspace inputs: @@ -1312,7 +1318,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1323,7 +1329,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC step_bundles: generate_gradle_verification_reference: steps: From 8116e4df27e56476141fc36450434f2e0ff110c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:41:36 +0200 Subject: [PATCH 008/116] Fix machine type --- bitrise.yml | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 1d347a8f..69428538 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -948,8 +948,8 @@ workflows: benchmark_build_baseline_wordpress: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: inputs: @@ -988,8 +988,8 @@ workflows: benchmark_build_baseline_tuist: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large tools: tuist: 4.70.0 steps: @@ -1025,8 +1025,8 @@ workflows: benchmark_build_cc_wordpress: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: inputs: @@ -1065,8 +1065,8 @@ workflows: benchmark_build_dd_cc_wordpress: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: inputs: @@ -1105,8 +1105,8 @@ workflows: benchmark_build_spm_cc_wordpress: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: inputs: @@ -1145,8 +1145,8 @@ workflows: benchmark_build_dd_spm_cc_wordpress: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: inputs: @@ -1185,8 +1185,8 @@ workflows: benchmark_build_cc_tuist: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large tools: tuist: 4.70.0 steps: @@ -1222,8 +1222,8 @@ workflows: benchmark_build_dd_cc_tuist: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large tools: tuist: 4.70.0 steps: @@ -1259,8 +1259,8 @@ workflows: benchmark_build_spm_cc_tuist: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large tools: tuist: 4.70.0 steps: @@ -1296,8 +1296,8 @@ workflows: benchmark_build_dd_spm_cc_tuist: meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large tools: tuist: 4.70.0 steps: From 9b57f5888aaa7a8263299d2989cb7ce96c20913e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 12:59:53 +0200 Subject: [PATCH 009/116] Fix summary script --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 69428538..91f14405 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -927,8 +927,8 @@ workflows: mapfile -t apps <<< "$APPS" for app in "${apps[@]}"; do - local start="${app}_START" - local end="${app}_END" + start="${app}_START" + end="${app}_END" pretty_diff "${!end}" "${!start}" done envs: From 748866ec4b3c9e4a6931ca902beccf7b04780e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 13:34:07 +0200 Subject: [PATCH 010/116] Use envman and omit line logging in results --- bitrise.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 91f14405..82c02992 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -901,7 +901,7 @@ workflows: - content: |- #!/usr/bin/env bash # fail if any commands fails - set -exo pipefail + set -eo pipefail pretty_diff() { local t1=$1 @@ -927,8 +927,8 @@ workflows: mapfile -t apps <<< "$APPS" for app in "${apps[@]}"; do - start="${app}_START" - end="${app}_END" + envman run bash -c 'start="${app}_START"' + envman run bash -c 'end="${app}_END"' pretty_diff "${!end}" "${!start}" done envs: From 0b5474d56921550e4ec632681a6fa1db76b0a743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 13:36:01 +0200 Subject: [PATCH 011/116] Use envman and omit line logging in results --- bitrise.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 82c02992..382f84fe 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -927,9 +927,9 @@ workflows: mapfile -t apps <<< "$APPS" for app in "${apps[@]}"; do - envman run bash -c 'start="${app}_START"' - envman run bash -c 'end="${app}_END"' - pretty_diff "${!end}" "${!start}" + start="${app}_START" + end="${app}_END" + envman run bash -c 'pretty_diff "${!end}" "${!start}"' done envs: - APPS: |- From d73c2666f63b54a1d9b4d814866be42924c29f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 13:45:00 +0200 Subject: [PATCH 012/116] Share pipeline variables --- bitrise.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 382f84fe..c115894d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -929,7 +929,7 @@ workflows: for app in "${apps[@]}"; do start="${app}_START" end="${app}_END" - envman run bash -c 'pretty_diff "${!end}" "${!start}"' + pretty_diff "${!end}" "${!start}" done envs: - APPS: |- @@ -1611,6 +1611,12 @@ step_bundles: - project_root_path: . - derived_data_path: $HOME/Library/Developer/Xcode/DerivedData - skip_spm: $USE_SPM + - share-pipeline-variable: + title: Share benchmark step results + inputs: + - variables: |- + ${BENCHMARK_APP_NAME}_END + ${BENCHMARK_APP_NAME}_START pipelines: features-e2e: From 55f6f8192d1e9ba224402d1470972db7619927b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 14:23:11 +0200 Subject: [PATCH 013/116] Add analyze --- bitrise.yml | 442 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 432 insertions(+), 10 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index c115894d..1328c2dd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -903,6 +903,30 @@ workflows: # fail if any commands fails set -eo pipefail + variants=( + "" + "_CC" + "_DD_CC" + "_SPM_CC" + "_DD_SPM_CC" + "_Analyze" + "_Analyze_CC" + "_Analyze_DD_CC" + "_Analyze_SPM_CC" + "_Analyze_DD_SPM_CC" + ) + + app_variants=() # target array + + for base in "${APPS[@]}"; do + # add the base itself + app_variants+=("$base") + for v in "${variants[@]}"; do + [[ -z "$v" ]] && continue # skip empty variant already added as base + app_variants+=("${base}${v}") + done + done + pretty_diff() { local t1=$1 local t2=$2 @@ -926,23 +950,16 @@ workflows: mapfile -t apps <<< "$APPS" - for app in "${apps[@]}"; do + for app in "${app_variants[@]}"; do start="${app}_START" end="${app}_END" - pretty_diff "${!end}" "${!start}" + echo "Time between ${app}_START and ${app}_END:" + pretty_diff "${!start}" "${!end}" done envs: - APPS: |- WordPress - WordPress_CC - WordPress_DD_CC - WordPress_SPM_CC - WordPress_DD_SPM_CC Tuist - Tuist_CC - Tuist_DD_CC - Tuist_SPM_CC - Tuist_DD_SPM_CC opts: is_expand: false benchmark_build_baseline_wordpress: @@ -1182,6 +1199,206 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC + benchmark_analyze_baseline_wordpress: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_Analyze + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze + benchmark_analyze_cc_wordpress: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_Analyze_CC + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC + benchmark_analyze_cc_dd_wordpress: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + benchmark_analyze_cc_spm_wordpress: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + benchmark_analyze_cc_dd_spm_wordpress: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM benchmark_build_cc_tuist: meta: bitrise.io: @@ -1330,6 +1547,191 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC + benchmark_analyze_baseline_tuist: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Tuist_Analyze + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_Analyze + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist_Analyze + benchmark_analyze_cc_tuist: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_Analyze_CC + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC + benchmark_analyze_cc_dd_tuist: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD + benchmark_analyze_cc_spm_tuist: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM + benchmark_analyze_cc_dd_spm_tuist: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + tools: + tuist: 4.70.0 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM + - script: + title: Generate workspace + inputs: + - content: |- + set -exo pipefail + tuist install + tuist generate + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM step_bundles: generate_gradle_verification_reference: steps: @@ -1646,6 +2048,16 @@ pipelines: benchmark_build_dd_cc_tuist: {} benchmark_build_spm_cc_tuist: {} benchmark_build_dd_spm_cc_tuist: {} + benchmark_analyze_baseline_tuist: {} + benchmark_analyze_cc_tuist: {} + benchmark_analyze_cc_dd_tuist: {} + benchmark_analyze_cc_spm_tuist: {} + benchmark_analyze_cc_dd_spm_tuist: {} + benchmark_analyze_baseline_wordpress: {} + benchmark_analyze_cc_wordpress: {} + benchmark_analyze_cc_dd_wordpress: {} + benchmark_analyze_cc_spm_wordpress: {} + benchmark_analyze_cc_dd_spm_wordpress: {} benchmark_results: depends_on: - benchmark_build_baseline_wordpress @@ -1658,3 +2070,13 @@ pipelines: - benchmark_build_dd_cc_tuist - benchmark_build_spm_cc_tuist - benchmark_build_dd_spm_cc_tuist + - benchmark_analyze_baseline_tuist + - benchmark_analyze_cc_tuist + - benchmark_analyze_cc_dd_tuist + - benchmark_analyze_cc_spm_tuist + - benchmark_analyze_cc_dd_spm_tuist + - benchmark_analyze_baseline_wordpress + - benchmark_analyze_cc_wordpress + - benchmark_analyze_cc_dd_wordpress + - benchmark_analyze_cc_spm_wordpress + - benchmark_analyze_cc_dd_spm_wordpress From ed10eb9ce216710e9c2116a9f3a9437e3bb4ec45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 14:35:38 +0200 Subject: [PATCH 014/116] Update naming so we get the same apps closer to each other in the pipeline --- bitrise.yml | 138 ++++++++++++++++++++++++++-------------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 1328c2dd..34a813fa 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -962,7 +962,7 @@ workflows: Tuist opts: is_expand: false - benchmark_build_baseline_wordpress: + benchmark_wordpress_build_baseline: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1002,7 +1002,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress - benchmark_build_baseline_tuist: + benchmark_tuist_build_baseline: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1039,7 +1039,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist - benchmark_build_cc_wordpress: + benchmark_wordpress_build_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1079,7 +1079,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_CC - benchmark_build_dd_cc_wordpress: + benchmark_wordpress_build_cc_dd: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1092,7 +1092,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_DD_CC + - BENCHMARK_APP_NAME: WordPress_CC_DD - script: title: Install dependencies inputs: @@ -1107,7 +1107,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_DD_CC + - BENCHMARK_APP_NAME: WordPress_CC_DD - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1118,8 +1118,8 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_DD_CC - benchmark_build_spm_cc_wordpress: + - BENCHMARK_APP_NAME: WordPress_CC_DD + benchmark_wordpress_build_cc_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1132,7 +1132,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_SPM_CC + - BENCHMARK_APP_NAME: WordPress_CC_SPM - script: title: Install dependencies inputs: @@ -1147,7 +1147,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_SPM_CC + - BENCHMARK_APP_NAME: WordPress_CC_SPM - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1158,8 +1158,8 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_SPM_CC - benchmark_build_dd_spm_cc_wordpress: + - BENCHMARK_APP_NAME: WordPress_CC_SPM + benchmark_wordpress_build_cc_dd_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1172,7 +1172,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC + - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM - script: title: Install dependencies inputs: @@ -1187,7 +1187,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC + - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1198,8 +1198,8 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_DD_SPM_CC - benchmark_analyze_baseline_wordpress: + - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM + benchmark_wordpress_analyze_baseline: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1239,7 +1239,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_Analyze - benchmark_analyze_cc_wordpress: + benchmark_wordpress_analyze_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1279,7 +1279,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_Analyze_CC - benchmark_analyze_cc_dd_wordpress: + benchmark_wordpress_analyze_cc_dd: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1319,7 +1319,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD - benchmark_analyze_cc_spm_wordpress: + benchmark_wordpress_analyze_cc_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1359,7 +1359,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM - benchmark_analyze_cc_dd_spm_wordpress: + benchmark_wordpress_analyze_cc_dd_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1399,7 +1399,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM - benchmark_build_cc_tuist: + benchmark_tuist_build_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1436,7 +1436,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_CC - benchmark_build_dd_cc_tuist: + benchmark_tuist_build_dd_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1473,7 +1473,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_DD_CC - benchmark_build_spm_cc_tuist: + benchmark_tuist_build_spm_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1510,7 +1510,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_SPM_CC - benchmark_build_dd_spm_cc_tuist: + benchmark_tuist_build_dd_spm_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1547,7 +1547,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC - benchmark_analyze_baseline_tuist: + benchmark_tuist_analyze_baseline: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1584,7 +1584,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_Analyze - benchmark_analyze_cc_tuist: + benchmark_tuist_analyze_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1621,7 +1621,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_Analyze_CC - benchmark_analyze_cc_dd_tuist: + benchmark_tuist_analyze_cc_dd: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1658,7 +1658,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD - benchmark_analyze_cc_spm_tuist: + benchmark_tuist_analyze_cc_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1695,7 +1695,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM - benchmark_analyze_cc_dd_spm_tuist: + benchmark_tuist_analyze_cc_dd_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -2038,45 +2038,45 @@ pipelines: - branch: main benchmark: workflows: - benchmark_build_baseline_wordpress: {} - benchmark_build_cc_wordpress: {} - benchmark_build_dd_cc_wordpress: {} - benchmark_build_spm_cc_wordpress: {} - benchmark_build_dd_spm_cc_wordpress: {} - benchmark_build_baseline_tuist: {} - benchmark_build_cc_tuist: {} - benchmark_build_dd_cc_tuist: {} - benchmark_build_spm_cc_tuist: {} - benchmark_build_dd_spm_cc_tuist: {} - benchmark_analyze_baseline_tuist: {} - benchmark_analyze_cc_tuist: {} - benchmark_analyze_cc_dd_tuist: {} - benchmark_analyze_cc_spm_tuist: {} - benchmark_analyze_cc_dd_spm_tuist: {} - benchmark_analyze_baseline_wordpress: {} - benchmark_analyze_cc_wordpress: {} - benchmark_analyze_cc_dd_wordpress: {} - benchmark_analyze_cc_spm_wordpress: {} - benchmark_analyze_cc_dd_spm_wordpress: {} + benchmark_wordpress_build_baseline: {} + benchmark_wordpress_build_cc: {} + benchmark_wordpress_build_cc_dd: {} + benchmark_wordpress_build_cc_spm: {} + benchmark_wordpress_build_cc_dd_spm: {} + benchmark_wordpress_analyze_baseline: {} + benchmark_wordpress_analyze_cc: {} + benchmark_wordpress_analyze_cc_dd: {} + benchmark_wordpress_analyze_cc_spm: {} + benchmark_wordpress_analyze_cc_dd_spm: {} + benchmark_tuist_build_baseline: {} + benchmark_tuist_build_cc: {} + benchmark_tuist_build_dd_cc: {} + benchmark_tuist_build_spm_cc: {} + benchmark_tuist_build_dd_spm_cc: {} + benchmark_tuist_analyze_baseline: {} + benchmark_tuist_analyze_cc: {} + benchmark_tuist_analyze_cc_dd: {} + benchmark_tuist_analyze_cc_spm: {} + benchmark_tuist_analyze_cc_dd_spm: {} benchmark_results: depends_on: - - benchmark_build_baseline_wordpress - - benchmark_build_cc_wordpress - - benchmark_build_dd_cc_wordpress - - benchmark_build_spm_cc_wordpress - - benchmark_build_dd_spm_cc_wordpress - - benchmark_build_baseline_tuist - - benchmark_build_cc_tuist - - benchmark_build_dd_cc_tuist - - benchmark_build_spm_cc_tuist - - benchmark_build_dd_spm_cc_tuist - - benchmark_analyze_baseline_tuist - - benchmark_analyze_cc_tuist - - benchmark_analyze_cc_dd_tuist - - benchmark_analyze_cc_spm_tuist - - benchmark_analyze_cc_dd_spm_tuist - - benchmark_analyze_baseline_wordpress - - benchmark_analyze_cc_wordpress - - benchmark_analyze_cc_dd_wordpress - - benchmark_analyze_cc_spm_wordpress - - benchmark_analyze_cc_dd_spm_wordpress + - benchmark_wordpress_build_baseline + - benchmark_wordpress_build_cc + - benchmark_wordpress_build_cc_dd + - benchmark_wordpress_build_cc_spm + - benchmark_wordpress_build_cc_dd_spm + - benchmark_wordpress_analyze_baseline + - benchmark_wordpress_analyze_cc + - benchmark_wordpress_analyze_cc_dd + - benchmark_wordpress_analyze_cc_spm + - benchmark_wordpress_analyze_cc_dd_spm + - benchmark_tuist_build_baseline + - benchmark_tuist_build_cc + - benchmark_tuist_build_dd_cc + - benchmark_tuist_build_spm_cc + - benchmark_tuist_build_dd_spm_cc + - benchmark_tuist_analyze_baseline + - benchmark_tuist_analyze_cc + - benchmark_tuist_analyze_cc_dd + - benchmark_tuist_analyze_cc_spm + - benchmark_tuist_analyze_cc_dd_spm From 5e6307d406d17b09dfc06372803d6ed9c450e121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 14:44:19 +0200 Subject: [PATCH 015/116] Change analytics action to actual analytics --- bitrise.yml | 60 ++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 34a813fa..c841f3ab 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1228,12 +1228,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_Analyze - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1268,12 +1268,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_Analyze_CC - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1308,12 +1308,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "true" @@ -1348,12 +1348,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1388,12 +1388,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "true" @@ -1573,12 +1573,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: Tuist.xcworkspace - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1610,12 +1610,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: Tuist.xcworkspace - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1647,12 +1647,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: Tuist.xcworkspace - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "true" @@ -1684,12 +1684,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: Tuist.xcworkspace - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "false" @@ -1721,12 +1721,12 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: Tuist.xcworkspace - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: "true" From ac25e460fefd88a630f85c1b4a9169cd80589b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 15:10:44 +0200 Subject: [PATCH 016/116] Resolve pacakge depenedencies for tuist analyze --- bitrise.yml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index c841f3ab..23eadf34 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1573,6 +1573,14 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze + - script: + title: Resolve package dependencies + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - xcode-analyze: inputs: - workdir: . @@ -1610,6 +1618,14 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC + - script: + title: Resolve package dependencies + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - xcode-analyze: inputs: - workdir: . @@ -1647,6 +1663,14 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD + - script: + title: Resolve package dependencies + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - xcode-analyze: inputs: - workdir: . @@ -1684,6 +1708,14 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM + - script: + title: Resolve package dependencies + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - xcode-analyze: inputs: - workdir: . @@ -1721,6 +1753,14 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM + - script: + title: Resolve package dependencies + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - xcode-analyze: inputs: - workdir: . From 4b964bfc0833f66d1724bca343dcb7dbaf64f920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 15:22:43 +0200 Subject: [PATCH 017/116] Skip tuist analyze --- bitrise.yml | 237 +--------------------------------------------------- 1 file changed, 2 insertions(+), 235 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 23eadf34..5ebb0f1a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -953,6 +953,8 @@ workflows: for app in "${app_variants[@]}"; do start="${app}_START" end="${app}_END" + [[ -z "${!start}" ]] && continue # skip missing variant + [[ -z "${!end}" ]] && continue # skip missing variant echo "Time between ${app}_START and ${app}_END:" pretty_diff "${!start}" "${!end}" done @@ -1547,231 +1549,6 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC - benchmark_tuist_analyze_baseline: - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Tuist_Analyze - - script: - title: Generate workspace - inputs: - - content: |- - set -exo pipefail - tuist install - tuist generate - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: Tuist_Analyze - - script: - title: Resolve package dependencies - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - - xcode-analyze: - inputs: - - workdir: . - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_Analyze - benchmark_tuist_analyze_cc: - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC - - script: - title: Generate workspace - inputs: - - content: |- - set -exo pipefail - tuist install - tuist generate - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: Tuist_Analyze_CC - - script: - title: Resolve package dependencies - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - - xcode-analyze: - inputs: - - workdir: . - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC - benchmark_tuist_analyze_cc_dd: - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD - - script: - title: Generate workspace - inputs: - - content: |- - set -exo pipefail - tuist install - tuist generate - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD - - script: - title: Resolve package dependencies - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - - xcode-analyze: - inputs: - - workdir: . - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD - benchmark_tuist_analyze_cc_spm: - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM - - script: - title: Generate workspace - inputs: - - content: |- - set -exo pipefail - tuist install - tuist generate - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM - - script: - title: Resolve package dependencies - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - - xcode-analyze: - inputs: - - workdir: . - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_SPM - benchmark_tuist_analyze_cc_dd_spm: - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM - - script: - title: Generate workspace - inputs: - - content: |- - set -exo pipefail - tuist install - tuist generate - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM - - script: - title: Resolve package dependencies - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - xcodebuild -resolvePackageDependencies -workspace Tuist.xcworkspace -scheme TuistApp - - xcode-analyze: - inputs: - - workdir: . - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_Analyze_CC_DD_SPM step_bundles: generate_gradle_verification_reference: steps: @@ -2093,11 +1870,6 @@ pipelines: benchmark_tuist_build_dd_cc: {} benchmark_tuist_build_spm_cc: {} benchmark_tuist_build_dd_spm_cc: {} - benchmark_tuist_analyze_baseline: {} - benchmark_tuist_analyze_cc: {} - benchmark_tuist_analyze_cc_dd: {} - benchmark_tuist_analyze_cc_spm: {} - benchmark_tuist_analyze_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline @@ -2115,8 +1887,3 @@ pipelines: - benchmark_tuist_build_dd_cc - benchmark_tuist_build_spm_cc - benchmark_tuist_build_dd_spm_cc - - benchmark_tuist_analyze_baseline - - benchmark_tuist_analyze_cc - - benchmark_tuist_analyze_cc_dd - - benchmark_tuist_analyze_cc_spm - - benchmark_tuist_analyze_cc_dd_spm From 9edf0a39cabfdc277c4b5e0787f1179a9f859641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bala=CC=81zs=20Hajagos?= Date: Mon, 15 Sep 2025 15:45:40 +0200 Subject: [PATCH 018/116] Fix results summary --- bitrise.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 5ebb0f1a..0ca2c29b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -916,17 +916,6 @@ workflows: "_Analyze_DD_SPM_CC" ) - app_variants=() # target array - - for base in "${APPS[@]}"; do - # add the base itself - app_variants+=("$base") - for v in "${variants[@]}"; do - [[ -z "$v" ]] && continue # skip empty variant already added as base - app_variants+=("${base}${v}") - done - done - pretty_diff() { local t1=$1 local t2=$2 @@ -948,7 +937,20 @@ workflows: printf '%s%s\n' "$sign" "$out" } - mapfile -t apps <<< "$APPS" + apps=() + while IFS= read -r line || [[ -n $line ]]; do + apps+=("$line") + done <<< "$APPS" + + app_variants=() # target array + for base in "${APPS[@]}"; do + # add the base itself + app_variants+=("$base") + for v in "${variants[@]}"; do + [[ -z "$v" ]] && continue # skip empty variant already added as base + app_variants+=("${base}${v}") + done + done for app in "${app_variants[@]}"; do start="${app}_START" From 76e509f652e4b7028835342106929cf3a63edbb9 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 17 Sep 2025 14:51:25 +0200 Subject: [PATCH 019/116] fix: Fix benchmark (#162) --- bitrise.yml | 151 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 114 insertions(+), 37 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 0ca2c29b..4729790d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -900,65 +900,142 @@ workflows: inputs: - content: |- #!/usr/bin/env bash - # fail if any commands fails - set -eo pipefail + set -euo pipefail variants=( "" "_CC" "_DD_CC" + "_CC_DD" "_SPM_CC" + "_CC_SPM" "_DD_SPM_CC" + "_CC_DD_SPM" "_Analyze" "_Analyze_CC" + "_Analyze_CC_DD" "_Analyze_DD_CC" "_Analyze_SPM_CC" + "_Analyze_CC_SPM" "_Analyze_DD_SPM_CC" + "_Analyze_CC_DD_SPM" ) pretty_diff() { - local t1=$1 - local t2=$2 - - local diff=$(( t2 - t1 )) + local secs=$1 local sign="" - if (( diff < 0 )); then + if (( secs < 0 )); then sign="-" - diff=$(( -diff )) + secs=$(( -secs )) + fi + local minutes=$(( secs / 60 )) + local seconds=$(( secs % 60 )) + if (( minutes > 0 )); then + printf '%s%dm %ds\n' "$sign" "$minutes" "$seconds" + else + printf '%s%ds\n' "$sign" "$seconds" fi - - local minutes=$(( diff / 60 )) - local seconds=$(( rem % 60 )) - - local out="" - (( minutes > 0 )) && out+="${minutes}m " - out+="${seconds}s" - - printf '%s%s\n' "$sign" "$out" } + # read APPS into an array apps=() while IFS= read -r line || [[ -n $line ]]; do apps+=("$line") done <<< "$APPS" - app_variants=() # target array - for base in "${APPS[@]}"; do - # add the base itself + # build all variants + app_variants=() + for base in "${apps[@]}"; do app_variants+=("$base") for v in "${variants[@]}"; do - [[ -z "$v" ]] && continue # skip empty variant already added as base + [[ -z "$v" ]] && continue app_variants+=("${base}${v}") done done + # duration in seconds from START/END var names + duration_seconds() { + local start_name=$1 + local end_name=$2 + echo $(( ${!end_name} - ${!start_name} )) + } + + # percent change with one decimal using integer math: + # returns string like "+12.3%" or "-4.0%" or "0.0%" + percent_change_one_decimal() { + local base_secs=$1 + local var_secs=$2 + + if (( base_secs == 0 )); then + printf 'N/A' + return + fi + + local diff=$(( base_secs - var_secs )) # positive = improvement + local scaled=$(( (diff * 1000) / base_secs )) # tenths of percent (integer) + local sign="" + if (( scaled > 0 )); then + sign="+" + elif (( scaled < 0 )); then + sign="-" + scaled=$(( -scaled )) + fi + local int_part=$(( scaled / 10 )) + local frac=$(( scaled % 10 )) + printf '%s%d.%d%%' "$sign" "$int_part" "$frac" + } + for app in "${app_variants[@]}"; do start="${app}_START" end="${app}_END" - [[ -z "${!start}" ]] && continue # skip missing variant - [[ -z "${!end}" ]] && continue # skip missing variant - echo "Time between ${app}_START and ${app}_END:" - pretty_diff "${!start}" "${!end}" + # skip if missing + [[ -z "${!start-}" ]] && continue + [[ -z "${!end-}" ]] && continue + + dur=$(duration_seconds "$start" "$end") + printf 'Duration for %s: ' "$app" + pretty_diff "$dur" + + # determine base name (before first underscore) + base_name="$app" + if [[ "$app" == *"_"* ]]; then + base_name="${app%%_*}" + fi + + # skip comparison when this is the base itself + if [[ "$app" == "$base_name" ]]; then + # nothing to compare to + continue + fi + + base_start="${base_name}_START" + base_end="${base_name}_END" + + if [[ -z "${!base_start-}" || -z "${!base_end-}" ]]; then + printf ' Base (%s) missing START/END — cannot compute percent change.\n' "$base_name" + continue + fi + + base_dur=$(duration_seconds "$base_start" "$base_end") + pc=$(percent_change_one_decimal "$base_dur" "$dur") + + if [[ "$pc" == "N/A" ]]; then + printf ' Percent change vs %s: N/A (base duration is zero)\n' "$base_name" + continue + fi + + if [[ "$pc" == "+0.0%" || "$pc" == "0.0%" ]]; then + printf ' Percent change vs %s: 0.0%% (equal)\n' "$base_name" + else + if (( dur < base_dur )); then + label="improved" + elif (( dur > base_dur )); then + label="slower" + else + label="equal" + fi + printf ' Percent change vs %s: %s (%s)\n' "$base_name" "$pc" "$label" + fi done envs: - APPS: |- @@ -1859,33 +1936,33 @@ pipelines: workflows: benchmark_wordpress_build_baseline: {} benchmark_wordpress_build_cc: {} - benchmark_wordpress_build_cc_dd: {} + # benchmark_wordpress_build_cc_dd: {} benchmark_wordpress_build_cc_spm: {} - benchmark_wordpress_build_cc_dd_spm: {} + # benchmark_wordpress_build_cc_dd_spm: {} benchmark_wordpress_analyze_baseline: {} benchmark_wordpress_analyze_cc: {} - benchmark_wordpress_analyze_cc_dd: {} + # benchmark_wordpress_analyze_cc_dd: {} benchmark_wordpress_analyze_cc_spm: {} - benchmark_wordpress_analyze_cc_dd_spm: {} + # benchmark_wordpress_analyze_cc_dd_spm: {} benchmark_tuist_build_baseline: {} benchmark_tuist_build_cc: {} - benchmark_tuist_build_dd_cc: {} + # benchmark_tuist_build_dd_cc: {} benchmark_tuist_build_spm_cc: {} - benchmark_tuist_build_dd_spm_cc: {} + # benchmark_tuist_build_dd_spm_cc: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline - benchmark_wordpress_build_cc - - benchmark_wordpress_build_cc_dd + # - benchmark_wordpress_build_cc_dd - benchmark_wordpress_build_cc_spm - - benchmark_wordpress_build_cc_dd_spm + # - benchmark_wordpress_build_cc_dd_spm - benchmark_wordpress_analyze_baseline - benchmark_wordpress_analyze_cc - - benchmark_wordpress_analyze_cc_dd + # - benchmark_wordpress_analyze_cc_dd - benchmark_wordpress_analyze_cc_spm - - benchmark_wordpress_analyze_cc_dd_spm + # - benchmark_wordpress_analyze_cc_dd_spm - benchmark_tuist_build_baseline - benchmark_tuist_build_cc - - benchmark_tuist_build_dd_cc + # - benchmark_tuist_build_dd_cc - benchmark_tuist_build_spm_cc - - benchmark_tuist_build_dd_spm_cc + # - benchmark_tuist_build_dd_spm_cc From ac1081d81044425de97898b78eaadaecea84ab45 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 14:46:28 +0200 Subject: [PATCH 020/116] feat: ACI-4001 add Calendar to benchmark # Conflicts: # bitrise.yml --- bitrise.yml | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 4729790d..bb9de4cf 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1041,6 +1041,7 @@ workflows: - APPS: |- WordPress Tuist + Calendar opts: is_expand: false benchmark_wordpress_build_baseline: @@ -1628,6 +1629,141 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC + benchmark_calendar_build_baseline: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Calendar + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Calendar + benchmark_calendar_build_cc: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Calendar + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Calendar + benchmark_calendar_build_cc_dd: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Calendar + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: Calendar + benchmark_calendar_build_cc_spm: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Calendar + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Calendar + benchmark_calendar_build_cc_dd_spm: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: Calendar + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: Calendar step_bundles: generate_gradle_verification_reference: steps: @@ -1949,6 +2085,11 @@ pipelines: # benchmark_tuist_build_dd_cc: {} benchmark_tuist_build_spm_cc: {} # benchmark_tuist_build_dd_spm_cc: {} + benchmark_calendar_build_baseline: {} + benchmark_calendar_build_cc: {} + benchmark_calendar_build_cc_dd: {} + benchmark_calendar_build_cc_spm: {} + benchmark_calendar_build_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline @@ -1966,3 +2107,8 @@ pipelines: # - benchmark_tuist_build_dd_cc - benchmark_tuist_build_spm_cc # - benchmark_tuist_build_dd_spm_cc + - benchmark_calendar_build_baseline + - benchmark_calendar_build_cc + - benchmark_calendar_build_cc_dd + - benchmark_calendar_build_cc_spm + - benchmark_calendar_build_cc_dd_spm From 23f3d6e846799bfd4eabce114d1170c4aa1b74c4 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 15:09:07 +0200 Subject: [PATCH 021/116] chore: ACI-4001 turn off dd wfs --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index bb9de4cf..d884fc00 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2087,9 +2087,9 @@ pipelines: # benchmark_tuist_build_dd_spm_cc: {} benchmark_calendar_build_baseline: {} benchmark_calendar_build_cc: {} - benchmark_calendar_build_cc_dd: {} +# benchmark_calendar_build_cc_dd: {} benchmark_calendar_build_cc_spm: {} - benchmark_calendar_build_cc_dd_spm: {} +# benchmark_calendar_build_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline @@ -2109,6 +2109,6 @@ pipelines: # - benchmark_tuist_build_dd_spm_cc - benchmark_calendar_build_baseline - benchmark_calendar_build_cc - - benchmark_calendar_build_cc_dd +# - benchmark_calendar_build_cc_dd - benchmark_calendar_build_cc_spm - - benchmark_calendar_build_cc_dd_spm +# - benchmark_calendar_build_cc_dd_spm From 4e815857e09affc4dda59bde25230bedb3f68425 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 15:11:42 +0200 Subject: [PATCH 022/116] chore: ACI-4001 fix BENCHMARK_APP_NAMEs --- bitrise.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index d884fc00..86d216da 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1669,10 +1669,10 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1682,7 +1682,7 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "false" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC benchmark_calendar_build_cc_dd: meta: bitrise.io: @@ -1696,10 +1696,10 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1709,7 +1709,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "false" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD benchmark_calendar_build_cc_spm: meta: bitrise.io: @@ -1723,10 +1723,10 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_SPM - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_SPM - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1736,7 +1736,7 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_SPM benchmark_calendar_build_cc_dd_spm: meta: bitrise.io: @@ -1750,10 +1750,10 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1763,7 +1763,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "true" - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM step_bundles: generate_gradle_verification_reference: steps: From 592d23e584a508f174307656e580df8299a0438c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 17 Sep 2025 15:19:11 +0200 Subject: [PATCH 023/116] fix: Add WordPress_Analyze as separate --- bitrise.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bitrise.yml b/bitrise.yml index 86d216da..7960bdfc 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1040,6 +1040,7 @@ workflows: envs: - APPS: |- WordPress + WordPress_Analyze Tuist Calendar opts: From 67ec2b28ac180d1e2f254a0f36e4c58bb3118b02 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 17 Sep 2025 15:20:00 +0200 Subject: [PATCH 024/116] fix: Add WordPress_Analyze as separate --- bitrise.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 7960bdfc..29efc720 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -911,14 +911,6 @@ workflows: "_CC_SPM" "_DD_SPM_CC" "_CC_DD_SPM" - "_Analyze" - "_Analyze_CC" - "_Analyze_CC_DD" - "_Analyze_DD_CC" - "_Analyze_SPM_CC" - "_Analyze_CC_SPM" - "_Analyze_DD_SPM_CC" - "_Analyze_CC_DD_SPM" ) pretty_diff() { From cb9f39b9d0f51bc78733cb3b798fa98a78841ac1 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 16:10:37 +0200 Subject: [PATCH 025/116] feat: ACI-4001 add IceCubesApp to benchmark --- bitrise.yml | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 183 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 29efc720..ef63ebf8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1035,6 +1035,7 @@ workflows: WordPress_Analyze Tuist Calendar + IceCubesApp opts: is_expand: false benchmark_wordpress_build_baseline: @@ -1757,6 +1758,176 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + benchmark_icecubes_build_baseline: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubes + - script: + title: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: IceCubes + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: IceCubes + benchmark_icecubes_build_cc: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubes_CC + - script: + title: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: IceCubes_CC + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: IceCubes_CC + benchmark_icecubes_build_dd: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubes_DD + - script: + title: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: IceCubes_DD + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - BENCHMARK_APP_NAME: IceCubes_DD + benchmark_icecubes_build_cc_spm: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubes_SPM + - script: + title: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: IceCubes_SPM + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: IceCubes_SPM + benchmark_icecubes_build_cc_dd_spm: + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM + - script: + title: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM step_bundles: generate_gradle_verification_reference: steps: @@ -2083,6 +2254,11 @@ pipelines: # benchmark_calendar_build_cc_dd: {} benchmark_calendar_build_cc_spm: {} # benchmark_calendar_build_cc_dd_spm: {} + benchmark_icecubes_build_baseline: {} + benchmark_icecubes_build_cc: {} +# benchmark_icecubes_build_cc_dd: {} + benchmark_icecubes_build_cc_spm: {} +# benchmark_icecubes_build_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline @@ -2102,6 +2278,11 @@ pipelines: # - benchmark_tuist_build_dd_spm_cc - benchmark_calendar_build_baseline - benchmark_calendar_build_cc -# - benchmark_calendar_build_cc_dd + # - benchmark_calendar_build_cc_dd - benchmark_calendar_build_cc_spm -# - benchmark_calendar_build_cc_dd_spm + # - benchmark_calendar_build_cc_dd_spm + - benchmark_icecubes_build_baseline + - benchmark_icecubes_build_cc + # - benchmark_icecubes_build_cc_dd + - benchmark_icecubes_build_cc_spm + # - benchmark_icecubes_build_cc_dd_spm From 2430dddc2537731d5ff829e8673ce643636464e9 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 16:16:19 +0200 Subject: [PATCH 026/116] chore: ACI-4001 fix BENCHMARK_APP_NAMEs --- bitrise.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index ef63ebf8..cd8a7215 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1873,7 +1873,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubes_SPM + - BENCHMARK_APP_NAME: IceCubes_CC_SPM - script: title: inputs: @@ -1882,7 +1882,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes_SPM + - BENCHMARK_APP_NAME: IceCubes_CC_SPM - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1893,7 +1893,7 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: IceCubes_SPM + - BENCHMARK_APP_NAME: IceCubes_CC_SPM benchmark_icecubes_build_cc_dd_spm: meta: bitrise.io: From a2b34c6527d24a972082360820b96bd58a4c5a00 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Wed, 17 Sep 2025 16:24:58 +0200 Subject: [PATCH 027/116] chore: ACI-4001 fix BENCHMARK_APP_NAMEs --- bitrise.yml | 60 ++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index cd8a7215..01b183f9 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1758,7 +1758,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM - benchmark_icecubes_build_baseline: + benchmark_icecubesapp_build_baseline: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1771,7 +1771,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubes + - BENCHMARK_APP_NAME: IceCubesApp - script: title: inputs: @@ -1780,7 +1780,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes + - BENCHMARK_APP_NAME: IceCubesApp - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1791,8 +1791,8 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubes - benchmark_icecubes_build_cc: + - BENCHMARK_APP_NAME: IceCubesApp + benchmark_icecubesapp_build_cc: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1805,7 +1805,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubes_CC + - BENCHMARK_APP_NAME: IceCubesApp_CC - script: title: inputs: @@ -1814,7 +1814,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes_CC + - BENCHMARK_APP_NAME: IceCubesApp_CC - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1825,8 +1825,8 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubes_CC - benchmark_icecubes_build_dd: + - BENCHMARK_APP_NAME: IceCubesApp_CC + benchmark_icecubesapp_build_dd: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1839,7 +1839,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubes_DD + - BENCHMARK_APP_NAME: IceCubesApp_DD - script: title: inputs: @@ -1848,7 +1848,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes_DD + - BENCHMARK_APP_NAME: IceCubesApp_DD - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1859,8 +1859,8 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubes_DD - benchmark_icecubes_build_cc_spm: + - BENCHMARK_APP_NAME: IceCubesApp_DD + benchmark_icecubesapp_build_cc_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1873,7 +1873,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubes_CC_SPM + - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM - script: title: inputs: @@ -1882,7 +1882,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes_CC_SPM + - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1893,8 +1893,8 @@ workflows: inputs: - USE_DD_CACHE: "false" - USE_SPM: "true" - - BENCHMARK_APP_NAME: IceCubes_CC_SPM - benchmark_icecubes_build_cc_dd_spm: + - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM + benchmark_icecubesapp_build_cc_dd_spm: meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1907,7 +1907,7 @@ workflows: - USE_DD_CACHE: "true" - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM + - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM - script: title: inputs: @@ -1916,7 +1916,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM + - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1927,7 +1927,7 @@ workflows: inputs: - USE_DD_CACHE: "true" - USE_SPM: "true" - - BENCHMARK_APP_NAME: IceCubes_CC_DD_SPM + - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM step_bundles: generate_gradle_verification_reference: steps: @@ -2254,11 +2254,11 @@ pipelines: # benchmark_calendar_build_cc_dd: {} benchmark_calendar_build_cc_spm: {} # benchmark_calendar_build_cc_dd_spm: {} - benchmark_icecubes_build_baseline: {} - benchmark_icecubes_build_cc: {} -# benchmark_icecubes_build_cc_dd: {} - benchmark_icecubes_build_cc_spm: {} -# benchmark_icecubes_build_cc_dd_spm: {} + benchmark_icecubesapp_build_baseline: {} + benchmark_icecubesapp_build_cc: {} +# benchmark_icecubesapp_build_cc_dd: {} + benchmark_icecubesapp_build_cc_spm: {} +# benchmark_icecubesapp_build_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline @@ -2281,8 +2281,8 @@ pipelines: # - benchmark_calendar_build_cc_dd - benchmark_calendar_build_cc_spm # - benchmark_calendar_build_cc_dd_spm - - benchmark_icecubes_build_baseline - - benchmark_icecubes_build_cc - # - benchmark_icecubes_build_cc_dd - - benchmark_icecubes_build_cc_spm - # - benchmark_icecubes_build_cc_dd_spm + - benchmark_icecubesapp_build_baseline + - benchmark_icecubesapp_build_cc + # - benchmark_icecubesapp_build_cc_dd + - benchmark_icecubesapp_build_cc_spm + # - benchmark_icecubesapp_build_cc_dd_spm From 4956a7c501573951695cfe7fbf1e70c59456a33d Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 09:36:09 +0200 Subject: [PATCH 028/116] feat: Add deploy artifacts --- bitrise.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 29efc720..022bddd6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2004,6 +2004,8 @@ step_bundles: - project_root_path: . - restore-spm-cache@2.1.1: run_if: '{{enveq "USE_SPM" "true"}}' + inputs: + - verbose: true benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: "" @@ -2032,12 +2034,18 @@ step_bundles: envman add --key "${BENCHMARK_APP_NAME}_END" --value "$(date +%s)" - save-spm-cache@1.3.1: run_if: '{{enveq "USE_SPM" "true"}}' + inputs: + - verbose: true - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: - project_root_path: . - derived_data_path: $HOME/Library/Developer/Xcode/DerivedData - skip_spm: $USE_SPM + - deploy-to-bitrise-io: + title: Upload logs to Bitrise + inputs: + - deploy_path: $BITRISE_DEPLOY_DIR - share-pipeline-variable: title: Share benchmark step results inputs: From fab4fb902c9c97ee8c417e5a1e96baf751f99895 Mon Sep 17 00:00:00 2001 From: "balazs.benyo" Date: Thu, 18 Sep 2025 10:27:35 +0200 Subject: [PATCH 029/116] chore: ACI-4001 use env vars --- bitrise.yml | 1621 +++++++++++++++++++++++++++------------------------ 1 file changed, 873 insertions(+), 748 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 01b183f9..d5e341f2 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -62,12 +62,12 @@ workflows: - script: title: Authenticate to GCP inputs: - - content: |- - #!/bin/bash - set -euxo pipefail - KEY_FILE_PATH=$(mktemp -d)/keyfile.json - echo "${GAR_SERVICE_ACCOUNT_B64}" | base64 --decode > ${KEY_FILE_PATH} - gcloud auth activate-service-account --key-file=${KEY_FILE_PATH} + - content: |- + #!/bin/bash + set -euxo pipefail + KEY_FILE_PATH=$(mktemp -d)/keyfile.json + echo "${GAR_SERVICE_ACCOUNT_B64}" | base64 --decode > ${KEY_FILE_PATH} + gcloud auth activate-service-account --key-file=${KEY_FILE_PATH} - script: title: Upload release artifacts to GAR inputs: @@ -113,7 +113,7 @@ workflows: done echo "Uploaded artifacts to GAR." - - deploy-to-bitrise-io@2: {} + - deploy-to-bitrise-io@2: { } - script: title: Update step inputs: @@ -124,26 +124,26 @@ workflows: ./scripts/update_step.sh - slack@4: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Build Cache for Gradle step update PR is ready! :tada: :rocket: :bitrise: - - Check PR here: $PR_URL - - emoji: ":gradle:" - - color: "#08a045" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" + - channel: "#team-advanced-ci-alerts-website" + - text: |- + Build Cache for Gradle step update PR is ready! :tada: :rocket: :bitrise: + + Check PR here: $PR_URL + - emoji: ":gradle:" + - color: "#08a045" + - webhook_url: "$SLACK_WEBHOOK_ALERTS" title: Send slack if PR opened run_if: '{{ getenv "PR_URL" | ne "" }}' - slack@4: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - CLI release failed! :gopher_lift: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" + - channel: "#team-advanced-ci-alerts-website" + - text: |- + CLI release failed! :gopher_lift: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ":rotating_light:" + - color: "#ee003b" + - webhook_url: "$SLACK_WEBHOOK_ALERTS" title: Send slack if failed run_if: ".IsBuildFailed" meta: @@ -154,8 +154,8 @@ workflows: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: {} - - go-list@1: {} + - git-clone@8: { } + - go-list@1: { } - script@1: title: golangci-lint inputs: @@ -163,12 +163,12 @@ workflows: #!/bin/bash set -ex make lint - - go-test@1: {} + - go-test@1: { } - bundle::generate_gradle_verification_reference: { } - bundle::check_gradle_verification_reference: { } - deploy-to-bitrise-io@2: inputs: - - deploy_path: "$GRADLE_VERIFICATION_REF_TARGET_PATH" + - deploy_path: "$GRADLE_VERIFICATION_REF_TARGET_PATH" meta: bitrise.io: machine_type_id: g2.mac.medium @@ -184,131 +184,131 @@ workflows: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@8: inputs: - - fetch_tags: "yes" - - shallow_clone: "false" - - clone_depth: "-1" - - bundle::generate_and_commit_dependency_matrix: {} + - fetch_tags: "yes" + - shallow_clone: "false" + - clone_depth: "-1" + - bundle::generate_and_commit_dependency_matrix: { } - slack@4: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Dependency matrix generation failed! :matrix-code: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" + - channel: "#team-advanced-ci-alerts-website" + - text: |- + Dependency matrix generation failed! :matrix-code: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ":rotating_light:" + - color: "#ee003b" + - webhook_url: "$SLACK_WEBHOOK_ALERTS" title: Send slack if failed run_if: ".IsBuildFailed" update_plugins: envs: - - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN + - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: - inputs: - - fetch_tags: "yes" - - shallow_clone: "false" - - clone_depth: "-1" - - apt-get-install: - inputs: - - packages: libxml2-utils - - script: - title: Ensure we're on main - inputs: - - content: | - #!/bin/bash - set -ex - - git fetch origin - if [[ "$BITRISE_GIT_BRANCH" != "main" ]]; then - git checkout main - git pull origin main - fi - - script: - title: Update plugins with latest version - inputs: - - content: | - bash ./scripts/update_plugins.sh - - bundle::generate_gradle_verification_reference: {} - - script: - title: Commit updated plugins and open PR - inputs: - - content: | - set -ex - - # Check for existing PR with the same title - existing_pr=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ - "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls?state=open" | jq -r ".[] | select(.title == \"chore: Update Gradle plugins\") | .html_url") - - if [ -n "$existing_pr" ]; then - echo "A pull request with this title already exists: $existing_pr" - exit 0 - fi - - if [ -n "$(git status --porcelain)" ]; then - git branch -D update-plugins || true - git checkout -b update-plugins - - git add . - git commit -m "feat: update plugins to release" - git push -f origin update-plugins - - # Create a pull request using GitHub API - pr_response=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ - -d "{\"title\":\"chore: Update Gradle plugins\",\"body\":\"This PR updates the Gradle plugins.\",\"head\":\"update-plugins\",\"base\":\"main\"}" \ - "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls") - - pr_url=$(echo "$pr_response" | jq -r .html_url) - envman add --key PR_URL --value "$pr_url" - - if [ "$pr_url" != "null" ]; then - echo "Pull request created successfully: $pr_url" - else - echo "Failed to create pull request. Response: $pr_response" - exit 1 - fi + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - git-clone@8: + inputs: + - fetch_tags: "yes" + - shallow_clone: "false" + - clone_depth: "-1" + - apt-get-install: + inputs: + - packages: libxml2-utils + - script: + title: Ensure we're on main + inputs: + - content: | + #!/bin/bash + set -ex + + git fetch origin + if [[ "$BITRISE_GIT_BRANCH" != "main" ]]; then + git checkout main + git pull origin main + fi + - script: + title: Update plugins with latest version + inputs: + - content: | + bash ./scripts/update_plugins.sh + - bundle::generate_gradle_verification_reference: { } + - script: + title: Commit updated plugins and open PR + inputs: + - content: | + set -ex + + # Check for existing PR with the same title + existing_pr=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls?state=open" | jq -r ".[] | select(.title == \"chore: Update Gradle plugins\") | .html_url") + + if [ -n "$existing_pr" ]; then + echo "A pull request with this title already exists: $existing_pr" + exit 0 + fi + + if [ -n "$(git status --porcelain)" ]; then + git branch -D update-plugins || true + git checkout -b update-plugins + + git add . + git commit -m "feat: update plugins to release" + git push -f origin update-plugins + + # Create a pull request using GitHub API + pr_response=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -d "{\"title\":\"chore: Update Gradle plugins\",\"body\":\"This PR updates the Gradle plugins.\",\"head\":\"update-plugins\",\"base\":\"main\"}" \ + "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls") + + pr_url=$(echo "$pr_response" | jq -r .html_url) + envman add --key PR_URL --value "$pr_url" + + if [ "$pr_url" != "null" ]; then + echo "Pull request created successfully: $pr_url" else - echo "No changes detected, skipping commit." - exit 0 + echo "Failed to create pull request. Response: $pr_response" + exit 1 fi - - slack@4: - inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Gradle plugin update PR is ready! :tada: :rocket: :gradle: - - Check PR here: $PR_URL - - emoji: ":gradle:" - - color: "#08a045" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if PR opened - run_if: '{{ getenv "PR_URL" | ne "" }}' - - slack@4: - inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - CLI plugin update failed! :gradle: :gopher_lift: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if failed - run_if: ".IsBuildFailed" + else + echo "No changes detected, skipping commit." + exit 0 + fi + - slack@4: + inputs: + - channel: "#team-advanced-ci-alerts-website" + - text: |- + Gradle plugin update PR is ready! :tada: :rocket: :gradle: + + Check PR here: $PR_URL + - emoji: ":gradle:" + - color: "#08a045" + - webhook_url: "$SLACK_WEBHOOK_ALERTS" + title: Send slack if PR opened + run_if: '{{ getenv "PR_URL" | ne "" }}' + - slack@4: + inputs: + - channel: "#team-advanced-ci-alerts-website" + - text: |- + CLI plugin update failed! :gradle: :gopher_lift: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ":rotating_light:" + - color: "#ee003b" + - webhook_url: "$SLACK_WEBHOOK_ALERTS" + title: Send slack if failed + run_if: ".IsBuildFailed" feature-e2e-gradle-duckduck: envs: - TEST_APP_URL: git@github.com:duckduckgo/Android.git - BRANCH: develop steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - apt-get-install: inputs: - - packages: 'bc' - - upgrade: "no" + - packages: 'bc' + - upgrade: "no" - script: title: Enable build cache inputs: @@ -318,8 +318,8 @@ workflows: - script: title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - content: |- + cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - script: title: Build and capture logs inputs: @@ -349,26 +349,26 @@ workflows: - script: title: Assert invocation from API inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" - assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" - assert_invocation_tasks_gradle "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" - - deploy-to-bitrise-io@2: {} + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" + assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" + assert_invocation_tasks_gradle "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" + - deploy-to-bitrise-io@2: { } feature-e2e-gradle-bitwarden: envs: - TEST_APP_URL: git@github.com:bitwarden/android.git - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - apt-get-install: inputs: - - packages: 'bc' - - upgrade: "no" + - packages: 'bc' + - upgrade: "no" - script: title: Enable build cache inputs: @@ -378,8 +378,8 @@ workflows: - script: title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - content: |- + cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - script: title: Create local configuration cache inputs: @@ -437,15 +437,15 @@ workflows: - script: title: Assert invocation from API inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" - assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" - assert_invocation_tasks_gradle "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" - - deploy-to-bitrise-io@2: {} + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" + assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" + assert_invocation_tasks_gradle "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" + - deploy-to-bitrise-io@2: { } feature-e2e-bazel-bitrisedc-no-rbe: meta: bitrise.io: @@ -455,11 +455,11 @@ workflows: - TEST_APP_URL: git@github.com:bitrise-io/bazel.git - BRANCH: master steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - apt-get-install: inputs: - - packages: 'bc' - - upgrade: "no" + - packages: 'bc' + - upgrade: "no" - script@1: inputs: - content: | @@ -509,15 +509,15 @@ workflows: - script: title: Assert invocation from API inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" - assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" - assert_invocation_targets_bazel "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" - - deploy-to-bitrise-io@2: {} + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" + assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" + assert_invocation_targets_bazel "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" + - deploy-to-bitrise-io@2: { } feature-e2e-bazel-public-no-rbe: meta: @@ -525,91 +525,91 @@ workflows: stack: linux-docker-android-22.04 machine_type_id: g2.linux.medium envs: - - TEST_APP_URL: git@github.com:bitrise-io/bazel.git - - BRANCH: master + - TEST_APP_URL: git@github.com:bitrise-io/bazel.git + - BRANCH: master steps: - - bundle::feature-e2e-setup: { } - - apt-get-install: - inputs: - - packages: 'bc dnsutils iputils-ping' - - upgrade: "no" - - script: - title: Enable build cache - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - echo "Bitrise step ID: $BITRISE_STEP_EXECUTION_ID" - ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps - - script: - title: Build and capture logs using Docker - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - mkdir -p ../_dockerroot - cp -r $HOME/.bazelrc ../_dockerroot/.bazelrc - - echo ${DOCKER_SHARED_PASSWORD} | docker login --username bitrisedev --password-stdin - - sudo docker run --rm \ - -w "/workspace" \ - -e "BITRISE_APP_SLUG=$BITRISE_APP_SLUG" \ - -e "BITRISE_BUILD_SLUG=$BITRISE_BUILD_SLUG" \ - -e "BITRISE_STEP_EXECUTION_ID=$BITRISE_STEP_EXECUTION_ID" \ - -e "BITRISE_TRIGGERED_WORKFLOW_TITLE=$BITRISE_TRIGGERED_WORKFLOW_TITLE" \ - -e "GIT_REPOSITORY_UR=$GIT_REPOSITORY_URL" \ - -e "BITRISE_GIT_COMMIT=$BITRISE_GIT_COMMIT" \ - --mount "type=bind,source=$PWD,target=/workspace" \ - --mount "type=bind,source=$(readlink -f ../_dockerroot)/.bazelrc,target=/root/.bazelrc,ro" \ - --mount "type=bind,source=$BITRISE_DEPLOY_DIR,target=/bitrise-deploy" \ - ubuntu:22.04 \ - bash -c "set -o pipefail; apt-get update && apt-get install -y curl build-essential xz-utils zip unzip python3 && \ - curl -Lo bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && \ - chmod +x bazelisk && \ - ./bazelisk build //src:bazel-dev --announce_rc --copt='-w' 2>&1 | tee /bitrise-deploy/logs.txt" - - - script: - title: Check for cache invocations - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ - 'Invocation ID: ' \ - '--bes_header=x-os=Linux' \ - '--bes_header=x-cpu-cores=[0-9]+' \ - '--bes_header=x-mem-size=[0-9]+' \ - '--bes_header=x-ci-provider=bitrise' \ - "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ - '--bes_header=x-locale=\w+' \ - '--bes_header=x-default-charset=\w+' - - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API - inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" - assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" - assert_invocation_targets_bazel "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" - - deploy-to-bitrise-io@2: { } + - bundle::feature-e2e-setup: { } + - apt-get-install: + inputs: + - packages: 'bc dnsutils iputils-ping' + - upgrade: "no" + - script: + title: Enable build cache + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + echo "Bitrise step ID: $BITRISE_STEP_EXECUTION_ID" + ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps + - script: + title: Build and capture logs using Docker + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + mkdir -p ../_dockerroot + cp -r $HOME/.bazelrc ../_dockerroot/.bazelrc + + echo ${DOCKER_SHARED_PASSWORD} | docker login --username bitrisedev --password-stdin + + sudo docker run --rm \ + -w "/workspace" \ + -e "BITRISE_APP_SLUG=$BITRISE_APP_SLUG" \ + -e "BITRISE_BUILD_SLUG=$BITRISE_BUILD_SLUG" \ + -e "BITRISE_STEP_EXECUTION_ID=$BITRISE_STEP_EXECUTION_ID" \ + -e "BITRISE_TRIGGERED_WORKFLOW_TITLE=$BITRISE_TRIGGERED_WORKFLOW_TITLE" \ + -e "GIT_REPOSITORY_UR=$GIT_REPOSITORY_URL" \ + -e "BITRISE_GIT_COMMIT=$BITRISE_GIT_COMMIT" \ + --mount "type=bind,source=$PWD,target=/workspace" \ + --mount "type=bind,source=$(readlink -f ../_dockerroot)/.bazelrc,target=/root/.bazelrc,ro" \ + --mount "type=bind,source=$BITRISE_DEPLOY_DIR,target=/bitrise-deploy" \ + ubuntu:22.04 \ + bash -c "set -o pipefail; apt-get update && apt-get install -y curl build-essential xz-utils zip unzip python3 && \ + curl -Lo bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && \ + chmod +x bazelisk && \ + ./bazelisk build //src:bazel-dev --announce_rc --copt='-w' 2>&1 | tee /bitrise-deploy/logs.txt" + + - script: + title: Check for cache invocations + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ + '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ + 'Invocation ID: ' \ + '--bes_header=x-os=Linux' \ + '--bes_header=x-cpu-cores=[0-9]+' \ + '--bes_header=x-mem-size=[0-9]+' \ + '--bes_header=x-ci-provider=bitrise' \ + "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ + '--bes_header=x-locale=\w+' \ + '--bes_header=x-default-charset=\w+' + + source ../_e2e/scripts/extract_invocation_id.sh + + invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") + if [[ -z "$invocation_id" ]]; then + fatal "Invocation ID not found in logs" + fi + + echo "Found Invocation ID: $invocation_id" + envman add --key INVOCATION_ID --value "$invocation_id" + - script: + title: Assert invocation from API + inputs: + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" + assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" + assert_invocation_targets_bazel "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" + - deploy-to-bitrise-io@2: { } gradle-configuration-e2e-osx: meta: @@ -620,7 +620,7 @@ workflows: - TEST_APP_URL: git@github.com:bitwarden/android.git - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - script: title: Enable build cache inputs: @@ -674,7 +674,7 @@ workflows: '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ '\[Bitrise Build Cache\].*Request metadata invocationId' \ '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - deploy-to-bitrise-io@2: {} + - deploy-to-bitrise-io@2: { } gradle-configuration-e2e-linux: meta: @@ -684,7 +684,7 @@ workflows: - TEST_APP_URL: git@github.com:bitwarden/android.git - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - script: title: Enable build cache inputs: @@ -694,8 +694,8 @@ workflows: - script: title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - content: |- + cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - script: title: Create local configuration cache inputs: @@ -738,15 +738,15 @@ workflows: '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ '\[Bitrise Build Cache\].*Request metadata invocationId' \ '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - deploy-to-bitrise-io@2: {} + - deploy-to-bitrise-io@2: { } ai_pr_summary: triggers: # run for pull requests; changed_files filter exposes the list of changed files pull_request: - - target_branch: '*' - source_branch: '*' - changed_files: '*' + - target_branch: '*' + source_branch: '*' + changed_files: '*' # Set status_report_name to report the status of this workflow separately. status_report_name: 'AI Review' # Simple Medium Linux machine is enough @@ -755,61 +755,61 @@ workflows: machine_type_id: g2.linux.medium stack: linux-docker-android-22.04 envs: - - GITHUB_TOKEN: $AI_GITHUB_TOKEN - - LITELLM_API_KEY: $LITELLM_API_KEY - - PUBSUB_TOPIC_ID: bitcode-analytics - - PUBSUB_PROJECT_ID: ip-ai-dev - - PUBSUB_CREDENTIALS_JSON_B64: $AI_PUBSUB_CREDENTIALS_JSON_B64 + - GITHUB_TOKEN: $AI_GITHUB_TOKEN + - LITELLM_API_KEY: $LITELLM_API_KEY + - PUBSUB_TOPIC_ID: bitcode-analytics + - PUBSUB_PROJECT_ID: ip-ai-dev + - PUBSUB_CREDENTIALS_JSON_B64: $AI_PUBSUB_CREDENTIALS_JSON_B64 steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8.4.0: { } - - script@1.2.1: - title: Generate AI Review for PR - inputs: - - content: |- - #!/bin/bash - set -e - - sudo apt update - sudo apt install ripgrep -y - - # Parse repository name from repo URL (works for SSH & HTTPS) - REPO_URL="${GIT_REPOSITORY_URL}" - REPO=$(echo "$REPO_URL" | sed -E 's#(git@|https://)([^/:]+)[/:]([^/]+)/([^.]+)(\.git)?#\3/\4#') - - # 1. Unshallow the repo if it's a shallow clone (safe to run even if already full) - git fetch --unshallow || true - - # 2. Fetch all branch refs (this ensures both the PR and the target/destination branch are present) - git fetch origin - - # 3. Fetch both relevant branches explicitly for safety (redundant but safe) - git fetch origin "$BITRISEIO_GIT_BRANCH_DEST" - git fetch origin "$BITRISE_GIT_BRANCH" - - # 4. Create/reset local branches to match the remote - git checkout -B "$BITRISEIO_GIT_BRANCH_DEST" "origin/$BITRISEIO_GIT_BRANCH_DEST" - git checkout -B "$BITRISE_GIT_BRANCH" "origin/$BITRISE_GIT_BRANCH" - - # (Optionally: check out the PR branch if that is the branch you want to analyze) - git checkout "$BITRISE_GIT_BRANCH" - - # Download and install bitcode - curl -L https://storage.googleapis.com/bitrise-bitcode/bitcode-linux-amd64.tar.gz -o /tmp/bitcode-linux-amd64.tar.gz - sudo tar -xzf /tmp/bitcode-linux-amd64.tar.gz -C /usr/local/bin/ - sudo chmod +x /usr/local/bin/bitcode - - # 6. Run your AI reviewer (customize flags as needed) - bitcode review \ - --git-provider github \ - --pr-id="${BITRISE_PULL_REQUEST}" \ - --repo="${REPO}" \ - --max-token-usage 5000000 \ - --session-id "${BITRISE_BUILD_SLUG}" \ - --log-level info - - echo "Done! PR reviewed." + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - git-clone@8.4.0: { } + - script@1.2.1: + title: Generate AI Review for PR + inputs: + - content: |- + #!/bin/bash + set -e + + sudo apt update + sudo apt install ripgrep -y + + # Parse repository name from repo URL (works for SSH & HTTPS) + REPO_URL="${GIT_REPOSITORY_URL}" + REPO=$(echo "$REPO_URL" | sed -E 's#(git@|https://)([^/:]+)[/:]([^/]+)/([^.]+)(\.git)?#\3/\4#') + + # 1. Unshallow the repo if it's a shallow clone (safe to run even if already full) + git fetch --unshallow || true + + # 2. Fetch all branch refs (this ensures both the PR and the target/destination branch are present) + git fetch origin + + # 3. Fetch both relevant branches explicitly for safety (redundant but safe) + git fetch origin "$BITRISEIO_GIT_BRANCH_DEST" + git fetch origin "$BITRISE_GIT_BRANCH" + + # 4. Create/reset local branches to match the remote + git checkout -B "$BITRISEIO_GIT_BRANCH_DEST" "origin/$BITRISEIO_GIT_BRANCH_DEST" + git checkout -B "$BITRISE_GIT_BRANCH" "origin/$BITRISE_GIT_BRANCH" + + # (Optionally: check out the PR branch if that is the branch you want to analyze) + git checkout "$BITRISE_GIT_BRANCH" + + # Download and install bitcode + curl -L https://storage.googleapis.com/bitrise-bitcode/bitcode-linux-amd64.tar.gz -o /tmp/bitcode-linux-amd64.tar.gz + sudo tar -xzf /tmp/bitcode-linux-amd64.tar.gz -C /usr/local/bin/ + sudo chmod +x /usr/local/bin/bitcode + + # 6. Run your AI reviewer (customize flags as needed) + bitcode review \ + --git-provider github \ + --pr-id="${BITRISE_PULL_REQUEST}" \ + --repo="${REPO}" \ + --max-token-usage 5000000 \ + --session-id "${BITRISE_BUILD_SLUG}" \ + --log-level info + + echo "Done! PR reviewed." e2e-xcode-comp-cache: meta: @@ -820,72 +820,72 @@ workflows: - TEST_APP_URL: git@github.com:bitrise-io/swift-composable-architecture.git - COMMIT: 27db3dfc9f55c206e09ca2a51b93bd600a56429e steps: - - bundle::feature-e2e-setup: {} + - bundle::feature-e2e-setup: { } - script: title: activate xcode using CLI inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - echo "Original Xcodebuild command location:" - type xcodebuild || true - - # Add --xcode-path /usr/bin/xcodebuild to test xcode path override (for local) - ../bitrise-build-cache-cli -d activate xcode \ - --cache + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + echo "Original Xcodebuild command location:" + type xcodebuild || true + + # Add --xcode-path /usr/bin/xcodebuild to test xcode path override (for local) + ../bitrise-build-cache-cli -d activate xcode \ + --cache - script: title: build app inputs: - - content: |- - echo "Xcodebuild command location after activation:" - type xcodebuild || true - - echo "Config file content:" - cat "$HOME/.bitrise-xcelerate/config.json" - - echo "Starting build..." - xcodebuild build \ - -workspace ComposableArchitecture.xcworkspace \ - -scheme ComposableArchitecture \ - -destination "generic/platform=iOS" \ - -skipMacroValidation 2> wrapper.log | tee xcodebuild.log | xcpretty + - content: |- + echo "Xcodebuild command location after activation:" + type xcodebuild || true + + echo "Config file content:" + cat "$HOME/.bitrise-xcelerate/config.json" + + echo "Starting build..." + xcodebuild build \ + -workspace ComposableArchitecture.xcworkspace \ + -scheme ComposableArchitecture \ + -destination "generic/platform=iOS" \ + -skipMacroValidation 2> wrapper.log | tee xcodebuild.log | xcpretty - script: title: gather info inputs: - - content: |- - set -exo pipefail - - cp ~/.bitrise-xcelerate/config.json $BITRISE_DEPLOY_DIR - cp ~/.local/state/xcelerate/logs/* $BITRISE_DEPLOY_DIR - cp xcodebuild.log $BITRISE_DEPLOY_DIR - cp wrapper.log $BITRISE_DEPLOY_DIR - - cat "$BITRISE_DEPLOY_DIR/wrapper.log" - head -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log - tail -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log - - source ../_e2e/scripts/error.sh - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_xcode "$BITRISE_DEPLOY_DIR/wrapper.log") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" + - content: |- + set -exo pipefail + + cp ~/.bitrise-xcelerate/config.json $BITRISE_DEPLOY_DIR + cp ~/.local/state/xcelerate/logs/* $BITRISE_DEPLOY_DIR + cp xcodebuild.log $BITRISE_DEPLOY_DIR + cp wrapper.log $BITRISE_DEPLOY_DIR + + cat "$BITRISE_DEPLOY_DIR/wrapper.log" + head -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log + tail -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log + + source ../_e2e/scripts/error.sh + source ../_e2e/scripts/extract_invocation_id.sh + + invocation_id=$(extract_invocation_id_xcode "$BITRISE_DEPLOY_DIR/wrapper.log") + if [[ -z "$invocation_id" ]]; then + fatal "Invocation ID not found in logs" + fi + + echo "Found Invocation ID: $invocation_id" + envman add --key INVOCATION_ID --value "$invocation_id" - script: title: Assert invocation from API inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "xcode" - assert_bitrise_invocation_detail "$INVOCATION_ID" "xcode" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "xcode" + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "xcode" + assert_bitrise_invocation_detail "$INVOCATION_ID" "xcode" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "xcode" - script: title: Check for cache usage inputs: @@ -893,7 +893,7 @@ workflows: set -exo pipefail ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' - - deploy-to-bitrise-io: {} + - deploy-to-bitrise-io: { } benchmark_results: steps: - script@1: @@ -1039,6 +1039,11 @@ workflows: opts: is_expand: false benchmark_wordpress_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1048,10 +1053,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1066,7 +1071,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1075,10 +1080,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Tuist meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1090,10 +1100,10 @@ workflows: inputs: - REPO_URL: git@github.com:tuist/tuist.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Tuist + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Generate workspace inputs: @@ -1103,7 +1113,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1112,10 +1122,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1125,10 +1140,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1143,7 +1158,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1152,10 +1167,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC_DD meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1165,10 +1185,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1183,7 +1203,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC_DD + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1192,10 +1212,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1205,10 +1230,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1223,7 +1248,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1232,10 +1257,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1245,10 +1275,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1263,7 +1293,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: WordPress.xcworkspace @@ -1272,10 +1302,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1285,10 +1320,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1303,7 +1338,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_Analyze + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-analyze: inputs: - workdir: . @@ -1312,10 +1347,15 @@ workflows: - cache_level: none - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1325,10 +1365,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1343,7 +1383,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_Analyze_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-analyze: inputs: - workdir: . @@ -1352,10 +1392,15 @@ workflows: - cache_level: none - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_cc_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1365,10 +1410,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1383,7 +1428,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-analyze: inputs: - workdir: . @@ -1392,10 +1437,15 @@ workflows: - cache_level: none - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1405,10 +1455,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1423,7 +1473,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-analyze: inputs: - workdir: . @@ -1432,10 +1482,15 @@ workflows: - cache_level: none - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1445,10 +1500,10 @@ workflows: inputs: - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - BRANCH: trunk - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Install dependencies inputs: @@ -1463,7 +1518,7 @@ workflows: xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-analyze: inputs: - workdir: . @@ -1472,10 +1527,15 @@ workflows: - cache_level: none - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1487,10 +1547,10 @@ workflows: inputs: - REPO_URL: git@github.com:tuist/tuist.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Generate workspace inputs: @@ -1500,7 +1560,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1509,10 +1569,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_dd_cc: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_DD_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1524,10 +1589,10 @@ workflows: inputs: - REPO_URL: git@github.com:tuist/tuist.git - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_DD_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Generate workspace inputs: @@ -1537,7 +1602,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_DD_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1546,10 +1611,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Tuist_DD_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_spm_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_SPM_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1561,10 +1631,10 @@ workflows: inputs: - REPO_URL: git@github.com:tuist/tuist.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_SPM_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Generate workspace inputs: @@ -1574,7 +1644,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_SPM_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1583,10 +1653,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_SPM_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_dd_spm_cc: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1598,10 +1673,10 @@ workflows: inputs: - REPO_URL: git@github.com:tuist/tuist.git - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: Generate workspace inputs: @@ -1611,7 +1686,7 @@ workflows: tuist generate - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Tuist.xcworkspace @@ -1620,10 +1695,15 @@ workflows: - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1633,13 +1713,13 @@ workflows: inputs: - REPO_URL: git@github.com:richardtop/CalendarApp.git - BRANCH: master - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1647,10 +1727,15 @@ workflows: - configuration: Debug - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Calendar + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1660,13 +1745,13 @@ workflows: inputs: - REPO_URL: git@github.com:richardtop/CalendarApp.git - BRANCH: master - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1674,10 +1759,15 @@ workflows: - configuration: Debug - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Calendar_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_DD meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1687,13 +1777,13 @@ workflows: inputs: - REPO_URL: git@github.com:richardtop/CalendarApp.git - BRANCH: master - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar_CC_DD + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1701,10 +1791,15 @@ workflows: - configuration: Debug - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: Calendar_CC_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1714,13 +1809,13 @@ workflows: inputs: - REPO_URL: git@github.com:richardtop/CalendarApp.git - BRANCH: master - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar_CC_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1728,10 +1823,15 @@ workflows: - configuration: Debug - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Calendar_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1741,13 +1841,13 @@ workflows: inputs: - REPO_URL: git@github.com:richardtop/CalendarApp.git - BRANCH: master - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: Calendar.xcodeproj @@ -1755,10 +1855,15 @@ workflows: - configuration: Debug - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_icecubesapp_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubesApp meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1768,10 +1873,10 @@ workflows: inputs: - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubesApp + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: inputs: @@ -1780,7 +1885,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubesApp + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1789,10 +1894,15 @@ workflows: - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubesApp + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_icecubesapp_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1802,10 +1912,10 @@ workflows: inputs: - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: inputs: @@ -1814,7 +1924,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubesApp_CC + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1823,10 +1933,15 @@ workflows: - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubesApp_CC + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_icecubesapp_build_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubesApp_DD meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1836,10 +1951,10 @@ workflows: inputs: - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubesApp_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: inputs: @@ -1848,7 +1963,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubesApp_DD + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1857,10 +1972,15 @@ workflows: - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: IceCubesApp_DD + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_icecubesapp_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1870,10 +1990,10 @@ workflows: inputs: - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - BRANCH: main - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: inputs: @@ -1882,7 +2002,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1891,10 +2011,15 @@ workflows: - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_icecubesapp_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM meta: bitrise.io: stack: osx-xcode-26.0.x-edge @@ -1904,10 +2029,10 @@ workflows: inputs: - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - BRANCH: main - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: title: inputs: @@ -1916,7 +2041,7 @@ workflows: cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - bundle::benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - project_path: IceCubesApp.xcodeproj @@ -1925,9 +2050,9 @@ workflows: - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME step_bundles: generate_gradle_verification_reference: steps: @@ -1970,157 +2095,157 @@ step_bundles: - script@1: title: Check if local updates to verification-metadata.xml are not commited inputs: - - content: |- - set -x - - git update-index --refresh | grep "cmd/gradle/asset/verification-metadata.xml" - if [[ $? == 0 ]]; then - echo "Please manually commit the changes to the repo:" - echo "$GRADLE_VERIFICATION_REF_TARGET_PATH" - exit 1 - else - echo "The files have no unstaged changes: $GRADLE_VERIFICATION_REF_TARGET_PATH" - exit 0 - fi + - content: |- + set -x + + git update-index --refresh | grep "cmd/gradle/asset/verification-metadata.xml" + if [[ $? == 0 ]]; then + echo "Please manually commit the changes to the repo:" + echo "$GRADLE_VERIFICATION_REF_TARGET_PATH" + exit 1 + else + echo "The files have no unstaged changes: $GRADLE_VERIFICATION_REF_TARGET_PATH" + exit 0 + fi generate_and_commit_dependency_matrix: steps: - - script: - run_if: ".IsCI" - title: Install pandoc - inputs: - - content: | - #!/bin/bash - set -ex - - wget https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - tar xvzf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - sudo mv pandoc-$PANDOC_VERSION/bin/pandoc /usr/local/bin/ - - rm -rf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - rm -rf pandoc-$PANDOC_VERSION - - pandoc --version - - script: - title: Install go versions - inputs: - - content: | - #!/bin/bash - set -ex - - asdf install golang 1.23.8 - asdf install golang 1.21.5 - - script: - title: Generate dependency matrix - inputs: - - content: | - #!/bin/bash - set -ex - - bash ./scripts/generate-dependency-matrix.sh - - script: - title: Reformat dependency matrix - inputs: - - content: | - #!/bin/bash - set -ex - - pandoc --from=markdown --to=gfm --wrap=auto --output cleaned.md docs/dependency-matrix.md - mv cleaned.md docs/dependency-matrix.md - - script: - title: Commit dependency matrix - inputs: - - content: | - #!/bin/bash - set -ex - - git status - ls -l docs/dependency-matrix.md - git stash push -u -m "stash before switching to gh-pages" - - git fetch --all - git checkout gh-pages - - rm -f docs/dependency-matrix.md - git stash apply - - if [ ! -f docs/dependency-matrix.md ]; then - echo "No dependency matrix found, skipping commit." - exit -1 - fi - - if [ -n "$(git status --porcelain)" ]; then - echo "Changes detected, committing and pushing to gh-pages branch." - - git add docs/dependency-matrix.md - git diff --cached docs/dependency-matrix.md - - git commit -m "chore: update dependency matrix" - git push origin gh-pages - else - echo "No changes detected, skipping commit." - exit 0 - fi + - script: + run_if: ".IsCI" + title: Install pandoc + inputs: + - content: | + #!/bin/bash + set -ex + + wget https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + tar xvzf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + sudo mv pandoc-$PANDOC_VERSION/bin/pandoc /usr/local/bin/ + + rm -rf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + rm -rf pandoc-$PANDOC_VERSION + + pandoc --version + - script: + title: Install go versions + inputs: + - content: | + #!/bin/bash + set -ex + + asdf install golang 1.23.8 + asdf install golang 1.21.5 + - script: + title: Generate dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + bash ./scripts/generate-dependency-matrix.sh + - script: + title: Reformat dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + pandoc --from=markdown --to=gfm --wrap=auto --output cleaned.md docs/dependency-matrix.md + mv cleaned.md docs/dependency-matrix.md + - script: + title: Commit dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + git status + ls -l docs/dependency-matrix.md + git stash push -u -m "stash before switching to gh-pages" + + git fetch --all + git checkout gh-pages + + rm -f docs/dependency-matrix.md + git stash apply + + if [ ! -f docs/dependency-matrix.md ]; then + echo "No dependency matrix found, skipping commit." + exit -1 + fi + + if [ -n "$(git status --porcelain)" ]; then + echo "Changes detected, committing and pushing to gh-pages branch." + + git add docs/dependency-matrix.md + git diff --cached docs/dependency-matrix.md + + git commit -m "chore: update dependency matrix" + git push origin gh-pages + else + echo "No changes detected, skipping commit." + exit 0 + fi feature-e2e-setup: steps: - - activate-ssh-key: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - script: - title: Clone e2e testing repo with deploy key - run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | ne ""}}' - inputs: - - content: |- - #!/bin/bash - set -ex - - mkdir -p ~/.ssh - echo "$SSH_DEPLOY_KEY_E2E_TESTING" > ~/.ssh/github_deploy_build_cache_e2e_testing - chmod 600 ~/.ssh/github_deploy_build_cache_e2e_testing - - ssh-add ~/.ssh/github_deploy_build_cache_e2e_testing - - mkdir -p ./_e2e - GIT_SSH_COMMAND='ssh -i ~/.ssh/github_deploy_build_cache_e2e_testing -o IdentitiesOnly=yes' git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e - - ls -la ./_e2e - - script: - title: Clone e2e repo with existing SSH key - run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | eq ""}}' - inputs: - - content: |- - #!/bin/bash - set -ex - - rm -rf ./_e2e - mkdir -p ./_e2e - git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e - - ls -la ./_e2e - - script: - title: Delete _tmp dirs - inputs: - - content: rm -rf _tmp - - script: - title: Delete DerivedData - inputs: - - content: rm -rf ~/Library/Developer/Xcode/DerivedData - - git::https://github.com/bitrise-steplib/bitrise-step-simple-git-clone.git: - inputs: - - repository_url: "$TEST_APP_URL" - - clone_into_dir: "./_tmp" - - branch: "$BRANCH" - - commit: "$COMMIT" - - git-clone: {} - - script: - title: build CLI - inputs: - - content: |- - set -exo pipefail - go build -o bitrise-build-cache-cli - - change-workdir: - title: Switch working dir to _tmp - inputs: - - path: "./_tmp" + - activate-ssh-key: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - script: + title: Clone e2e testing repo with deploy key + run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | ne ""}}' + inputs: + - content: |- + #!/bin/bash + set -ex + + mkdir -p ~/.ssh + echo "$SSH_DEPLOY_KEY_E2E_TESTING" > ~/.ssh/github_deploy_build_cache_e2e_testing + chmod 600 ~/.ssh/github_deploy_build_cache_e2e_testing + + ssh-add ~/.ssh/github_deploy_build_cache_e2e_testing + + mkdir -p ./_e2e + GIT_SSH_COMMAND='ssh -i ~/.ssh/github_deploy_build_cache_e2e_testing -o IdentitiesOnly=yes' git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e + + ls -la ./_e2e + - script: + title: Clone e2e repo with existing SSH key + run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | eq ""}}' + inputs: + - content: |- + #!/bin/bash + set -ex + + rm -rf ./_e2e + mkdir -p ./_e2e + git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e + + ls -la ./_e2e + - script: + title: Delete _tmp dirs + inputs: + - content: rm -rf _tmp + - script: + title: Delete DerivedData + inputs: + - content: rm -rf ~/Library/Developer/Xcode/DerivedData + - git::https://github.com/bitrise-steplib/bitrise-step-simple-git-clone.git: + inputs: + - repository_url: "$TEST_APP_URL" + - clone_into_dir: "./_tmp" + - branch: "$BRANCH" + - commit: "$COMMIT" + - git-clone: { } + - script: + title: build CLI + inputs: + - content: |- + set -exo pipefail + go build -o bitrise-build-cache-cli + - change-workdir: + title: Switch working dir to _tmp + inputs: + - path: "./_tmp" benchmark-setup: inputs: - REPO_URL: "" @@ -2140,7 +2265,7 @@ step_bundles: title: Clean _benchmark dir inputs: - content: rm -rf ./_benchmark - - git-clone: {} + - git-clone: { } - script: title: Build CLI run_if: '{{enveq "USE_COMP_CACHE" "true"}}' @@ -2219,46 +2344,46 @@ step_bundles: pipelines: features-e2e: workflows: - test: {} - feature-e2e-bazel-bitrisedc-no-rbe: {} - feature-e2e-bazel-public-no-rbe: {} - feature-e2e-gradle-duckduck: {} - feature-e2e-gradle-bitwarden: {} - gradle-configuration-e2e-osx: {} - gradle-configuration-e2e-linux: {} - e2e-xcode-comp-cache: {} + test: { } + feature-e2e-bazel-bitrisedc-no-rbe: { } + feature-e2e-bazel-public-no-rbe: { } + feature-e2e-gradle-duckduck: { } + feature-e2e-gradle-bitwarden: { } + gradle-configuration-e2e-osx: { } + gradle-configuration-e2e-linux: { } + e2e-xcode-comp-cache: { } triggers: pull_request: - - source_branch: "*" + - source_branch: "*" push: - - branch: main + - branch: main benchmark: workflows: - benchmark_wordpress_build_baseline: {} - benchmark_wordpress_build_cc: {} + benchmark_wordpress_build_baseline: { } + benchmark_wordpress_build_cc: { } # benchmark_wordpress_build_cc_dd: {} - benchmark_wordpress_build_cc_spm: {} + benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} - benchmark_wordpress_analyze_baseline: {} - benchmark_wordpress_analyze_cc: {} + benchmark_wordpress_analyze_baseline: { } + benchmark_wordpress_analyze_cc: { } # benchmark_wordpress_analyze_cc_dd: {} - benchmark_wordpress_analyze_cc_spm: {} + benchmark_wordpress_analyze_cc_spm: { } # benchmark_wordpress_analyze_cc_dd_spm: {} - benchmark_tuist_build_baseline: {} - benchmark_tuist_build_cc: {} + benchmark_tuist_build_baseline: { } + benchmark_tuist_build_cc: { } # benchmark_tuist_build_dd_cc: {} - benchmark_tuist_build_spm_cc: {} + benchmark_tuist_build_spm_cc: { } # benchmark_tuist_build_dd_spm_cc: {} - benchmark_calendar_build_baseline: {} - benchmark_calendar_build_cc: {} -# benchmark_calendar_build_cc_dd: {} - benchmark_calendar_build_cc_spm: {} -# benchmark_calendar_build_cc_dd_spm: {} - benchmark_icecubesapp_build_baseline: {} - benchmark_icecubesapp_build_cc: {} -# benchmark_icecubesapp_build_cc_dd: {} - benchmark_icecubesapp_build_cc_spm: {} -# benchmark_icecubesapp_build_cc_dd_spm: {} + benchmark_calendar_build_baseline: { } + benchmark_calendar_build_cc: { } + # benchmark_calendar_build_cc_dd: {} + benchmark_calendar_build_cc_spm: { } + # benchmark_calendar_build_cc_dd_spm: {} + benchmark_icecubesapp_build_baseline: { } + benchmark_icecubesapp_build_cc: { } + # benchmark_icecubesapp_build_cc_dd: {} + benchmark_icecubesapp_build_cc_spm: { } + # benchmark_icecubesapp_build_cc_dd_spm: {} benchmark_results: depends_on: - benchmark_wordpress_build_baseline From d42be79a825671b6be4a30a3bf26b97abd7c16ee Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 13:55:32 +0200 Subject: [PATCH 030/116] fix: Fix envs --- bitrise.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 11fb64f2..73737fdd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2248,11 +2248,11 @@ step_bundles: - path: "./_tmp" benchmark-setup: inputs: - - REPO_URL: "" - - BRANCH: "" - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" + - REPO_URL: "$REPO_URL" + - BRANCH: "$BRANCH" + - USE_DD_CACHE: "$USE_DD_CACHE" + - USE_SPM: "$USE_SPM" + - USE_COMP_CACHE: "$USE_COMP_CACHE" - BENCHMARK_APP_NAME: "" steps: - activate-ssh-key: From 6a5fcc9e77562b388e7f2685e2098f3f349df4c0 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 13:59:19 +0200 Subject: [PATCH 031/116] fix: Fix envs --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 73737fdd..f565cc8d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2253,7 +2253,7 @@ step_bundles: - USE_DD_CACHE: "$USE_DD_CACHE" - USE_SPM: "$USE_SPM" - USE_COMP_CACHE: "$USE_COMP_CACHE" - - BENCHMARK_APP_NAME: "" + - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" steps: - activate-ssh-key: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' @@ -2316,9 +2316,9 @@ step_bundles: envman add --key "${BENCHMARK_APP_NAME}_START" --value "$(date +%s)" benchmark_finish: inputs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - BENCHMARK_APP_NAME: "" + - USE_DD_CACHE: "$USE_DD_CACHE" + - USE_SPM: "$USE_SPM" + - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" steps: - script: title: Store action end time From bc500be6acc3370a024f950aea865bec275d3240 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 14:18:15 +0200 Subject: [PATCH 032/116] fix: printenv --- bitrise.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index f565cc8d..b30f0c5a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -900,7 +900,9 @@ workflows: inputs: - content: |- #!/usr/bin/env bash - set -euo pipefail + set -exuo pipefail + + printenv variants=( "" From 6400687a2c1746e6043aaf4cebe84689ec53fb52 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 15:21:39 +0200 Subject: [PATCH 033/116] fix: app name --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index b30f0c5a..a5c5d49a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2306,7 +2306,7 @@ step_bundles: - verbose: true benchmark_start_measure: inputs: - - BENCHMARK_APP_NAME: "" + - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" steps: - script: title: Store action start time From 9c49ff97a602656e034e6563a582b1ce244eee5f Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 18 Sep 2025 15:22:12 +0200 Subject: [PATCH 034/116] fix: remove debug flag --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index a5c5d49a..01bf2320 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -900,7 +900,7 @@ workflows: inputs: - content: |- #!/usr/bin/env bash - set -exuo pipefail + set -euo pipefail printenv From 9b9d0d243f2e6e844082144f320111775a2e16b6 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 19 Sep 2025 12:49:54 +0200 Subject: [PATCH 035/116] feat: add VLC (#167) --- bitrise.yml | 224 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 157 insertions(+), 67 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 01bf2320..35783470 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1038,53 +1038,9 @@ workflows: Tuist Calendar IceCubesApp + VLC opts: is_expand: false - benchmark_wordpress_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - xcodebuild -resolvePackageDependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_tuist_build_baseline: envs: - USE_DD_CACHE: "false" @@ -1127,6 +1083,136 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + + gem install cocoapods + pod install + + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: VLC_CC + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + gem install cocoapods + pod install + + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc: envs: - USE_DD_CACHE: "false" @@ -2369,55 +2455,59 @@ pipelines: - branch: main benchmark: workflows: + benchmark_vlc_build_baseline: { } + benchmark_vlc_build_cc: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_build_cc_dd: {} - benchmark_wordpress_build_cc_spm: { } + # benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} benchmark_wordpress_analyze_baseline: { } benchmark_wordpress_analyze_cc: { } # benchmark_wordpress_analyze_cc_dd: {} - benchmark_wordpress_analyze_cc_spm: { } + # benchmark_wordpress_analyze_cc_spm: { } # benchmark_wordpress_analyze_cc_dd_spm: {} - benchmark_tuist_build_baseline: { } - benchmark_tuist_build_cc: { } + # benchmark_tuist_build_baseline: { } + # benchmark_tuist_build_cc: { } # benchmark_tuist_build_dd_cc: {} - benchmark_tuist_build_spm_cc: { } + # benchmark_tuist_build_spm_cc: { } # benchmark_tuist_build_dd_spm_cc: {} - benchmark_calendar_build_baseline: { } - benchmark_calendar_build_cc: { } + # benchmark_calendar_build_baseline: { } + # benchmark_calendar_build_cc: { } # benchmark_calendar_build_cc_dd: {} - benchmark_calendar_build_cc_spm: { } + # benchmark_calendar_build_cc_spm: { } # benchmark_calendar_build_cc_dd_spm: {} - benchmark_icecubesapp_build_baseline: { } - benchmark_icecubesapp_build_cc: { } + # benchmark_icecubesapp_build_baseline: { } + # benchmark_icecubesapp_build_cc: { } # benchmark_icecubesapp_build_cc_dd: {} - benchmark_icecubesapp_build_cc_spm: { } + # benchmark_icecubesapp_build_cc_spm: { } # benchmark_icecubesapp_build_cc_dd_spm: {} benchmark_results: depends_on: + - benchmark_vlc_build_baseline + - benchmark_vlc_build_cc - benchmark_wordpress_build_baseline - benchmark_wordpress_build_cc # - benchmark_wordpress_build_cc_dd - - benchmark_wordpress_build_cc_spm + # - benchmark_wordpress_build_cc_spm # - benchmark_wordpress_build_cc_dd_spm - benchmark_wordpress_analyze_baseline - benchmark_wordpress_analyze_cc # - benchmark_wordpress_analyze_cc_dd - - benchmark_wordpress_analyze_cc_spm + # - benchmark_wordpress_analyze_cc_spm # - benchmark_wordpress_analyze_cc_dd_spm - - benchmark_tuist_build_baseline - - benchmark_tuist_build_cc + # - benchmark_tuist_build_baseline + # - benchmark_tuist_build_cc # - benchmark_tuist_build_dd_cc - - benchmark_tuist_build_spm_cc + # - benchmark_tuist_build_spm_cc # - benchmark_tuist_build_dd_spm_cc - - benchmark_calendar_build_baseline - - benchmark_calendar_build_cc + # - benchmark_calendar_build_baseline + # - benchmark_calendar_build_cc # - benchmark_calendar_build_cc_dd - - benchmark_calendar_build_cc_spm + # - benchmark_calendar_build_cc_spm # - benchmark_calendar_build_cc_dd_spm - - benchmark_icecubesapp_build_baseline - - benchmark_icecubesapp_build_cc + # - benchmark_icecubesapp_build_baseline + # - benchmark_icecubesapp_build_cc # - benchmark_icecubesapp_build_cc_dd - - benchmark_icecubesapp_build_cc_spm + # - benchmark_icecubesapp_build_cc_spm # - benchmark_icecubesapp_build_cc_dd_spm From 2102c8da89aa8b4915a40e9ce7ecdd216c11fc5c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 13:52:55 +0200 Subject: [PATCH 036/116] feat: re-enable WP SPM --- bitrise.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 35783470..75a18ad0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2460,12 +2460,12 @@ pipelines: benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_build_cc_dd: {} - # benchmark_wordpress_build_cc_spm: { } + benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} benchmark_wordpress_analyze_baseline: { } benchmark_wordpress_analyze_cc: { } # benchmark_wordpress_analyze_cc_dd: {} - # benchmark_wordpress_analyze_cc_spm: { } + benchmark_wordpress_analyze_cc_spm: { } # benchmark_wordpress_analyze_cc_dd_spm: {} # benchmark_tuist_build_baseline: { } # benchmark_tuist_build_cc: { } @@ -2489,12 +2489,12 @@ pipelines: - benchmark_wordpress_build_baseline - benchmark_wordpress_build_cc # - benchmark_wordpress_build_cc_dd - # - benchmark_wordpress_build_cc_spm + - benchmark_wordpress_build_cc_spm # - benchmark_wordpress_build_cc_dd_spm - benchmark_wordpress_analyze_baseline - benchmark_wordpress_analyze_cc # - benchmark_wordpress_analyze_cc_dd - # - benchmark_wordpress_analyze_cc_spm + - benchmark_wordpress_analyze_cc_spm # - benchmark_wordpress_analyze_cc_dd_spm # - benchmark_tuist_build_baseline # - benchmark_tuist_build_cc From db886f30fe5650b59f2947fcb047c803226c3d76 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 14:23:56 +0200 Subject: [PATCH 037/116] feat: save files --- bitrise.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 75a18ad0..ac195e6c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2426,6 +2426,18 @@ step_bundles: - project_root_path: . - derived_data_path: $HOME/Library/Developer/Xcode/DerivedData - skip_spm: $USE_SPM + - script: + title: Save files + inputs: + - content: |- + echo "BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH path: $BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" + cp "$BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_result.txt" || echo "No xcodebuild result file found" + + echo "BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH path: $BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" + cp "$BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_simulator_log.txt" || echo "No xcodebuild simulator log file found" + + echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" + cp "$BITRISE_XCRESULT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.zip" || echo "No xcresult file found" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From e262094e58e2081386fc5594d2404f7603bbc6fd Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 14:42:50 +0200 Subject: [PATCH 038/116] fix: xcresult is a dir --- bitrise.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index ac195e6c..528105bf 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2430,6 +2430,9 @@ step_bundles: title: Save files inputs: - content: |- + #!/usr/bin/env bash + set -eo pipefail + echo "BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH path: $BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" cp "$BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_result.txt" || echo "No xcodebuild result file found" @@ -2437,7 +2440,7 @@ step_bundles: cp "$BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_simulator_log.txt" || echo "No xcodebuild simulator log file found" echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" - cp "$BITRISE_XCRESULT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.zip" || echo "No xcresult file found" + tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" $BITRISE_XCRESULT_PATH/* || echo "No xcresult files found" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From 686b92c9bb38d00ca832c3db479d624c631690e8 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 14:56:29 +0200 Subject: [PATCH 039/116] fix: relpath in tar --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 528105bf..e05ea17a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2440,7 +2440,7 @@ step_bundles: cp "$BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_simulator_log.txt" || echo "No xcodebuild simulator log file found" echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" - tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" $BITRISE_XCRESULT_PATH/* || echo "No xcresult files found" + tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcarchive.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From ca06da78505a54a94ce2872b41d1d72ac362e1e8 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 15:12:32 +0200 Subject: [PATCH 040/116] feat: Add timestamps to xcode logs --- internal/xcelerate/xcodeargs/runner.go | 60 +++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/internal/xcelerate/xcodeargs/runner.go b/internal/xcelerate/xcodeargs/runner.go index c7ba715e..c42f54fe 100644 --- a/internal/xcelerate/xcodeargs/runner.go +++ b/internal/xcelerate/xcodeargs/runner.go @@ -14,7 +14,11 @@ import ( "github.com/bitrise-io/go-utils/v2/log" + "bufio" + "github.com/bitrise-io/bitrise-build-cache-cli/internal/config/x "github.com/bitrise-io/bitrise-build-cache-cli/internal/config/xcelerate" + "bufio" + "sync" ) type RunStats struct { @@ -58,14 +62,15 @@ func (runner *DefaultRunner) Run(ctx context.Context, args []string) RunStats { runner.logger.TInfof("Running xcodebuild command: %s", strings.Join(append([]string{xcodePath}, args...), " ")) innerCmd := exec.CommandContext(ctx, xcodePath, args...) - innerCmd.Stdout = os.Stdout - innerCmd.Stderr = os.Stderr innerCmd.Stdin = os.Stdin + var wg sync.WaitGroup + runner.setupOutputPipes(ctx, innerCmd, &wg) interruptCtx, cancel := context.WithCancel(ctx) runner.handleInterrupt(interruptCtx, innerCmd) err := innerCmd.Run() + wg.Wait() cancel() duration := time.Since(runStats.StartTime) @@ -88,6 +93,31 @@ func (runner *DefaultRunner) Run(ctx context.Context, args []string) RunStats { return runStats } +func (runner *DefaultRunner) setupOutputPipes(ctx context.Context, cmd *exec.Cmd, wg *sync.WaitGroup) { + stdOutReader, err := cmd.StdoutPipe() + if err != nil { + runner.logger.Errorf("Failed to get stdout pipe: %v", err) + cmd.Stdout = os.Stdout + } else { + wg.Add(1) + go func() { + runner.streamOutput(ctx, stdOutReader, os.Stdout) + wg.Done() + }() + } + stdErrReader, err := cmd.StderrPipe() + if err != nil { + runner.logger.Errorf("Failed to get stderr pipe: %v", err) + cmd.Stderr = os.Stderr + } else { + wg.Add(1) + go func() { + runner.streamOutput(ctx, stdErrReader, os.Stderr) + wg.Done() + }() + } +} + func (runner *DefaultRunner) handleInterrupt(ctx context.Context, cmd *exec.Cmd) { sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) @@ -157,3 +187,29 @@ func (runner *DefaultRunner) determineXcodeVersionAndBuildNumber(ctx context.Con return nil } + +func (runner *DefaultRunner) streamOutput(ctx context.Context, reader io.ReadCloser, writer io.Writer) { + scanner := bufio.NewScanner(reader) + const maxTokenSize = 10 * 1024 * 1024 + buf := make([]byte, 0, 64*1024) + scanner.Buffer(buf, maxTokenSize) + for scanner.Scan() { + select { + case <-ctx.Done(): + return + default: + } + + line := scanner.Text() + + timestamp := time.Now().Format("15:04:05") + line = fmt.Sprintf("[%s] %s", timestamp, line) + + //nolint: errcheck + fmt.Fprintf(writer, "%s\n", line) + } + + if err := scanner.Err(); err != nil { + runner.logger.Errorf("Failed to scan stdout: %v", err) + } +} From 421bc09202e4ef2525cc3aca61a27c7949fde757 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 15:15:16 +0200 Subject: [PATCH 041/116] feat: Add timestamps to xcode logs --- internal/xcelerate/xcodeargs/runner.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/xcelerate/xcodeargs/runner.go b/internal/xcelerate/xcodeargs/runner.go index c42f54fe..0982b885 100644 --- a/internal/xcelerate/xcodeargs/runner.go +++ b/internal/xcelerate/xcodeargs/runner.go @@ -1,24 +1,23 @@ package xcodeargs import ( + "bufio" "context" "errors" "fmt" + "io" "os" "os/exec" "os/signal" "regexp" "strings" + "sync" "syscall" "time" "github.com/bitrise-io/go-utils/v2/log" - "bufio" - "github.com/bitrise-io/bitrise-build-cache-cli/internal/config/x "github.com/bitrise-io/bitrise-build-cache-cli/internal/config/xcelerate" - "bufio" - "sync" ) type RunStats struct { From d89e8b7aa6ad524d251c63b03072b14f2d7ed81c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 15:15:59 +0200 Subject: [PATCH 042/116] fix: xcresult --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index e05ea17a..a356b4bb 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2440,7 +2440,7 @@ step_bundles: cp "$BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_simulator_log.txt" || echo "No xcodebuild simulator log file found" echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" - tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcarchive.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" + tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From 5da1515d580307e7117467ccd8a4b6d8db2f5a33 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 24 Sep 2025 15:21:25 +0200 Subject: [PATCH 043/116] fix: remove debug --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index a356b4bb..12fa96f8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2369,7 +2369,7 @@ step_bundles: #!/usr/bin/env bash set -eo pipefail - ./bitrise-build-cache-cli -d activate xcode --cache + ./bitrise-build-cache-cli activate xcode --cache - script: title: Git clone benchmark app inputs: From 9bc916d1739a98a7a71d2a7edcddefcebcafae5b Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 25 Sep 2025 09:42:30 +0200 Subject: [PATCH 044/116] feat: Benchmark SPM only --- bitrise.yml | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 12fa96f8..9ba9fcea 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -906,6 +906,7 @@ workflows: variants=( "" + "_SPM" "_CC" "_DD_CC" "_CC_DD" @@ -1168,6 +1169,48 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + gem install cocoapods + pod install + + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_baseline: envs: - USE_DD_CACHE: "false" @@ -1213,6 +1256,51 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc: envs: - USE_DD_CACHE: "false" @@ -1438,6 +1526,51 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_analyze_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-analyze: + inputs: + - workdir: . + - project_path: WordPress.xcworkspace + - scheme: WordPress + - cache_level: none + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_analyze_cc: envs: - USE_DD_CACHE: "false" @@ -2471,13 +2604,16 @@ pipelines: benchmark: workflows: benchmark_vlc_build_baseline: { } + benchmark_vlc_build_spm: { } benchmark_vlc_build_cc: { } benchmark_wordpress_build_baseline: { } + benchmark_wordpress_build_spm: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_build_cc_dd: {} benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} benchmark_wordpress_analyze_baseline: { } + benchmark_wordpress_analyze_spm: { } benchmark_wordpress_analyze_cc: { } # benchmark_wordpress_analyze_cc_dd: {} benchmark_wordpress_analyze_cc_spm: { } @@ -2500,14 +2636,17 @@ pipelines: benchmark_results: depends_on: - benchmark_vlc_build_baseline + - benchmark_vlc_build_spm - benchmark_vlc_build_cc - benchmark_wordpress_build_baseline + - benchmark_wordpress_build_spm - benchmark_wordpress_build_cc # - benchmark_wordpress_build_cc_dd - benchmark_wordpress_build_cc_spm # - benchmark_wordpress_build_cc_dd_spm - benchmark_wordpress_analyze_baseline - benchmark_wordpress_analyze_cc + - benchmark_wordpress_analyze_spm # - benchmark_wordpress_analyze_cc_dd - benchmark_wordpress_analyze_cc_spm # - benchmark_wordpress_analyze_cc_dd_spm From ade18553614662d8d96d0aa8e3bac20aa375c3cb Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 25 Sep 2025 10:25:25 +0200 Subject: [PATCH 045/116] feat: enable SWIFT_USE_INTEGRATED_DRIVER --- internal/xcelerate/xcodeargs/args.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/xcelerate/xcodeargs/args.go b/internal/xcelerate/xcodeargs/args.go index e3334789..a5c555f8 100644 --- a/internal/xcelerate/xcodeargs/args.go +++ b/internal/xcelerate/xcodeargs/args.go @@ -23,6 +23,7 @@ var CacheArgs = map[string]string{ "COMPILATION_CACHE_ENABLE_DETACHED_KEY_QUERIES": "YES", "SWIFT_ENABLE_COMPILE_CACHE": "YES", "SWIFT_ENABLE_EXPLICIT_MODULES": "YES", + "SWIFT_USE_INTEGRATED_DRIVER": "YES", "CLANG_ENABLE_COMPILE_CACHE": "YES", "CLANG_ENABLE_MODULES": "YES", } From 84d9f7ade06fe088b75efd1f942468a376fcc571 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 25 Sep 2025 11:58:03 +0200 Subject: [PATCH 046/116] fix: remove printenv --- bitrise.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 9ba9fcea..b3e9c11d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -901,8 +901,6 @@ workflows: - content: |- #!/usr/bin/env bash set -euo pipefail - - printenv variants=( "" From e3f0ae93b9bb7aed3d9099fd4a001682b60efed9 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 25 Sep 2025 16:45:41 +0200 Subject: [PATCH 047/116] feat: Add random commit --- bitrise.yml | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index b3e9c11d..262387c6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1034,6 +1034,7 @@ workflows: - APPS: |- WordPress WordPress_Analyze + WordPress_Random Tuist Calendar IceCubesApp @@ -1254,6 +1255,116 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_random_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Random + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Random checkout + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + # pick a random commit from the last 30 commits (or fewer if repo has fewer) + commit=$(git rev-list --max-count=30 HEAD | shuf -n1) + git checkout "$commit" + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_random_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Random_CC + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Random checkout + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + # pick a random commit from the last 30 commits (or fewer if repo has fewer) + commit=$(git rev-list --max-count=30 HEAD | shuf -n1) + git checkout "$commit" + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + xcodebuild -resolvePackageDependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_spm: envs: - USE_DD_CACHE: "false" @@ -2508,7 +2619,7 @@ step_bundles: #!/usr/bin/env bash set -eo pipefail - git clone --depth 1 $REPO_URL -b $BRANCH ./_benchmark/$BENCHMARK_APP_NAME + git clone --depth 30 $REPO_URL -b $BRANCH ./_benchmark/$BENCHMARK_APP_NAME - change-workdir: title: Switch working dir to _benchmark inputs: @@ -2607,6 +2718,8 @@ pipelines: benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } benchmark_wordpress_build_cc: { } + benchmark_wordpress_random_build_cc: { } + benchmark_wordpress_random_build_baseline: { } # benchmark_wordpress_build_cc_dd: {} benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} @@ -2639,6 +2752,8 @@ pipelines: - benchmark_wordpress_build_baseline - benchmark_wordpress_build_spm - benchmark_wordpress_build_cc + - benchmark_wordpress_random_build_cc + - benchmark_wordpress_random_build_baseline # - benchmark_wordpress_build_cc_dd - benchmark_wordpress_build_cc_spm # - benchmark_wordpress_build_cc_dd_spm From 610ea17a3fe5b536ced7eae2f46d3babbe10b223 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 25 Sep 2025 16:58:37 +0200 Subject: [PATCH 048/116] fix: seed random --- bitrise.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 262387c6..aa64c39b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1280,9 +1280,14 @@ workflows: - content: |- #!/bin/bash set -exo pipefail + + # produce a numeric seed from the slug (sha1 -> hex -> decimal bytes) + seed_hex=$(printf '%s' "$BITRISE_BUILD_SLUG" | sha1sum | awk '{print $1}') + # turn hex into raw bytes for --random-source + seed_bytes=$(printf '%s' "$seed_hex" | xxd -r -p) - # pick a random commit from the last 30 commits (or fewer if repo has fewer) - commit=$(git rev-list --max-count=30 HEAD | shuf -n1) + # pick a commit deterministically + commit=$(git rev-list --max-count=30 HEAD | shuf -n1 --random-source=<(printf '%s' "$seed_bytes")) git checkout "$commit" - script: title: Install dependencies From a1226bbc15c769782d5a46643c180e5f8acf6846 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 26 Sep 2025 10:09:37 +0200 Subject: [PATCH 049/116] fix: remove -resolvePackageDependencies --- bitrise.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index aa64c39b..6819ebe5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1111,7 +1111,6 @@ workflows: gem install cocoapods pod install - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1300,7 +1299,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1355,7 +1353,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1400,7 +1397,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1445,7 +1441,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1490,7 +1485,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1535,7 +1529,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1580,7 +1573,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1625,7 +1617,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1670,7 +1661,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1715,7 +1705,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1760,7 +1749,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1805,7 +1793,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1850,7 +1837,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 48c80680b1b1ebf6187fd818fe9e00bc93d791dd Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 11:55:05 +0200 Subject: [PATCH 050/116] fix: Remove -resolvePackageDependencies --- bitrise.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 6819ebe5..1fb375bf 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1151,8 +1151,6 @@ workflows: set -exo pipefail gem install cocoapods pod install - - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1193,8 +1191,6 @@ workflows: set -exo pipefail gem install cocoapods pod install - - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1239,7 +1235,6 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - xcodebuild -resolvePackageDependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From faef48788c1fd1cb7f0a167d4a2390ec2bc26470 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 14:41:02 +0200 Subject: [PATCH 051/116] feat: copy xcbuilddata --- bitrise.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 1fb375bf..1f8f048d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2669,6 +2669,8 @@ step_bundles: echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" + + find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcbuilddata' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From 19598ee6ca3a6b58d6455801adb36b8b6c7d5016 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 15:29:07 +0200 Subject: [PATCH 052/116] feat: tree DD --- bitrise.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bitrise.yml b/bitrise.yml index 1f8f048d..998780fd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2671,6 +2671,7 @@ step_bundles: tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcbuilddata' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; + tree -L 2 $HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From be5b947d915a71acbac4cb72d3d7975b3d26216a Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 16:47:37 +0200 Subject: [PATCH 053/116] fix: quote --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 998780fd..a818961a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2671,7 +2671,7 @@ step_bundles: tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcbuilddata' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; - tree -L 2 $HOME/Library/Developer/Xcode/DerivedData" + tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise inputs: From 538f2200e01ffe8f60c37d8162f2b9b3b435b7fe Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 16:57:38 +0200 Subject: [PATCH 054/116] feat: print build folder --- bitrise.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index a818961a..c771008b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2659,7 +2659,7 @@ step_bundles: inputs: - content: |- #!/usr/bin/env bash - set -eo pipefail + set -euxo pipefail echo "BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH path: $BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" cp "$BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_result.txt" || echo "No xcodebuild result file found" @@ -2671,6 +2671,7 @@ step_bundles: tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcbuilddata' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; + find "$HOME/Library/Developer/Xcode/DerivedData" -path '*/Build/Intermediates.noindex/*' -print tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise From 80f00a97342f1bfbc06f7fa3eb130d2ad061aa34 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 17:05:18 +0200 Subject: [PATCH 055/116] fix: +u --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index c771008b..96c9540f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2659,7 +2659,7 @@ step_bundles: inputs: - content: |- #!/usr/bin/env bash - set -euxo pipefail + set -exo pipefail echo "BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH path: $BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" cp "$BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_result.txt" || echo "No xcodebuild result file found" From 6f91321ff5258c1204a798fab701fd10e381ce6c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 17:15:32 +0200 Subject: [PATCH 056/116] fix: tar --- bitrise.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 96c9540f..59587fe6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2670,8 +2670,14 @@ step_bundles: echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" - find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcbuilddata' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; - find "$HOME/Library/Developer/Xcode/DerivedData" -path '*/Build/Intermediates.noindex/*' -print + find "$HOME/Library/Developer/Xcode/DerivedData" -type d -name '*.xcbuilddata' -exec sh -c ' + for dir do + name=$(basename "$dir") + dest="$BITRISE_DEPLOY_DIR/${name}.tar.gz" + echo "Creating $dest from $dir" + tar -C "$dir" -czf "$dest" . + done + ' _ {} + tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise From dc84a42d95871813dba8db8fe8495f77d50eb6b3 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Mon, 29 Sep 2025 18:51:43 +0200 Subject: [PATCH 057/116] feat: save xcactivitylog --- bitrise.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 59587fe6..4da3db11 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2678,6 +2678,16 @@ step_bundles: tar -C "$dir" -czf "$dest" . done ' _ {} + + + find "$HOME/Library/Developer/Xcode/DerivedData" -type d -name '*.xcactivitylog' -exec sh -c ' + for dir do + name=$(basename "$dir") + dest="$BITRISE_DEPLOY_DIR/${name}.tar.gz" + echo "Creating $dest from $dir" + tar -C "$dir" -czf "$dest" . + done + ' _ {} + + tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise From baecabf0abc0fbe126dc90a44b6ff2997bd1dedd Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 09:12:33 +0200 Subject: [PATCH 058/116] fix: xcactivitylog is a file --- bitrise.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 4da3db11..3657fea9 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2679,14 +2679,7 @@ step_bundles: done ' _ {} + - find "$HOME/Library/Developer/Xcode/DerivedData" -type d -name '*.xcactivitylog' -exec sh -c ' - for dir do - name=$(basename "$dir") - dest="$BITRISE_DEPLOY_DIR/${name}.tar.gz" - echo "Creating $dest from $dir" - tar -C "$dir" -czf "$dest" . - done - ' _ {} + + find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcactivitylog' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: From 2ae5122aa48ca6ae18395b7da2c7882e1ec7f168 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 10:13:56 +0200 Subject: [PATCH 059/116] feat: Set result bundle path --- bitrise.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 3657fea9..4ddd07ba 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1077,7 +1077,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1119,7 +1119,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1159,7 +1159,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1199,7 +1199,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC_SPM.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1243,7 +1243,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1302,7 +1302,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_Random.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1356,7 +1356,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_Random_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1400,7 +1400,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_SPM.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1444,7 +1444,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1488,7 +1488,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_DD.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1532,7 +1532,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_SPM.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1576,7 +1576,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_DD_SPM.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1882,7 +1882,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1924,7 +1924,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_DD_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1966,7 +1966,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_SPM_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2008,7 +2008,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_DD_SPM_CC.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE From a3030b2c786c84bc3b74a05017f2125ef4c3b6c6 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 10:15:20 +0200 Subject: [PATCH 060/116] feat: Set result bundle path --- bitrise.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 4ddd07ba..dd0135dc 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1077,7 +1077,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1119,7 +1119,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1159,7 +1159,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1199,7 +1199,7 @@ workflows: - project_path: VLC.xcworkspace - scheme: VLC-iOS - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/VLC_SPM.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1243,7 +1243,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1302,7 +1302,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_Random.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1356,7 +1356,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_Random_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1400,7 +1400,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_SPM.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1444,7 +1444,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1488,7 +1488,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_DD.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1532,7 +1532,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_SPM.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1576,7 +1576,7 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/WordPress_CC_DD_SPM.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1882,7 +1882,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1924,7 +1924,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_DD_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -1966,7 +1966,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_SPM_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2008,7 +2008,7 @@ workflows: - project_path: Tuist.xcworkspace - scheme: TuistApp - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/Tuist_DD_SPM_CC.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE From 043c950226ba4227ba6b2ee1aac2533f1e29d91a Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 13:48:41 +0200 Subject: [PATCH 061/116] feat: Explicit SPM --- bitrise.yml | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 3b57c299..b06148a2 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1336,6 +1336,50 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_spm_explicit: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Explicit_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO SWIFT_ENABLE_EXPLICIT_MODULES=YES -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_cc: envs: - USE_DD_CACHE: "false" @@ -2646,6 +2690,7 @@ pipelines: benchmark_vlc_build_cc: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } + benchmark_wordpress_build_spm_explicit: { } benchmark_wordpress_build_cc: { } benchmark_wordpress_random_build_cc: { } benchmark_wordpress_random_build_baseline: { } @@ -2680,6 +2725,7 @@ pipelines: - benchmark_vlc_build_cc - benchmark_wordpress_build_baseline - benchmark_wordpress_build_spm + - benchmark_wordpress_build_spm_explicit - benchmark_wordpress_build_cc - benchmark_wordpress_random_build_cc - benchmark_wordpress_random_build_baseline From ee02264a9923342f6c44ffb129c52c5d97e03342 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 13:59:36 +0200 Subject: [PATCH 062/116] feat: Calendar SPM --- bitrise.yml | 105 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 18 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index b06148a2..35630207 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2084,6 +2084,71 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_calendar_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_calendar_build_spm_explicit: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_Explicit_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: SWIFT_ENABLE_EXPLICIT_MODULES=YES + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc_spm: envs: - USE_DD_CACHE: "false" @@ -2692,26 +2757,28 @@ pipelines: benchmark_wordpress_build_spm: { } benchmark_wordpress_build_spm_explicit: { } benchmark_wordpress_build_cc: { } - benchmark_wordpress_random_build_cc: { } - benchmark_wordpress_random_build_baseline: { } + # benchmark_wordpress_random_build_cc: { } + # benchmark_wordpress_random_build_baseline: { } # benchmark_wordpress_build_cc_dd: {} benchmark_wordpress_build_cc_spm: { } # benchmark_wordpress_build_cc_dd_spm: {} - benchmark_wordpress_analyze_baseline: { } - benchmark_wordpress_analyze_spm: { } - benchmark_wordpress_analyze_cc: { } + # benchmark_wordpress_analyze_baseline: { } + # benchmark_wordpress_analyze_spm: { } + #benchmark_wordpress_analyze_cc: { } # benchmark_wordpress_analyze_cc_dd: {} - benchmark_wordpress_analyze_cc_spm: { } + # benchmark_wordpress_analyze_cc_spm: { } # benchmark_wordpress_analyze_cc_dd_spm: {} # benchmark_tuist_build_baseline: { } # benchmark_tuist_build_cc: { } # benchmark_tuist_build_dd_cc: {} # benchmark_tuist_build_spm_cc: { } # benchmark_tuist_build_dd_spm_cc: {} - # benchmark_calendar_build_baseline: { } - # benchmark_calendar_build_cc: { } + benchmark_calendar_build_baseline: { } + benchmark_calendar_build_spm: { } + benchmark_calendar_build_spm_explicit: { } + benchmark_calendar_build_cc: { } # benchmark_calendar_build_cc_dd: {} - # benchmark_calendar_build_cc_spm: { } + benchmark_calendar_build_cc_spm: { } # benchmark_calendar_build_cc_dd_spm: {} # benchmark_icecubesapp_build_baseline: { } # benchmark_icecubesapp_build_cc: { } @@ -2727,26 +2794,28 @@ pipelines: - benchmark_wordpress_build_spm - benchmark_wordpress_build_spm_explicit - benchmark_wordpress_build_cc - - benchmark_wordpress_random_build_cc - - benchmark_wordpress_random_build_baseline + #- benchmark_wordpress_random_build_cc + #- benchmark_wordpress_random_build_baseline # - benchmark_wordpress_build_cc_dd - benchmark_wordpress_build_cc_spm # - benchmark_wordpress_build_cc_dd_spm - - benchmark_wordpress_analyze_baseline - - benchmark_wordpress_analyze_cc - - benchmark_wordpress_analyze_spm + # - benchmark_wordpress_analyze_baseline + #- benchmark_wordpress_analyze_cc + # - benchmark_wordpress_analyze_spm # - benchmark_wordpress_analyze_cc_dd - - benchmark_wordpress_analyze_cc_spm + # - benchmark_wordpress_analyze_cc_spm # - benchmark_wordpress_analyze_cc_dd_spm # - benchmark_tuist_build_baseline # - benchmark_tuist_build_cc # - benchmark_tuist_build_dd_cc # - benchmark_tuist_build_spm_cc # - benchmark_tuist_build_dd_spm_cc - # - benchmark_calendar_build_baseline - # - benchmark_calendar_build_cc + - benchmark_calendar_build_baseline + - benchmark_calendar_build_spm + - benchmark_calendar_build_spm_explicit + - benchmark_calendar_build_cc # - benchmark_calendar_build_cc_dd - # - benchmark_calendar_build_cc_spm + - benchmark_calendar_build_cc_spm # - benchmark_calendar_build_cc_dd_spm # - benchmark_icecubesapp_build_baseline # - benchmark_icecubesapp_build_cc From 3f51fa29935000ee8a4e573fde32805c726f81ce Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 14:01:30 +0200 Subject: [PATCH 063/116] feat: Save Calendar bundle --- bitrise.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 35630207..884c0312 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2015,6 +2015,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2047,6 +2048,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2079,6 +2081,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2111,6 +2114,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2143,7 +2147,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug - - xcodebuild_options: SWIFT_ENABLE_EXPLICIT_MODULES=YES + - xcodebuild_options: SWIFT_ENABLE_EXPLICIT_MODULES=YES -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2176,6 +2180,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2208,6 +2213,7 @@ workflows: - project_path: Calendar.xcodeproj - scheme: Calendar - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE From 0829d1d3fdf1aa8d5bd05462fecd506f2d33bea4 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 15:11:00 +0200 Subject: [PATCH 064/116] feat: VLC CC SPM --- bitrise.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 884c0312..036b76a1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1095,6 +1095,46 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: VLC_CC_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + gem install cocoapods + pod install + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_vlc_build_spm: envs: - USE_DD_CACHE: "false" @@ -2759,6 +2799,7 @@ pipelines: benchmark_vlc_build_baseline: { } benchmark_vlc_build_spm: { } benchmark_vlc_build_cc: { } + benchmark_vlc_build_cc_spm: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } benchmark_wordpress_build_spm_explicit: { } @@ -2796,6 +2837,7 @@ pipelines: - benchmark_vlc_build_baseline - benchmark_vlc_build_spm - benchmark_vlc_build_cc + - benchmark_vlc_build_cc_spm - benchmark_wordpress_build_baseline - benchmark_wordpress_build_spm - benchmark_wordpress_build_spm_explicit From 0dbc4b8ad2ee635da3d079608f7da49e0a439e80 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 15:24:42 +0200 Subject: [PATCH 065/116] feat: 16.4 SPM test --- bitrise.yml | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 036b76a1..b24d36b1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1183,7 +1183,7 @@ workflows: - BENCHMARK_APP_NAME: WordPress meta: bitrise.io: - stack: osx-xcode-26.0.x-edge + stack: osx-xcode-26.0.x-edge # osx-xcode-16.4.x machine_type_id: g2.mac.large steps: - bundle::benchmark-setup: @@ -1219,6 +1219,50 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_baseline_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_16.4 + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_random_build_baseline: envs: - USE_DD_CACHE: "false" @@ -1376,6 +1420,50 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_spm_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_16.4_SPM + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_spm_explicit: envs: - USE_DD_CACHE: "false" @@ -2801,7 +2889,9 @@ pipelines: benchmark_vlc_build_cc: { } benchmark_vlc_build_cc_spm: { } benchmark_wordpress_build_baseline: { } + benchmark_wordpress_build_baseline_16_4: { } benchmark_wordpress_build_spm: { } + benchmark_wordpress_build_spm_16_4: { } benchmark_wordpress_build_spm_explicit: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_random_build_cc: { } From b17457ffc2f4beb7353dcb7a9a23b8b880148bc8 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Tue, 30 Sep 2025 15:52:39 +0200 Subject: [PATCH 066/116] fix: Remove 16.4 --- bitrise.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index b24d36b1..0be0d845 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2889,9 +2889,7 @@ pipelines: benchmark_vlc_build_cc: { } benchmark_vlc_build_cc_spm: { } benchmark_wordpress_build_baseline: { } - benchmark_wordpress_build_baseline_16_4: { } benchmark_wordpress_build_spm: { } - benchmark_wordpress_build_spm_16_4: { } benchmark_wordpress_build_spm_explicit: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_random_build_cc: { } From 930287ab26b226ee4edacda8bde2078ed074306d Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 14:58:36 +0200 Subject: [PATCH 067/116] feat: add VLC & Calendar 16.4 --- bitrise.yml | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 0be0d845..8ac0af9e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1041,6 +1041,48 @@ workflows: gem install cocoapods pod install + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_baseline_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_16_4 + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + + gem install cocoapods + pod install + - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -1175,6 +1217,46 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_vlc_build_spm_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_SPM_16_4 + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + gem install cocoapods + pod install + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_baseline: envs: - USE_DD_CACHE: "false" @@ -2149,6 +2231,39 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_calendar_build_baseline_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_16_4 + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_cc: envs: - USE_DD_CACHE: "false" @@ -2248,6 +2363,39 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_calendar_build_spm_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_SPM_16_4 + meta: + bitrise.io: + stack: osx-xcode-16.4.x + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_spm_explicit: envs: - USE_DD_CACHE: "false" @@ -2885,7 +3033,9 @@ pipelines: benchmark: workflows: benchmark_vlc_build_baseline: { } + benchmark_vlc_build_baseline_16_4: { } benchmark_vlc_build_spm: { } + benchmark_vlc_build_spm_16_4: { } benchmark_vlc_build_cc: { } benchmark_vlc_build_cc_spm: { } benchmark_wordpress_build_baseline: { } @@ -2909,7 +3059,9 @@ pipelines: # benchmark_tuist_build_spm_cc: { } # benchmark_tuist_build_dd_spm_cc: {} benchmark_calendar_build_baseline: { } + benchmark_calendar_build_baseline_16_4: { } benchmark_calendar_build_spm: { } + benchmark_calendar_build_spm_16_4: { } benchmark_calendar_build_spm_explicit: { } benchmark_calendar_build_cc: { } # benchmark_calendar_build_cc_dd: {} @@ -2923,7 +3075,9 @@ pipelines: benchmark_results: depends_on: - benchmark_vlc_build_baseline + - benchmark_vlc_build_baseline_16_4 - benchmark_vlc_build_spm + - benchmark_vlc_build_spm_16_4 - benchmark_vlc_build_cc - benchmark_vlc_build_cc_spm - benchmark_wordpress_build_baseline @@ -2947,7 +3101,9 @@ pipelines: # - benchmark_tuist_build_spm_cc # - benchmark_tuist_build_dd_spm_cc - benchmark_calendar_build_baseline + - benchmark_calendar_build_baseline_16_4 - benchmark_calendar_build_spm + - benchmark_calendar_build_spm_16_4 - benchmark_calendar_build_spm_explicit - benchmark_calendar_build_cc # - benchmark_calendar_build_cc_dd From b61f98eea61cd24c66cfc38f5f3bec0bac614862 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 15:46:06 +0200 Subject: [PATCH 068/116] fix: Remove version from SPM --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 8ac0af9e..ed322c2e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2935,7 +2935,7 @@ step_bundles: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: - project_root_path: . - - restore-spm-cache@2.1.1: + - restore-spm-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true @@ -2965,7 +2965,7 @@ step_bundles: set -eo pipefail envman add --key "${BENCHMARK_APP_NAME}_END" --value "$(date +%s)" - - save-spm-cache@1.3.1: + - save-spm-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true From b9d7736bc4c45c3ce48ee8c69d54ee65269d0a89 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 16:34:25 +0200 Subject: [PATCH 069/116] chore: remove VLC --- bitrise.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index ed322c2e..173b57af 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3032,12 +3032,12 @@ pipelines: - branch: main benchmark: workflows: - benchmark_vlc_build_baseline: { } - benchmark_vlc_build_baseline_16_4: { } - benchmark_vlc_build_spm: { } - benchmark_vlc_build_spm_16_4: { } - benchmark_vlc_build_cc: { } - benchmark_vlc_build_cc_spm: { } +# benchmark_vlc_build_baseline: { } +# benchmark_vlc_build_baseline_16_4: { } +# benchmark_vlc_build_spm: { } +# benchmark_vlc_build_spm_16_4: { } +# benchmark_vlc_build_cc: { } +# benchmark_vlc_build_cc_spm: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } benchmark_wordpress_build_spm_explicit: { } @@ -3074,12 +3074,12 @@ pipelines: # benchmark_icecubesapp_build_cc_dd_spm: {} benchmark_results: depends_on: - - benchmark_vlc_build_baseline - - benchmark_vlc_build_baseline_16_4 - - benchmark_vlc_build_spm - - benchmark_vlc_build_spm_16_4 - - benchmark_vlc_build_cc - - benchmark_vlc_build_cc_spm +# - benchmark_vlc_build_baseline +# - benchmark_vlc_build_baseline_16_4 +# - benchmark_vlc_build_spm +# - benchmark_vlc_build_spm_16_4 +# - benchmark_vlc_build_cc +# - benchmark_vlc_build_cc_spm - benchmark_wordpress_build_baseline - benchmark_wordpress_build_spm - benchmark_wordpress_build_spm_explicit From dde80003dcf7bd30299239f20494b5edd7054fcc Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 16:39:17 +0200 Subject: [PATCH 070/116] feat: Build sample --- bitrise.yml | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 173b57af..76ed0bca 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2198,6 +2198,114 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_sample_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + inputs: + - workdir: sample-swiftpm4 + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_sample_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp_SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + inputs: + - workdir: sample-swiftpm4 + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_sample_build_spm_explicit: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp_SPM_Explicit + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + inputs: + - workdir: sample-swiftpm4 + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" -SWIFT_ENABLE_EXPLICIT_MODULES=YES + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_calendar_build_baseline: envs: - USE_DD_CACHE: "false" @@ -3038,6 +3146,9 @@ pipelines: # benchmark_vlc_build_spm_16_4: { } # benchmark_vlc_build_cc: { } # benchmark_vlc_build_cc_spm: { } + benchmark_sample_build_baseline: { } + benchmark_sample_build_spm: { } + benchmark_sample_build_spm_explicit: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } benchmark_wordpress_build_spm_explicit: { } From 1b16fd4af40a1abdd136f421c24973a04edf22a9 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 16:42:59 +0200 Subject: [PATCH 071/116] feat: Build sample --- bitrise.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 76ed0bca..60c072d6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2218,8 +2218,9 @@ workflows: - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - change-workdir: + title: Switch working dir to _tmp inputs: - - workdir: sample-swiftpm4 + - path: "./sample-swiftpm4" - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -2254,8 +2255,9 @@ workflows: - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - change-workdir: + title: Switch working dir to _tmp inputs: - - workdir: sample-swiftpm4 + - path: "./sample-swiftpm4" - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -2290,8 +2292,9 @@ workflows: - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - change-workdir: + title: Switch working dir to _tmp inputs: - - workdir: sample-swiftpm4 + - path: "./sample-swiftpm4" - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 59738396068e90ab6d74c1fb59475f622fad8786 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 17:03:51 +0200 Subject: [PATCH 072/116] fix: Dont use fallback key --- bitrise.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 60c072d6..032ac820 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3046,10 +3046,11 @@ step_bundles: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: - project_root_path: . - - restore-spm-cache: + - restore-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv BENCHMARK_APP_NAME }}-{{ checksum "**/Package.resolved" }}' benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" @@ -3076,10 +3077,13 @@ step_bundles: set -eo pipefail envman add --key "${BENCHMARK_APP_NAME}_END" --value "$(date +%s)" - - save-spm-cache: + - save-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv BENCHMARK_APP_NAME }}-{{ checksum "**/Package.resolved" }}' + - paths: | + ~/Library/Developer/Xcode/DerivedData/SourcePackages/** - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: From 389b3f45e643006ce5fac9bd24eee838db055f7c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 17:05:25 +0200 Subject: [PATCH 073/116] fix: Dont use fallback key --- bitrise.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 032ac820..d34532c5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3050,7 +3050,7 @@ step_bundles: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true - - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv BENCHMARK_APP_NAME }}-{{ checksum "**/Package.resolved" }}' + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" @@ -3081,7 +3081,7 @@ step_bundles: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - verbose: true - - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv BENCHMARK_APP_NAME }}-{{ checksum "**/Package.resolved" }}' + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' - paths: | ~/Library/Developer/Xcode/DerivedData/SourcePackages/** - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: From 35655917ae736262a12a22a40f6744f9c15e859d Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 17:08:08 +0200 Subject: [PATCH 074/116] fix: Dont use fallback key --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index d34532c5..16ec8953 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3083,7 +3083,7 @@ step_bundles: - verbose: true - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' - paths: | - ~/Library/Developer/Xcode/DerivedData/SourcePackages/** + ~/Library/Developer/Xcode/DerivedData/**/SourcePackages - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: From fb424bb6d09ae422e53753a74b5834ab2f453b75 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Wed, 1 Oct 2025 18:00:01 +0200 Subject: [PATCH 075/116] fix: fix path --- bitrise.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 16ec8953..926e0c89 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -3082,8 +3082,7 @@ step_bundles: inputs: - verbose: true - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' - - paths: | - ~/Library/Developer/Xcode/DerivedData/**/SourcePackages + - paths: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: From c75ba389ec22b30eac619e1275d6a53dc61ff777 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 2 Oct 2025 16:29:40 +0200 Subject: [PATCH 076/116] feat: Run wf for invalid SPM --- bitrise.yml | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 926e0c89..9de9322a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1502,6 +1502,87 @@ workflows: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + benchmark_wordpress_build_spm_invalidpackage: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_SPM # Intentionally the same to restore the same SPM + meta: + bitrise.io: + stack: osx-xcode-26.0.x-edge + machine_type_id: g2.mac.large + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Remove alamofire to make SPM invalid + inputs: + - content: |- + #!/usr/bin/env bash + set -euo pipefail + + pushd Modules + # Name to remove (case-insensitive) + PKG_NAME="alamofire" + + # Backup originals + cp Package.swift Package.swift.bak + cp Package.resolved Package.resolved.bak + + # Remove line from Package.swift (works if deps are one per line) + # Use bracket-case pattern to ensure portability across sed versions + sed -i.bak2 "/[Aa][Ll][Aa][Mm][Oo][Ff][Ii][Rr][Ee]/d" Package.swift + # remove the extra .bak2 created by sed on some platforms + [ -f Package.swift.bak2 ] && rm -f Package.swift.bak2 + + # Remove pin from Package.resolved using jq + jq --arg name "$(echo "$PKG_NAME" | tr '[:upper:]' '[:lower:]')" \ + '(.object.pins) |= map(select( (.identity | ascii_downcase) != $name))' \ + Package.resolved > Package.resolved.tmp + + mv Package.resolved Package.resolved.pre-removal + mv Package.resolved.tmp Package.resolved + + echo "Removed package '$PKG_NAME' (case-insensitive). Backups: Package.swift.bak, Package.resolved.pre-removal" + + head -n 20 Package.swift + head -n 20 Package.resolved + grep -i "$PKG_NAME" Package.swift || echo "Removed successfully from Package.swift" + grep -i "$PKG_NAME" Package.resolved || echo "Removed successfully from Package.resolved" + + popd + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: WordPress.xcworkspace + - scheme: WordPress + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: false + - USE_SPM: false # disable save + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME benchmark_wordpress_build_spm_16_4: envs: - USE_DD_CACHE: "false" @@ -3157,6 +3238,7 @@ pipelines: benchmark_sample_build_spm_explicit: { } benchmark_wordpress_build_baseline: { } benchmark_wordpress_build_spm: { } + benchmark_wordpress_build_spm_invalidpackage: { } benchmark_wordpress_build_spm_explicit: { } benchmark_wordpress_build_cc: { } # benchmark_wordpress_random_build_cc: { } From c3bee2d2f2f0566cb66a9737d8fd2fa76b91e909 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 2 Oct 2025 16:36:09 +0200 Subject: [PATCH 077/116] feat: Run wf for invalid SPM --- bitrise.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 9de9322a..58fe79d9 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1543,9 +1543,8 @@ workflows: [ -f Package.swift.bak2 ] && rm -f Package.swift.bak2 # Remove pin from Package.resolved using jq - jq --arg name "$(echo "$PKG_NAME" | tr '[:upper:]' '[:lower:]')" \ - '(.object.pins) |= map(select( (.identity | ascii_downcase) != $name))' \ - Package.resolved > Package.resolved.tmp + jq --arg name "$PKG_NAME" '(.pins) |= map(select((.identity // "" | ascii_downcase) != $name))' \ + Package.resolved > Package.resolved.tmp && mv Package.resolved.tmp Package.resolved mv Package.resolved Package.resolved.pre-removal mv Package.resolved.tmp Package.resolved From 147971ef0ae9adfa7412298d6ad465c65ece099a Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 2 Oct 2025 16:41:32 +0200 Subject: [PATCH 078/116] feat: Run wf for invalid SPM --- bitrise.yml | 119 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 97 insertions(+), 22 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 58fe79d9..3eeafcdb 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1528,35 +1528,110 @@ workflows: #!/usr/bin/env bash set -euo pipefail - pushd Modules + # Directory containing Package.swift and Package.resolved + TARGET_DIR="Modules" + # Name to remove (case-insensitive) PKG_NAME="alamofire" - # Backup originals - cp Package.swift Package.swift.bak - cp Package.resolved Package.resolved.bak + # Files (within TARGET_DIR) + PKG_SWIFT="Package.swift" + PKG_RESOLVED="Package.resolved" - # Remove line from Package.swift (works if deps are one per line) - # Use bracket-case pattern to ensure portability across sed versions - sed -i.bak2 "/[Aa][Ll][Aa][Mm][Oo][Ff][Ii][Rr][Ee]/d" Package.swift - # remove the extra .bak2 created by sed on some platforms - [ -f Package.swift.bak2 ] && rm -f Package.swift.bak2 + # Check target dir exists + if [ ! -d "$TARGET_DIR" ]; then + echo "Error: target directory '$TARGET_DIR' not found in $(pwd)" >&2 + exit 1 + fi - # Remove pin from Package.resolved using jq - jq --arg name "$PKG_NAME" '(.pins) |= map(select((.identity // "" | ascii_downcase) != $name))' \ - Package.resolved > Package.resolved.tmp && mv Package.resolved.tmp Package.resolved + # Enter target dir + pushd "$TARGET_DIR" >/dev/null - mv Package.resolved Package.resolved.pre-removal - mv Package.resolved.tmp Package.resolved + # Ensure files exist + if [ ! -f "$PKG_SWIFT" ]; then + echo "Error: $PKG_SWIFT not found in $(pwd)" >&2 + popd >/dev/null + exit 1 + fi + if [ ! -f "$PKG_RESOLVED" ]; then + echo "Error: $PKG_RESOLVED not found in $(pwd)" >&2 + popd >/dev/null + exit 1 + fi - echo "Removed package '$PKG_NAME' (case-insensitive). Backups: Package.swift.bak, Package.resolved.pre-removal" - - head -n 20 Package.swift - head -n 20 Package.resolved - grep -i "$PKG_NAME" Package.swift || echo "Removed successfully from Package.swift" - grep -i "$PKG_NAME" Package.resolved || echo "Removed successfully from Package.resolved" - - popd + # Check jq available + if ! command -v jq >/dev/null 2>&1; then + echo "Error: jq is required but not found. Install with 'brew install jq' or your package manager." >&2 + popd >/dev/null + exit 1 + fi + + # Backups + ts=$(date +%Y%m%d%H%M%S) + cp "$PKG_SWIFT" "${PKG_SWIFT}.bak.${ts}" + cp "$PKG_RESOLVED" "${PKG_RESOLVED}.bak.${ts}" + echo "Backups created in $TARGET_DIR: ${PKG_SWIFT}.bak.${ts}, ${PKG_RESOLVED}.bak.${ts}" + + # Build bracketed case-insensitive pattern for sed + PATTERN="" + for c in $(echo "$PKG_NAME" | fold -w1); do + lc=$(echo "$c" | tr '[:upper:]' '[:lower:]') + uc=$(echo "$c" | tr '[:lower:]' '[:upper:]') + PATTERN="${PATTERN}[${uc}${lc}]" + done + + # Remove dependency line from Package.swift (single-line assumption) + # Use portable sed handling for GNU and BSD + if sed --version >/dev/null 2>&1; then + # GNU sed + sed -i.bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" + rm -f "${PKG_SWIFT}.bak_pkg_swift" + else + # BSD sed (macOS) + sed -i .bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" + rm -f "${PKG_SWIFT}.bak_pkg_swift" + fi + + echo "Removed lines matching '$PKG_NAME' from $PKG_SWIFT (if any)." + + # Remove pin from Package.resolved (newer Xcode format: top-level "pins") + PKG_LC=$(printf '%s' "$PKG_NAME" | tr '[:upper:]' '[:lower:]') + + jq --arg name "$PKG_LC" '(.pins) |= map(select((.identity // "" | ascii_downcase) != $name))' \ + "$PKG_RESOLVED" > "${PKG_RESOLVED}.tmp" + + # verify jq output is valid JSON before replacing + if jq empty "${PKG_RESOLVED}.tmp" >/dev/null 2>&1; then + mv "${PKG_RESOLVED}.tmp" "$PKG_RESOLVED" + echo "Updated $PKG_RESOLVED (removed pins with identity == '$PKG_NAME' case-insensitively)." + else + echo "Error: jq produced invalid JSON; leaving original $PKG_RESOLVED in place." >&2 + rm -f "${PKG_RESOLVED}.tmp" + popd >/dev/null + exit 1 + fi + + # Quick checks + echo + echo "Quick checks (in $TARGET_DIR):" + echo "- Validate Package.resolved JSON (first 200 lines):" + jq . "$PKG_RESOLVED" | sed -n '1,200p' + echo + echo "- Look for any remaining identities matching '$PKG_NAME' (case-insensitive):" + if jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" >/dev/null 2>&1; then + echo "Warning: found remaining matches in Package.resolved" + jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" || true + else + echo "No remaining matches for '$PKG_NAME' in Package.resolved" + fi + + # Return to original dir + popd >/dev/null + + echo + echo "Done. If anything looks wrong, restore backups located at:" + echo " ${TARGET_DIR}/${PKG_SWIFT}.bak.${ts}" + echo " ${TARGET_DIR}/${PKG_RESOLVED}.bak.${ts}" - script: title: Install dependencies inputs: From 07fa73f4114c09290d6176af9e68c8b9bd8cf0a1 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Thu, 2 Oct 2025 16:50:44 +0200 Subject: [PATCH 079/116] feat: save if failed too --- bitrise.yml | 4994 +++++++++++++++++++++++++-------------------------- 1 file changed, 2457 insertions(+), 2537 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 3eeafcdb..9f7f6480 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1,1760 +1,1404 @@ format_version: "13" default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: other -meta: - bitrise.io: - stack: linux-docker-android-22.04 - machine_type_id: g2.linux.medium - app: envs: - - PANDOC_VERSION: "3.6.2" - - MAVEN_VERSION: "3.9.9" - # These are needed for the E2E test assertion logic + - PANDOC_VERSION: 3.6.2 + - MAVEN_VERSION: 3.9.9 - WORKSPACE_SLUG: 322a005426441b60 - MONOLITH_API_PAT: $BITRISE_BUILD_CACHE_AUTH_TOKEN - TRIGGERED_BUILD_SLUG: $BITRISE_BUILD_SLUG - -workflows: - release: - description: Creates Linux and Darwin binaries, then publishes a GitHub release +meta: + bitrise.io: + machine_type_id: g2.linux.medium + stack: linux-docker-android-22.04 +pipelines: + benchmark: + workflows: + benchmark_calendar_build_baseline: {} + benchmark_calendar_build_baseline_16_4: {} + benchmark_calendar_build_cc: {} + benchmark_calendar_build_cc_spm: {} + benchmark_calendar_build_spm: {} + benchmark_calendar_build_spm_16_4: {} + benchmark_calendar_build_spm_explicit: {} + benchmark_results: + depends_on: + - benchmark_wordpress_build_baseline + - benchmark_wordpress_build_spm + - benchmark_wordpress_build_spm_explicit + - benchmark_wordpress_build_cc + - benchmark_wordpress_build_cc_spm + - benchmark_calendar_build_baseline + - benchmark_calendar_build_baseline_16_4 + - benchmark_calendar_build_spm + - benchmark_calendar_build_spm_16_4 + - benchmark_calendar_build_spm_explicit + - benchmark_calendar_build_cc + - benchmark_calendar_build_cc_spm + benchmark_sample_build_baseline: {} + benchmark_sample_build_spm: {} + benchmark_sample_build_spm_explicit: {} + benchmark_wordpress_build_baseline: {} + benchmark_wordpress_build_cc: {} + benchmark_wordpress_build_cc_spm: {} + benchmark_wordpress_build_spm: {} + benchmark_wordpress_build_spm_explicit: {} + benchmark_wordpress_build_spm_invalidpackage: {} + features-e2e: triggers: - tag: - - name: - regex: '^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' + push: + - branch: main + pull_request: + - source_branch: '*' + workflows: + e2e-xcode-comp-cache: {} + feature-e2e-bazel-bitrisedc-no-rbe: {} + feature-e2e-bazel-public-no-rbe: {} + feature-e2e-gradle-bitwarden: {} + feature-e2e-gradle-duckduck: {} + gradle-configuration-e2e-linux: {} + gradle-configuration-e2e-osx: {} + test: {} +workflows: + benchmark_calendar_build_baseline: envs: - - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: - inputs: - - fetch_tags: "yes" - - script@1: - title: asdf use latest go + - bundle::benchmark-setup: inputs: - - content: |- - #!/usr/bin/env bash - - asdf install golang 1.24.3 - asdf global golang 1.24.3 - - script: - title: Install Goreleaser + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: inputs: - - content: | - #!/usr/bin/env bash - set -ex - - GOBIN=/usr/local/bin/ go install github.com/goreleaser/goreleaser/v2@latest - - bundle::generate_gradle_verification_reference: { } - - bundle::check_gradle_verification_reference: { } - - script: - title: Goreleaser (create binaries + publish to GH) - deps: - brew: - - name: goreleaser + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: | - #!/usr/bin/env bash - set -ex - - goreleaser release - - script: - title: Authenticate to GCP + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - #!/bin/bash - set -euxo pipefail - KEY_FILE_PATH=$(mktemp -d)/keyfile.json - echo "${GAR_SERVICE_ACCOUNT_B64}" | base64 --decode > ${KEY_FILE_PATH} - gcloud auth activate-service-account --key-file=${KEY_FILE_PATH} - - script: - title: Upload release artifacts to GAR + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_baseline_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_16_4 + steps: + - bundle::benchmark-setup: inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - DIST_DIR="dist" - if [[ ! -d "$DIST_DIR" ]]; then - echo "Directory $DIST_DIR does not exist." - exit 1 - fi - tree -L 2 dist - - tag="${BITRISE_GIT_TAG#v}" # Remove the v from the tag - if [[ -z "$tag" ]]; then - echo "BITRISE_GIT_TAG is not set. Exiting." - exit 1 - fi - - echo "Uploading with tag: $tag" - - filenames=("bitrise-build-cache_${tag}_darwin_amd64.tar.gz" - "bitrise-build-cache_${tag}_linux_amd64.tar.gz" - "bitrise-build-cache_${tag}_darwin_arm64.tar.gz" - "bitrise-build-cache_${tag}_linux_arm64.tar.gz") - for filename in "${filenames[@]}"; do - if [[ ! -f "$DIST_DIR/$filename" ]]; then - echo "File $DIST_DIR/$filename does not exist." - exit 1 - fi - echo "Uploading $filename to GAR..." - - package_name="${filename/_${tag}/}" # Files will be versioned - - gcloud artifacts generic upload \ - --project=ip-build-cache-prod \ - --source="$DIST_DIR/$filename" \ - --package="$package_name" \ - --version="$tag" \ - --location=us-central1 \ - --repository=build-cache-cli-releases - done - - echo "Uploaded artifacts to GAR." - - deploy-to-bitrise-io@2: { } - - script: - title: Update step + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: inputs: - - content: | - #!/usr/bin/env bash - set -ex - - ./scripts/update_step.sh - - slack@4: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Build Cache for Gradle step update PR is ready! :tada: :rocket: :bitrise: - - Check PR here: $PR_URL - - emoji: ":gradle:" - - color: "#08a045" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if PR opened - run_if: '{{ getenv "PR_URL" | ne "" }}' - - slack@4: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - CLI release failed! :gopher_lift: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if failed - run_if: ".IsBuildFailed" + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge - test: + machine_type_id: g2.mac.large + stack: osx-xcode-16.4.x + benchmark_calendar_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: { } - - go-list@1: { } - - script@1: - title: golangci-lint + - bundle::benchmark-setup: inputs: - - content: |- - #!/bin/bash - set -ex - make lint - - go-test@1: { } - - bundle::generate_gradle_verification_reference: { } - - bundle::check_gradle_verification_reference: { } - - deploy-to-bitrise-io@2: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - deploy_path: "$GRADLE_VERIFICATION_REF_TARGET_PATH" + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge - - generate_gradle_verification: - steps: - - bundle::generate_gradle_verification_reference: { } - - generate_and_commit_dependency_matrix: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_cc_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_DD steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: - inputs: - - fetch_tags: "yes" - - shallow_clone: "false" - - clone_depth: "-1" - - bundle::generate_and_commit_dependency_matrix: { } - - slack@4: + - bundle::benchmark-setup: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Dependency matrix generation failed! :matrix-code: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if failed - run_if: ".IsBuildFailed" + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Calendar_CC_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_calendar_build_spm_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_SPM_16_4 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-16.4.x + benchmark_calendar_build_spm_explicit: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Calendar_Explicit_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:richardtop/CalendarApp.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Calendar.xcodeproj + - scheme: Calendar + - configuration: Debug + - xcodebuild_options: SWIFT_ENABLE_EXPLICIT_MODULES=YES -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_icecubesapp_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubesApp + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: platform=iOS Simulator,name=iPhone 17,OS=26.0 + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_icecubesapp_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: platform=iOS Simulator,name=iPhone 17,OS=26.0 + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_icecubesapp_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: platform=iOS Simulator,name=iPhone 17,OS=26.0 + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_icecubesapp_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: platform=iOS Simulator,name=iPhone 17,OS=26.0 + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_icecubesapp_build_dd: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: IceCubesApp_DD + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:Dimillian/IceCubesApp.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + inputs: + - content: |- + set -exo pipefail + cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: IceCubesApp.xcodeproj + - scheme: IceCubesApp + - configuration: Debug + - destination: platform=iOS Simulator,name=iPhone 17,OS=26.0 + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_results: + envs: + - APPS: |- + WordPress + WordPress_Analyze + WordPress_Random + Tuist + Calendar + IceCubesApp + VLC + opts: + is_expand: false + steps: + - script@1: + inputs: + - content: |- + #!/usr/bin/env bash + set -euo pipefail + + variants=( + "" + "_SPM" + "_CC" + "_DD_CC" + "_CC_DD" + "_SPM_CC" + "_CC_SPM" + "_DD_SPM_CC" + "_CC_DD_SPM" + ) + + pretty_diff() { + local secs=$1 + local sign="" + if (( secs < 0 )); then + sign="-" + secs=$(( -secs )) + fi + local minutes=$(( secs / 60 )) + local seconds=$(( secs % 60 )) + if (( minutes > 0 )); then + printf '%s%dm %ds\n' "$sign" "$minutes" "$seconds" + else + printf '%s%ds\n' "$sign" "$seconds" + fi + } + + # read APPS into an array + apps=() + while IFS= read -r line || [[ -n $line ]]; do + apps+=("$line") + done <<< "$APPS" + + # build all variants + app_variants=() + for base in "${apps[@]}"; do + app_variants+=("$base") + for v in "${variants[@]}"; do + [[ -z "$v" ]] && continue + app_variants+=("${base}${v}") + done + done + + # duration in seconds from START/END var names + duration_seconds() { + local start_name=$1 + local end_name=$2 + echo $(( ${!end_name} - ${!start_name} )) + } + + # percent change with one decimal using integer math: + # returns string like "+12.3%" or "-4.0%" or "0.0%" + percent_change_one_decimal() { + local base_secs=$1 + local var_secs=$2 + + if (( base_secs == 0 )); then + printf 'N/A' + return + fi + + local diff=$(( base_secs - var_secs )) # positive = improvement + local scaled=$(( (diff * 1000) / base_secs )) # tenths of percent (integer) + local sign="" + if (( scaled > 0 )); then + sign="+" + elif (( scaled < 0 )); then + sign="-" + scaled=$(( -scaled )) + fi + local int_part=$(( scaled / 10 )) + local frac=$(( scaled % 10 )) + printf '%s%d.%d%%' "$sign" "$int_part" "$frac" + } - update_plugins: + for app in "${app_variants[@]}"; do + start="${app}_START" + end="${app}_END" + # skip if missing + [[ -z "${!start-}" ]] && continue + [[ -z "${!end-}" ]] && continue + + dur=$(duration_seconds "$start" "$end") + printf 'Duration for %s: ' "$app" + pretty_diff "$dur" + + # determine base name (before first underscore) + base_name="$app" + if [[ "$app" == *"_"* ]]; then + base_name="${app%%_*}" + fi + + # skip comparison when this is the base itself + if [[ "$app" == "$base_name" ]]; then + # nothing to compare to + continue + fi + + base_start="${base_name}_START" + base_end="${base_name}_END" + + if [[ -z "${!base_start-}" || -z "${!base_end-}" ]]; then + printf ' Base (%s) missing START/END — cannot compute percent change.\n' "$base_name" + continue + fi + + base_dur=$(duration_seconds "$base_start" "$base_end") + pc=$(percent_change_one_decimal "$base_dur" "$dur") + + if [[ "$pc" == "N/A" ]]; then + printf ' Percent change vs %s: N/A (base duration is zero)\n' "$base_name" + continue + fi + + if [[ "$pc" == "+0.0%" || "$pc" == "0.0%" ]]; then + printf ' Percent change vs %s: 0.0%% (equal)\n' "$base_name" + else + if (( dur < base_dur )); then + label="improved" + elif (( dur > base_dur )); then + label="slower" + else + label="equal" + fi + printf ' Percent change vs %s: %s (%s)\n' "$base_name" "$pc" "$label" + fi + done + benchmark_sample_build_baseline: envs: - - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp steps: - - activate-ssh-key@4: - run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - git-clone@8: + - bundle::benchmark-setup: inputs: - - fetch_tags: "yes" - - shallow_clone: "false" - - clone_depth: "-1" - - apt-get-install: + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + title: Switch working dir to _tmp inputs: - - packages: libxml2-utils - - script: - title: Ensure we're on main + - path: ./sample-swiftpm4 + - bundle::benchmark_start_measure: inputs: - - content: | - #!/bin/bash - set -ex - - git fetch origin - if [[ "$BITRISE_GIT_BRANCH" != "main" ]]; then - git checkout main - git pull origin main - fi - - script: - title: Update plugins with latest version + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: | - bash ./scripts/update_plugins.sh - - bundle::generate_gradle_verification_reference: { } - - script: - title: Commit updated plugins and open PR + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: | - set -ex - - # Check for existing PR with the same title - existing_pr=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ - "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls?state=open" | jq -r ".[] | select(.title == \"chore: Update Gradle plugins\") | .html_url") - - if [ -n "$existing_pr" ]; then - echo "A pull request with this title already exists: $existing_pr" - exit 0 - fi - - if [ -n "$(git status --porcelain)" ]; then - git branch -D update-plugins || true - git checkout -b update-plugins - - git add . - git commit -m "feat: update plugins to release" - git push -f origin update-plugins - - # Create a pull request using GitHub API - pr_response=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ - -d "{\"title\":\"chore: Update Gradle plugins\",\"body\":\"This PR updates the Gradle plugins.\",\"head\":\"update-plugins\",\"base\":\"main\"}" \ - "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls") - - pr_url=$(echo "$pr_response" | jq -r .html_url) - envman add --key PR_URL --value "$pr_url" - - if [ "$pr_url" != "null" ]; then - echo "Pull request created successfully: $pr_url" - else - echo "Failed to create pull request. Response: $pr_response" - exit 1 - fi - else - echo "No changes detected, skipping commit." - exit 0 - fi - - slack@4: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_sample_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp_SPM + steps: + - bundle::benchmark-setup: inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - Gradle plugin update PR is ready! :tada: :rocket: :gradle: - - Check PR here: $PR_URL - - emoji: ":gradle:" - - color: "#08a045" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if PR opened - run_if: '{{ getenv "PR_URL" | ne "" }}' - - slack@4: + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + title: Switch working dir to _tmp inputs: - - channel: "#team-advanced-ci-alerts-website" - - text: |- - CLI plugin update failed! :gradle: :gopher_lift: :rotating_light: - - Check build here: $BITRISE_BUILD_URL - - emoji: ":rotating_light:" - - color: "#ee003b" - - webhook_url: "$SLACK_WEBHOOK_ALERTS" - title: Send slack if failed - run_if: ".IsBuildFailed" - - feature-e2e-gradle-duckduck: + - path: ./sample-swiftpm4 + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_sample_build_spm_explicit: envs: - - TEST_APP_URL: git@github.com:duckduckgo/Android.git - - BRANCH: develop + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: SampleApp_SPM_Explicit steps: - - bundle::feature-e2e-setup: { } - - apt-get-install: - inputs: - - packages: 'bc' - - upgrade: "no" - - script: - title: Enable build cache + - bundle::benchmark-setup: inputs: - - content: |- - set -exo pipefail - ../bitrise-build-cache-cli activate gradle -d --cache - - script: - title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts + - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - change-workdir: + title: Switch working dir to _tmp inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - - script: - title: Build and capture logs + - path: ./sample-swiftpm4 + - bundle::benchmark_start_measure: inputs: - - content: |- - set -exo pipefail - (./gradlew debug --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" - - script: - title: Check for cache invocations + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ - '\[Bitrise Build Cache\].*Request metadata invocationId' \ - '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_gradle "$BITRISE_DEPLOY_DIR/logs.txt") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API + - project_path: sample-swiftpm2.xcodeproj + - scheme: sample-swiftpm2 + - configuration: Debug + - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + -SWIFT_ENABLE_EXPLICIT_MODULES=YES + - bundle::benchmark_finish: inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" - assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" - assert_invocation_tasks_gradle "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" - - deploy-to-bitrise-io@2: { } - - feature-e2e-gradle-bitwarden: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_tuist_build_baseline: envs: - - TEST_APP_URL: git@github.com:bitwarden/android.git - - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: Tuist steps: - - bundle::feature-e2e-setup: { } - - apt-get-install: + - bundle::benchmark-setup: inputs: - - packages: 'bc' - - upgrade: "no" + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Enable build cache + title: Generate workspace inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli activate gradle -d --cache - - script: - title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts + tuist install + tuist generate + - bundle::benchmark_start_measure: inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - - script: - title: Create local configuration cache + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - ./gradlew debug --configuration-cache --dry-run --info --stacktrace - - script: - title: Save configuration cache + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - set -exo pipefail - ../bitrise-build-cache-cli save-gradle-configuration-cache \ - --config-cache-dir "$PWD/.gradle/configuration-cache" \ - --key "cli-bitwarden-test" - - script: - title: Delete local configuration cache + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_tuist_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_CC + steps: + - bundle::benchmark-setup: inputs: - - content: |- - set -exo pipefail - rm -rf .gradle/configuration-cache + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Restore configuration cache + title: Generate workspace inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli restore-gradle-configuration-cache \ - --key "cli-bitwarden-test" - - script: - title: Build and capture logs + tuist install + tuist generate + - bundle::benchmark_start_measure: inputs: - - content: |- - set -exo pipefail - (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" - - script: - title: Check for cache invocations + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - 'Reusing configuration cache.' \ - '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ - '\[Bitrise Build Cache\].*Request metadata invocationId' \ - '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_gradle "$BITRISE_DEPLOY_DIR/logs.txt") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" - assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" - assert_invocation_tasks_gradle "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" - - deploy-to-bitrise-io@2: { } - feature-e2e-bazel-bitrisedc-no-rbe: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: linux-docker-android-22.04 - machine_type_id: g2.linux.medium + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_tuist_build_dd_cc: envs: - - TEST_APP_URL: git@github.com:bitrise-io/bazel.git - - BRANCH: master + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_DD_CC steps: - - bundle::feature-e2e-setup: { } - - apt-get-install: - inputs: - - packages: 'bc' - - upgrade: "no" - - script@1: + - bundle::benchmark-setup: inputs: - - content: | - #!/usr/bin/env bash - set -exo pipefail - ../scripts/install_bazel.sh - title: Install bazel + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Enable build cache + title: Generate workspace inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps - - script: - title: Build and capture logs + tuist install + tuist generate + - bundle::benchmark_start_measure: inputs: - - content: |- - set -exo pipefail - (/usr/local/bin/bazel build //src:bazel-dev --announce_rc --copt='-w' 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" - - script: - title: Check for cache invocations + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ - 'Invocation ID: ' \ - '--bes_header=x-os=Linux' \ - '--bes_header=x-cpu-cores=[0-9]+' \ - '--bes_header=x-mem-size=[0-9]+' \ - '--bes_header=x-ci-provider=bitrise' \ - "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ - '--bes_header=x-locale=\w+' \ - '--bes_header=x-default-charset=\w+' - - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" - assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" - assert_invocation_targets_bazel "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" - - deploy-to-bitrise-io@2: { } - - feature-e2e-bazel-public-no-rbe: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: linux-docker-android-22.04 - machine_type_id: g2.linux.medium + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_tuist_build_dd_spm_cc: envs: - - TEST_APP_URL: git@github.com:bitrise-io/bazel.git - - BRANCH: master + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC steps: - - bundle::feature-e2e-setup: { } - - apt-get-install: - inputs: - - packages: 'bc dnsutils iputils-ping' - - upgrade: "no" - - script: - title: Enable build cache - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - echo "Bitrise step ID: $BITRISE_STEP_EXECUTION_ID" - ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps - - script: - title: Build and capture logs using Docker + - bundle::benchmark-setup: inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - mkdir -p ../_dockerroot - cp -r $HOME/.bazelrc ../_dockerroot/.bazelrc - - echo ${DOCKER_SHARED_PASSWORD} | docker login --username bitrisedev --password-stdin - - sudo docker run --rm \ - -w "/workspace" \ - -e "BITRISE_APP_SLUG=$BITRISE_APP_SLUG" \ - -e "BITRISE_BUILD_SLUG=$BITRISE_BUILD_SLUG" \ - -e "BITRISE_STEP_EXECUTION_ID=$BITRISE_STEP_EXECUTION_ID" \ - -e "BITRISE_TRIGGERED_WORKFLOW_TITLE=$BITRISE_TRIGGERED_WORKFLOW_TITLE" \ - -e "GIT_REPOSITORY_UR=$GIT_REPOSITORY_URL" \ - -e "BITRISE_GIT_COMMIT=$BITRISE_GIT_COMMIT" \ - --mount "type=bind,source=$PWD,target=/workspace" \ - --mount "type=bind,source=$(readlink -f ../_dockerroot)/.bazelrc,target=/root/.bazelrc,ro" \ - --mount "type=bind,source=$BITRISE_DEPLOY_DIR,target=/bitrise-deploy" \ - ubuntu:22.04 \ - bash -c "set -o pipefail; apt-get update && apt-get install -y curl build-essential xz-utils zip unzip python3 && \ - curl -Lo bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && \ - chmod +x bazelisk && \ - ./bazelisk build //src:bazel-dev --announce_rc --copt='-w' 2>&1 | tee /bitrise-deploy/logs.txt" - + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Check for cache invocations + title: Generate workspace inputs: - content: |- - #!/bin/bash set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ - 'Invocation ID: ' \ - '--bes_header=x-os=Linux' \ - '--bes_header=x-cpu-cores=[0-9]+' \ - '--bes_header=x-mem-size=[0-9]+' \ - '--bes_header=x-ci-provider=bitrise' \ - "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ - '--bes_header=x-locale=\w+' \ - '--bes_header=x-default-charset=\w+' - - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API + tuist install + tuist generate + - bundle::benchmark_start_measure: inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" - assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" - assert_invocation_targets_bazel "$INVOCATION_ID" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" - - deploy-to-bitrise-io@2: { } - - gradle-configuration-e2e-osx: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - machine_type_id: g2.mac.medium - stack: osx-xcode-edge + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_tuist_build_spm_cc: envs: - - TEST_APP_URL: git@github.com:bitwarden/android.git - - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Tuist_SPM_CC steps: - - bundle::feature-e2e-setup: { } + - bundle::benchmark-setup: + inputs: + - REPO_URL: git@github.com:tuist/tuist.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Enable build cache + title: Generate workspace inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli activate gradle -d --cache - - script: - title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts + tuist install + tuist generate + - bundle::benchmark_start_measure: inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - - script: - title: Create local configuration cache + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - ./gradlew debug --configuration-cache --dry-run --info --stacktrace - - script: - title: Save configuration cache + - project_path: Tuist.xcworkspace + - scheme: TuistApp + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - set -exo pipefail - ../bitrise-build-cache-cli save-gradle-configuration-cache \ - --config-cache-dir "$PWD/.gradle/configuration-cache" - - script: - title: Delete local configuration cache + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_vlc_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC + steps: + - bundle::benchmark-setup: inputs: - - content: |- - set -exo pipefail - rm -rf .gradle/configuration-cache + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Restore configuration cache + title: Install dependencies inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli restore-gradle-configuration-cache - - script: - title: Build and capture logs + + gem install cocoapods + pod install + - bundle::benchmark_start_measure: inputs: - - content: |- - set -exo pipefail - (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_vlc_build_baseline_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_16_4 + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Check for cache invocations + title: Install dependencies inputs: - content: |- set -exo pipefail - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - 'Reusing configuration cache.' \ - '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ - '\[Bitrise Build Cache\].*Request metadata invocationId' \ - '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - deploy-to-bitrise-io@2: { } - - gradle-configuration-e2e-linux: + gem install cocoapods + pod install + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: linux-docker-android-22.04 + machine_type_id: g2.mac.large + stack: osx-xcode-16.4.x + benchmark_vlc_build_cc: envs: - - TEST_APP_URL: git@github.com:bitwarden/android.git - - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: VLC_CC steps: - - bundle::feature-e2e-setup: { } + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Enable build cache + title: Install dependencies inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli activate gradle -d --cache - - script: - title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts + gem install cocoapods + pod install + - bundle::benchmark_start_measure: inputs: - - content: |- - cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - - script: - title: Create local configuration cache + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - ./gradlew debug --configuration-cache --dry-run --info --stacktrace - - script: - title: Save configuration cache + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - set -exo pipefail - ../bitrise-build-cache-cli save-gradle-configuration-cache \ - --config-cache-dir "$PWD/.gradle/configuration-cache" - - script: - title: Delete local configuration cache + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_vlc_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: VLC_CC_SPM + steps: + - bundle::benchmark-setup: inputs: - - content: |- - set -exo pipefail - rm -rf .gradle/configuration-cache + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Restore configuration cache + title: Install dependencies inputs: - content: |- set -exo pipefail - ../bitrise-build-cache-cli restore-gradle-configuration-cache + gem install cocoapods + pod install + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_vlc_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_SPM + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Build and capture logs + title: Install dependencies inputs: - content: |- set -exo pipefail - (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" - - script: - title: Check for cache invocations + gem install cocoapods + pod install + - bundle::benchmark_start_measure: inputs: - - content: |- - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ - 'Reusing configuration cache.' \ - '\[Bitrise Build Cache\].*🤖 Bitrise remote cache enabled' \ - '\[Bitrise Build Cache\].*Request metadata invocationId' \ - '\[Bitrise Analytics\].*🤖 Bitrise analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - - deploy-to-bitrise-io@2: { } - - - e2e-xcode-comp-cache: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: + inputs: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_vlc_build_spm_16_4: envs: - - TEST_APP_URL: git@github.com:bitrise-io/swift-composable-architecture.git - - COMMIT: 27db3dfc9f55c206e09ca2a51b93bd600a56429e + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: VLC_SPM_16_4 steps: - - bundle::feature-e2e-setup: { } - - script: - title: activate xcode using CLI - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - echo "Original Xcodebuild command location:" - type xcodebuild || true - - # Add --xcode-path /usr/bin/xcodebuild to test xcode path override (for local) - ../bitrise-build-cache-cli -d activate xcode \ - --cache - - script: - title: build app + - bundle::benchmark-setup: inputs: - - content: |- - echo "Xcodebuild command location after activation:" - type xcodebuild || true - - echo "Config file content:" - cat "$HOME/.bitrise-xcelerate/config.json" - - echo "Starting build..." - xcodebuild build \ - -workspace ComposableArchitecture.xcworkspace \ - -scheme ComposableArchitecture \ - -destination "generic/platform=iOS" \ - -skipMacroValidation 2> wrapper.log | tee xcodebuild.log | xcpretty - + - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: gather info + title: Install dependencies inputs: - content: |- set -exo pipefail - - cp ~/.bitrise-xcelerate/config.json $BITRISE_DEPLOY_DIR - cp ~/.local/state/xcelerate/logs/* $BITRISE_DEPLOY_DIR - cp xcodebuild.log $BITRISE_DEPLOY_DIR - cp wrapper.log $BITRISE_DEPLOY_DIR - - cat "$BITRISE_DEPLOY_DIR/wrapper.log" - head -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log - tail -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log - - source ../_e2e/scripts/error.sh - source ../_e2e/scripts/extract_invocation_id.sh - - invocation_id=$(extract_invocation_id_xcode "$BITRISE_DEPLOY_DIR/wrapper.log") - if [[ -z "$invocation_id" ]]; then - fatal "Invocation ID not found in logs" - fi - - echo "Found Invocation ID: $invocation_id" - envman add --key INVOCATION_ID --value "$invocation_id" - - script: - title: Assert invocation from API + gem install cocoapods + pod install + - bundle::benchmark_start_measure: inputs: - - content: |- - source ../_e2e/scripts/assert_invocations.sh - - assert_bitrise_invocation_in_list "$INVOCATION_ID" "xcode" - assert_bitrise_invocation_detail "$INVOCATION_ID" "xcode" - assert_build_performance "$INVOCATION_ID" - assert_invocation_in_build_performance "$INVOCATION_ID" "xcode" - - script: - title: Check for cache usage + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-build-for-simulator: inputs: - - content: |- - set -exo pipefail - - ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' - - deploy-to-bitrise-io: { } - benchmark_results: - steps: - - script@1: + - project_path: VLC.xcworkspace + - scheme: VLC-iOS + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - bundle::benchmark_finish: inputs: - - content: |- - #!/usr/bin/env bash - set -euo pipefail - - variants=( - "" - "_SPM" - "_CC" - "_DD_CC" - "_CC_DD" - "_SPM_CC" - "_CC_SPM" - "_DD_SPM_CC" - "_CC_DD_SPM" - ) - - pretty_diff() { - local secs=$1 - local sign="" - if (( secs < 0 )); then - sign="-" - secs=$(( -secs )) - fi - local minutes=$(( secs / 60 )) - local seconds=$(( secs % 60 )) - if (( minutes > 0 )); then - printf '%s%dm %ds\n' "$sign" "$minutes" "$seconds" - else - printf '%s%ds\n' "$sign" "$seconds" - fi - } - - # read APPS into an array - apps=() - while IFS= read -r line || [[ -n $line ]]; do - apps+=("$line") - done <<< "$APPS" - - # build all variants - app_variants=() - for base in "${apps[@]}"; do - app_variants+=("$base") - for v in "${variants[@]}"; do - [[ -z "$v" ]] && continue - app_variants+=("${base}${v}") - done - done - - # duration in seconds from START/END var names - duration_seconds() { - local start_name=$1 - local end_name=$2 - echo $(( ${!end_name} - ${!start_name} )) - } - - # percent change with one decimal using integer math: - # returns string like "+12.3%" or "-4.0%" or "0.0%" - percent_change_one_decimal() { - local base_secs=$1 - local var_secs=$2 - - if (( base_secs == 0 )); then - printf 'N/A' - return - fi - - local diff=$(( base_secs - var_secs )) # positive = improvement - local scaled=$(( (diff * 1000) / base_secs )) # tenths of percent (integer) - local sign="" - if (( scaled > 0 )); then - sign="+" - elif (( scaled < 0 )); then - sign="-" - scaled=$(( -scaled )) - fi - local int_part=$(( scaled / 10 )) - local frac=$(( scaled % 10 )) - printf '%s%d.%d%%' "$sign" "$int_part" "$frac" - } - - for app in "${app_variants[@]}"; do - start="${app}_START" - end="${app}_END" - # skip if missing - [[ -z "${!start-}" ]] && continue - [[ -z "${!end-}" ]] && continue - - dur=$(duration_seconds "$start" "$end") - printf 'Duration for %s: ' "$app" - pretty_diff "$dur" - - # determine base name (before first underscore) - base_name="$app" - if [[ "$app" == *"_"* ]]; then - base_name="${app%%_*}" - fi - - # skip comparison when this is the base itself - if [[ "$app" == "$base_name" ]]; then - # nothing to compare to - continue - fi - - base_start="${base_name}_START" - base_end="${base_name}_END" - - if [[ -z "${!base_start-}" || -z "${!base_end-}" ]]; then - printf ' Base (%s) missing START/END — cannot compute percent change.\n' "$base_name" - continue - fi - - base_dur=$(duration_seconds "$base_start" "$base_end") - pc=$(percent_change_one_decimal "$base_dur" "$dur") - - if [[ "$pc" == "N/A" ]]; then - printf ' Percent change vs %s: N/A (base duration is zero)\n' "$base_name" - continue - fi - - if [[ "$pc" == "+0.0%" || "$pc" == "0.0%" ]]; then - printf ' Percent change vs %s: 0.0%% (equal)\n' "$base_name" - else - if (( dur < base_dur )); then - label="improved" - elif (( dur > base_dur )); then - label="slower" - else - label="equal" - fi - printf ' Percent change vs %s: %s (%s)\n' "$base_name" "$pc" "$label" - fi - done - envs: - - APPS: |- - WordPress - WordPress_Analyze - WordPress_Random - Tuist - Calendar - IceCubesApp - VLC - opts: - is_expand: false - benchmark_tuist_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Tuist + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 + stack: osx-xcode-16.4.x + benchmark_wordpress_analyze_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Generate workspace + title: Install dependencies inputs: - content: |- set -exo pipefail - tuist install - tuist generate + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - xcode-analyze: inputs: - - project_path: Tuist.xcworkspace - - scheme: TuistApp - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - workdir: . + - project_path: WordPress.xcworkspace + - scheme: WordPress + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: VLC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - - gem install cocoapods - pod install - - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_baseline_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: VLC_16_4 - meta: - bitrise.io: - stack: osx-xcode-16.4.x - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - - gem install cocoapods - pod install - - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_cc: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: VLC_CC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - gem install cocoapods - pod install - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_cc_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: VLC_CC_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - gem install cocoapods - pod install - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: VLC_SPM - meta: - bitrise.io: stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - gem install cocoapods - pod install - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_vlc_build_spm_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: VLC_SPM_16_4 - meta: - bitrise.io: - stack: osx-xcode-16.4.x - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://code.videolan.org/videolan/vlc-ios.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - gem install cocoapods - pod install - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: VLC.xcworkspace - - scheme: VLC-iOS - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge # osx-xcode-16.4.x - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_baseline_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_16.4 - meta: - bitrise.io: - stack: osx-xcode-16.4.x - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_random_build_baseline: + benchmark_wordpress_analyze_cc: envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_Random - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Random checkout - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - # produce a numeric seed from the slug (sha1 -> hex -> decimal bytes) - seed_hex=$(printf '%s' "$BITRISE_BUILD_SLUG" | sha1sum | awk '{print $1}') - # turn hex into raw bytes for --random-source - seed_bytes=$(printf '%s' "$seed_hex" | xxd -r -p) - - # pick a commit deterministically - commit=$(git rev-list --max-count=30 HEAD | shuf -n1 --random-source=<(printf '%s' "$seed_bytes")) - git checkout "$commit" - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_random_build_cc: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Random_CC + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-analyze: + inputs: + - workdir: . + - project_path: WordPress.xcworkspace + - scheme: WordPress + - cache_level: none + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Random checkout - inputs: - - content: |- - #!/bin/bash - set -exo pipefail - - # pick a random commit from the last 30 commits (or fewer if repo has fewer) - commit=$(git rev-list --max-count=30 HEAD | shuf -n1) - git checkout "$commit" - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_SPM - meta: - bitrise.io: stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_spm_invalidpackage: + benchmark_wordpress_analyze_cc_dd: envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_SPM # Intentionally the same to restore the same SPM - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - USE_DD_CACHE: "true" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Remove alamofire to make SPM invalid - inputs: - - content: |- - #!/usr/bin/env bash - set -euo pipefail - - # Directory containing Package.swift and Package.resolved - TARGET_DIR="Modules" - - # Name to remove (case-insensitive) - PKG_NAME="alamofire" - - # Files (within TARGET_DIR) - PKG_SWIFT="Package.swift" - PKG_RESOLVED="Package.resolved" - - # Check target dir exists - if [ ! -d "$TARGET_DIR" ]; then - echo "Error: target directory '$TARGET_DIR' not found in $(pwd)" >&2 - exit 1 - fi - - # Enter target dir - pushd "$TARGET_DIR" >/dev/null - - # Ensure files exist - if [ ! -f "$PKG_SWIFT" ]; then - echo "Error: $PKG_SWIFT not found in $(pwd)" >&2 - popd >/dev/null - exit 1 - fi - if [ ! -f "$PKG_RESOLVED" ]; then - echo "Error: $PKG_RESOLVED not found in $(pwd)" >&2 - popd >/dev/null - exit 1 - fi - - # Check jq available - if ! command -v jq >/dev/null 2>&1; then - echo "Error: jq is required but not found. Install with 'brew install jq' or your package manager." >&2 - popd >/dev/null - exit 1 - fi - - # Backups - ts=$(date +%Y%m%d%H%M%S) - cp "$PKG_SWIFT" "${PKG_SWIFT}.bak.${ts}" - cp "$PKG_RESOLVED" "${PKG_RESOLVED}.bak.${ts}" - echo "Backups created in $TARGET_DIR: ${PKG_SWIFT}.bak.${ts}, ${PKG_RESOLVED}.bak.${ts}" - - # Build bracketed case-insensitive pattern for sed - PATTERN="" - for c in $(echo "$PKG_NAME" | fold -w1); do - lc=$(echo "$c" | tr '[:upper:]' '[:lower:]') - uc=$(echo "$c" | tr '[:lower:]' '[:upper:]') - PATTERN="${PATTERN}[${uc}${lc}]" - done - - # Remove dependency line from Package.swift (single-line assumption) - # Use portable sed handling for GNU and BSD - if sed --version >/dev/null 2>&1; then - # GNU sed - sed -i.bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" - rm -f "${PKG_SWIFT}.bak_pkg_swift" - else - # BSD sed (macOS) - sed -i .bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" - rm -f "${PKG_SWIFT}.bak_pkg_swift" - fi - - echo "Removed lines matching '$PKG_NAME' from $PKG_SWIFT (if any)." - - # Remove pin from Package.resolved (newer Xcode format: top-level "pins") - PKG_LC=$(printf '%s' "$PKG_NAME" | tr '[:upper:]' '[:lower:]') - - jq --arg name "$PKG_LC" '(.pins) |= map(select((.identity // "" | ascii_downcase) != $name))' \ - "$PKG_RESOLVED" > "${PKG_RESOLVED}.tmp" - - # verify jq output is valid JSON before replacing - if jq empty "${PKG_RESOLVED}.tmp" >/dev/null 2>&1; then - mv "${PKG_RESOLVED}.tmp" "$PKG_RESOLVED" - echo "Updated $PKG_RESOLVED (removed pins with identity == '$PKG_NAME' case-insensitively)." - else - echo "Error: jq produced invalid JSON; leaving original $PKG_RESOLVED in place." >&2 - rm -f "${PKG_RESOLVED}.tmp" - popd >/dev/null - exit 1 - fi - - # Quick checks - echo - echo "Quick checks (in $TARGET_DIR):" - echo "- Validate Package.resolved JSON (first 200 lines):" - jq . "$PKG_RESOLVED" | sed -n '1,200p' - echo - echo "- Look for any remaining identities matching '$PKG_NAME' (case-insensitive):" - if jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" >/dev/null 2>&1; then - echo "Warning: found remaining matches in Package.resolved" - jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" || true - else - echo "No remaining matches for '$PKG_NAME' in Package.resolved" - fi + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 - # Return to original dir - popd >/dev/null - - echo - echo "Done. If anything looks wrong, restore backups located at:" - echo " ${TARGET_DIR}/${PKG_SWIFT}.bak.${ts}" - echo " ${TARGET_DIR}/${PKG_RESOLVED}.bak.${ts}" - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: false - - USE_SPM: false # disable save - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_spm_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_16.4_SPM + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - xcode-analyze: + inputs: + - workdir: . + - project_path: WordPress.xcworkspace + - scheme: WordPress + - cache_level: none + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME meta: bitrise.io: - stack: osx-xcode-16.4.x machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_spm_explicit: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_Explicit_SPM - meta: - bitrise.io: stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: WordPress.xcworkspace - - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO SWIFT_ENABLE_EXPLICIT_MODULES=YES -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_cc: + benchmark_wordpress_analyze_cc_dd_spm: envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" + - USE_DD_CACHE: "true" + - USE_SPM: "true" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM steps: - bundle::benchmark-setup: inputs: @@ -1778,27 +1422,27 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_cc_dd: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_DD meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_analyze_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM steps: - bundle::benchmark-setup: inputs: @@ -1822,27 +1466,27 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_cc_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_analyze_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Analyze_SPM steps: - bundle::benchmark-setup: inputs: @@ -1866,27 +1510,27 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - xcode-analyze: inputs: + - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - cache_level: none - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_build_cc_dd_spm: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress steps: - bundle::benchmark-setup: inputs: @@ -1915,22 +1559,23 @@ workflows: - project_path: WordPress.xcworkspace - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_baseline: + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_baseline_16_4: envs: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_16.4 steps: - bundle::benchmark-setup: inputs: @@ -1954,71 +1599,28 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: + - xcode-build-for-simulator: inputs: - - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - cache_level: none + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress_Analyze_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git - - BRANCH: trunk - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - script: - title: Install dependencies - inputs: - - content: |- - set -exo pipefail - asdf install ruby 3.2.2 - asdf global ruby 3.2.2 - - mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift - mkdir -p ~/DerivedData/Wordpress - rake dependencies - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: - inputs: - - workdir: . - - project_path: WordPress.xcworkspace - - scheme: WordPress - - cache_level: none - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_cc: + stack: osx-xcode-16.4.x + benchmark_wordpress_build_cc: envs: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_CC steps: - bundle::benchmark-setup: inputs: @@ -2042,27 +1644,28 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: + - xcode-build-for-simulator: inputs: - - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - cache_level: none + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_cc_dd: + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_cc_dd: envs: - USE_DD_CACHE: "true" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_CC_DD steps: - bundle::benchmark-setup: inputs: @@ -2086,27 +1689,28 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: + - xcode-build-for-simulator: inputs: - - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - cache_level: none + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_cc_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_cc_dd_spm: + envs: + - USE_DD_CACHE: "true" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC_DD_SPM steps: - bundle::benchmark-setup: inputs: @@ -2130,27 +1734,28 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: + - xcode-build-for-simulator: inputs: - - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - cache_level: none + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_wordpress_analyze_cc_dd_spm: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: WordPress_Analyze_CC_DD_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_cc_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: WordPress_CC_SPM steps: - bundle::benchmark-setup: inputs: @@ -2174,989 +1779,1212 @@ workflows: - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-analyze: + - xcode-build-for-simulator: inputs: - - workdir: . - project_path: WordPress.xcworkspace - scheme: WordPress - - cache_level: none + - configuration: Debug + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_tuist_build_cc: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_CC meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_spm: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_SPM steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Generate workspace + title: Install dependencies inputs: - content: |- set -exo pipefail - tuist install - tuist generate + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Tuist.xcworkspace - - scheme: TuistApp + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_tuist_build_dd_cc: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_DD_CC meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_spm_16_4: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_16.4_SPM steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Generate workspace + title: Install dependencies inputs: - content: |- set -exo pipefail - tuist install - tuist generate + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Tuist.xcworkspace - - scheme: TuistApp + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_tuist_build_spm_cc: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_SPM_CC meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 + stack: osx-xcode-16.4.x + benchmark_wordpress_build_spm_explicit: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_Explicit_SPM steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Generate workspace + title: Install dependencies inputs: - content: |- set -exo pipefail - tuist install - tuist generate + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Tuist.xcworkspace - - scheme: TuistApp + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO SWIFT_ENABLE_EXPLICIT_MODULES=YES + -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_tuist_build_dd_spm_cc: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Tuist_DD_SPM_CC meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - tools: - tuist: 4.70.0 + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_build_spm_invalidpackage: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "true" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress_SPM steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:tuist/tuist.git - - BRANCH: main + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - script: - title: Generate workspace + title: Remove alamofire to make SPM invalid + inputs: + - content: |- + #!/usr/bin/env bash + set -euo pipefail + + # Directory containing Package.swift and Package.resolved + TARGET_DIR="Modules" + + # Name to remove (case-insensitive) + PKG_NAME="alamofire" + + # Files (within TARGET_DIR) + PKG_SWIFT="Package.swift" + PKG_RESOLVED="Package.resolved" + + # Check target dir exists + if [ ! -d "$TARGET_DIR" ]; then + echo "Error: target directory '$TARGET_DIR' not found in $(pwd)" >&2 + exit 1 + fi + + # Enter target dir + pushd "$TARGET_DIR" >/dev/null + + # Ensure files exist + if [ ! -f "$PKG_SWIFT" ]; then + echo "Error: $PKG_SWIFT not found in $(pwd)" >&2 + popd >/dev/null + exit 1 + fi + if [ ! -f "$PKG_RESOLVED" ]; then + echo "Error: $PKG_RESOLVED not found in $(pwd)" >&2 + popd >/dev/null + exit 1 + fi + + # Check jq available + if ! command -v jq >/dev/null 2>&1; then + echo "Error: jq is required but not found. Install with 'brew install jq' or your package manager." >&2 + popd >/dev/null + exit 1 + fi + + # Backups + ts=$(date +%Y%m%d%H%M%S) + cp "$PKG_SWIFT" "${PKG_SWIFT}.bak.${ts}" + cp "$PKG_RESOLVED" "${PKG_RESOLVED}.bak.${ts}" + echo "Backups created in $TARGET_DIR: ${PKG_SWIFT}.bak.${ts}, ${PKG_RESOLVED}.bak.${ts}" + + # Build bracketed case-insensitive pattern for sed + PATTERN="" + for c in $(echo "$PKG_NAME" | fold -w1); do + lc=$(echo "$c" | tr '[:upper:]' '[:lower:]') + uc=$(echo "$c" | tr '[:lower:]' '[:upper:]') + PATTERN="${PATTERN}[${uc}${lc}]" + done + + # Remove dependency line from Package.swift (single-line assumption) + # Use portable sed handling for GNU and BSD + if sed --version >/dev/null 2>&1; then + # GNU sed + sed -i.bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" + rm -f "${PKG_SWIFT}.bak_pkg_swift" + else + # BSD sed (macOS) + sed -i .bak_pkg_swift "/$PATTERN/d" "$PKG_SWIFT" + rm -f "${PKG_SWIFT}.bak_pkg_swift" + fi + + echo "Removed lines matching '$PKG_NAME' from $PKG_SWIFT (if any)." + + # Remove pin from Package.resolved (newer Xcode format: top-level "pins") + PKG_LC=$(printf '%s' "$PKG_NAME" | tr '[:upper:]' '[:lower:]') + + jq --arg name "$PKG_LC" '(.pins) |= map(select((.identity // "" | ascii_downcase) != $name))' \ + "$PKG_RESOLVED" > "${PKG_RESOLVED}.tmp" + + # verify jq output is valid JSON before replacing + if jq empty "${PKG_RESOLVED}.tmp" >/dev/null 2>&1; then + mv "${PKG_RESOLVED}.tmp" "$PKG_RESOLVED" + echo "Updated $PKG_RESOLVED (removed pins with identity == '$PKG_NAME' case-insensitively)." + else + echo "Error: jq produced invalid JSON; leaving original $PKG_RESOLVED in place." >&2 + rm -f "${PKG_RESOLVED}.tmp" + popd >/dev/null + exit 1 + fi + + # Quick checks + echo + echo "Quick checks (in $TARGET_DIR):" + echo "- Validate Package.resolved JSON (first 200 lines):" + jq . "$PKG_RESOLVED" | sed -n '1,200p' + echo + echo "- Look for any remaining identities matching '$PKG_NAME' (case-insensitive):" + if jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" >/dev/null 2>&1; then + echo "Warning: found remaining matches in Package.resolved" + jq -r '.pins[]?.identity // empty' "$PKG_RESOLVED" | grep -i -E "$PKG_NAME" || true + else + echo "No remaining matches for '$PKG_NAME' in Package.resolved" + fi + + # Return to original dir + popd >/dev/null + + echo + echo "Done. If anything looks wrong, restore backups located at:" + echo " ${TARGET_DIR}/${PKG_SWIFT}.bak.${ts}" + echo " ${TARGET_DIR}/${PKG_RESOLVED}.bak.${ts}" + - script: + title: Install dependencies inputs: - content: |- set -exo pipefail - tuist install - tuist generate + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Tuist.xcworkspace - - scheme: TuistApp + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -skipMacroValidation -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM + - USE_DD_CACHE: false + - USE_SPM: false - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_sample_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: SampleApp - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - change-workdir: - title: Switch working dir to _tmp - inputs: - - path: "./sample-swiftpm4" - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: sample-swiftpm2.xcodeproj - - scheme: sample-swiftpm2 - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_sample_build_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: SampleApp_SPM meta: bitrise.io: - stack: osx-xcode-26.0.x-edge machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - change-workdir: - title: Switch working dir to _tmp - inputs: - - path: "./sample-swiftpm4" - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: sample-swiftpm2.xcodeproj - - scheme: sample-swiftpm2 - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_sample_build_spm_explicit: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: SampleApp_SPM_Explicit - meta: - bitrise.io: stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: https://github.com/bitrise-io/sample-apps-ios-swiftpm - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - change-workdir: - title: Switch working dir to _tmp - inputs: - - path: "./sample-swiftpm4" - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: sample-swiftpm2.xcodeproj - - scheme: sample-swiftpm2 - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" -SWIFT_ENABLE_EXPLICIT_MODULES=YES - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_baseline: + benchmark_wordpress_random_build_baseline: envs: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_Random steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Random checkout + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + # produce a numeric seed from the slug (sha1 -> hex -> decimal bytes) + seed_hex=$(printf '%s' "$BITRISE_BUILD_SLUG" | sha1sum | awk '{print $1}') + # turn hex into raw bytes for --random-source + seed_bytes=$(printf '%s' "$seed_hex" | xxd -r -p) + + # pick a commit deterministically + commit=$(git rev-list --max-count=30 HEAD | shuf -n1 --random-source=<(printf '%s' "$seed_bytes")) + git checkout "$commit" + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_baseline_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar_16_4 meta: bitrise.io: - stack: osx-xcode-16.4.x machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_cc: + stack: osx-xcode-26.0.x-edge + benchmark_wordpress_random_build_cc: envs: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - BENCHMARK_APP_NAME: WordPress_Random_CC steps: - bundle::benchmark-setup: inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master + - REPO_URL: https://github.com/wordpress-mobile/WordPress-iOS.git + - BRANCH: trunk - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Random checkout + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + # pick a random commit from the last 30 commits (or fewer if repo has fewer) + commit=$(git rev-list --max-count=30 HEAD | shuf -n1) + git checkout "$commit" + - script: + title: Install dependencies + inputs: + - content: |- + set -exo pipefail + asdf install ruby 3.2.2 + asdf global ruby 3.2.2 + + mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift + mkdir -p ~/DerivedData/Wordpress + rake dependencies - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - xcode-build-for-simulator: inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar + - project_path: WordPress.xcworkspace + - scheme: WordPress - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" + - xcodebuild_options: CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -resultBundlePath + "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE - USE_SPM: $USE_SPM - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_cc_dd: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_DD meta: bitrise.io: + machine_type_id: g2.mac.large stack: osx-xcode-26.0.x-edge + e2e-xcode-comp-cache: + envs: + - TEST_APP_URL: git@github.com:bitrise-io/swift-composable-architecture.git + - COMMIT: 27db3dfc9f55c206e09ca2a51b93bd600a56429e + steps: + - bundle::feature-e2e-setup: {} + - script: + title: activate xcode using CLI + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + echo "Original Xcodebuild command location:" + type xcodebuild || true + + # Add --xcode-path /usr/bin/xcodebuild to test xcode path override (for local) + ../bitrise-build-cache-cli -d activate xcode \ + --cache + - script: + title: build app + inputs: + - content: |- + echo "Xcodebuild command location after activation:" + type xcodebuild || true + + echo "Config file content:" + cat "$HOME/.bitrise-xcelerate/config.json" + + echo "Starting build..." + xcodebuild build \ + -workspace ComposableArchitecture.xcworkspace \ + -scheme ComposableArchitecture \ + -destination "generic/platform=iOS" \ + -skipMacroValidation 2> wrapper.log | tee xcodebuild.log | xcpretty + - script: + title: gather info + inputs: + - content: |- + set -exo pipefail + + cp ~/.bitrise-xcelerate/config.json $BITRISE_DEPLOY_DIR + cp ~/.local/state/xcelerate/logs/* $BITRISE_DEPLOY_DIR + cp xcodebuild.log $BITRISE_DEPLOY_DIR + cp wrapper.log $BITRISE_DEPLOY_DIR + + cat "$BITRISE_DEPLOY_DIR/wrapper.log" + head -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log + tail -n 20 $BITRISE_DEPLOY_DIR/xcodebuild.log + + source ../_e2e/scripts/error.sh + source ../_e2e/scripts/extract_invocation_id.sh + + invocation_id=$(extract_invocation_id_xcode "$BITRISE_DEPLOY_DIR/wrapper.log") + if [[ -z "$invocation_id" ]]; then + fatal "Invocation ID not found in logs" + fi + + echo "Found Invocation ID: $invocation_id" + envman add --key INVOCATION_ID --value "$invocation_id" + - script: + title: Assert invocation from API + inputs: + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "xcode" + assert_bitrise_invocation_detail "$INVOCATION_ID" "xcode" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "xcode" + - script: + title: Check for cache usage + inputs: + - content: |- + set -exo pipefail + + ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/xcodebuild.log" 'CompilationCacheMetrics' + - deploy-to-bitrise-io: {} + meta: + bitrise.io: machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + feature-e2e-bazel-bitrisedc-no-rbe: + envs: + - TEST_APP_URL: git@github.com:bitrise-io/bazel.git + - BRANCH: master steps: - - bundle::benchmark-setup: + - bundle::feature-e2e-setup: {} + - apt-get-install: inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: + - packages: bc + - upgrade: "no" + - script@1: + title: Install bazel inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: | + #!/usr/bin/env bash + set -exo pipefail + ../scripts/install_bazel.sh + - script: + title: Enable build cache inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps + - script: + title: Build and capture logs + inputs: + - content: |- + set -exo pipefail + (/usr/local/bin/bazel build //src:bazel-dev --announce_rc --copt='-w' 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - script: + title: Check for cache invocations + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ + '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ + 'Invocation ID: ' \ + '--bes_header=x-os=Linux' \ + '--bes_header=x-cpu-cores=[0-9]+' \ + '--bes_header=x-mem-size=[0-9]+' \ + '--bes_header=x-ci-provider=bitrise' \ + "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ + '--bes_header=x-locale=\w+' \ + '--bes_header=x-default-charset=\w+' + + source ../_e2e/scripts/extract_invocation_id.sh + + invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") + if [[ -z "$invocation_id" ]]; then + fatal "Invocation ID not found in logs" + fi + + echo "Found Invocation ID: $invocation_id" + envman add --key INVOCATION_ID --value "$invocation_id" + - script: + title: Assert invocation from API inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar_SPM - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_spm_16_4: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar_SPM_16_4 - meta: - bitrise.io: - stack: osx-xcode-16.4.x - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_spm_explicit: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: Calendar_Explicit_SPM + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" + assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" + assert_invocation_targets_bazel "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" + - deploy-to-bitrise-io@2: {} meta: bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: - inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: - inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: SWIFT_ENABLE_EXPLICIT_MODULES=YES -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: - inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_cc_spm: + machine_type_id: g2.linux.medium + stack: linux-docker-android-22.04 + feature-e2e-bazel-public-no-rbe: envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_SPM - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - TEST_APP_URL: git@github.com:bitrise-io/bazel.git + - BRANCH: master steps: - - bundle::benchmark-setup: + - bundle::feature-e2e-setup: {} + - apt-get-install: inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: + - packages: bc dnsutils iputils-ping + - upgrade: "no" + - script: + title: Enable build cache inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: |- + #!/bin/bash + set -exo pipefail + + echo "Bitrise step ID: $BITRISE_STEP_EXECUTION_ID" + ../bitrise-build-cache-cli activate bazel -d --cache --cache-push --bes --timestamps + - script: + title: Build and capture logs using Docker inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: + - content: |- + #!/bin/bash + set -exo pipefail + + mkdir -p ../_dockerroot + cp -r $HOME/.bazelrc ../_dockerroot/.bazelrc + + echo ${DOCKER_SHARED_PASSWORD} | docker login --username bitrisedev --password-stdin + + sudo docker run --rm \ + -w "/workspace" \ + -e "BITRISE_APP_SLUG=$BITRISE_APP_SLUG" \ + -e "BITRISE_BUILD_SLUG=$BITRISE_BUILD_SLUG" \ + -e "BITRISE_STEP_EXECUTION_ID=$BITRISE_STEP_EXECUTION_ID" \ + -e "BITRISE_TRIGGERED_WORKFLOW_TITLE=$BITRISE_TRIGGERED_WORKFLOW_TITLE" \ + -e "GIT_REPOSITORY_UR=$GIT_REPOSITORY_URL" \ + -e "BITRISE_GIT_COMMIT=$BITRISE_GIT_COMMIT" \ + --mount "type=bind,source=$PWD,target=/workspace" \ + --mount "type=bind,source=$(readlink -f ../_dockerroot)/.bazelrc,target=/root/.bazelrc,ro" \ + --mount "type=bind,source=$BITRISE_DEPLOY_DIR,target=/bitrise-deploy" \ + ubuntu:22.04 \ + bash -c "set -o pipefail; apt-get update && apt-get install -y curl build-essential xz-utils zip unzip python3 && \ + curl -Lo bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && \ + chmod +x bazelisk && \ + ./bazelisk build //src:bazel-dev --announce_rc --copt='-w' 2>&1 | tee /bitrise-deploy/logs.txt" + - script: + title: Check for cache invocations inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_calendar_build_cc_dd_spm: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: Calendar_CC_DD_SPM + - content: |- + #!/bin/bash + set -exo pipefail + + ../scripts/check_pattern.sh "$BITRISE_DEPLOY_DIR/logs.txt" \ + '--remote_cache=grpcs:\/\/bitrise-accelerate\.services\.bitrise\.io' \ + 'Invocation ID: ' \ + '--bes_header=x-os=Linux' \ + '--bes_header=x-cpu-cores=[0-9]+' \ + '--bes_header=x-mem-size=[0-9]+' \ + '--bes_header=x-ci-provider=bitrise' \ + "--bes_header=x-app-id=$BITRISE_APP_SLUG" \ + '--bes_header=x-locale=\w+' \ + '--bes_header=x-default-charset=\w+' + + source ../_e2e/scripts/extract_invocation_id.sh + + invocation_id=$(extract_invocation_id_bazel "$BITRISE_DEPLOY_DIR/logs.txt") + if [[ -z "$invocation_id" ]]; then + fatal "Invocation ID not found in logs" + fi + + echo "Found Invocation ID: $invocation_id" + envman add --key INVOCATION_ID --value "$invocation_id" + - script: + title: Assert invocation from API + inputs: + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "bazel" + assert_bitrise_invocation_detail "$INVOCATION_ID" "bazel" + assert_invocation_targets_bazel "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "bazel" + - deploy-to-bitrise-io@2: {} meta: bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + machine_type_id: g2.linux.medium + stack: linux-docker-android-22.04 + feature-e2e-gradle-bitwarden: + envs: + - TEST_APP_URL: git@github.com:bitwarden/android.git + - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 steps: - - bundle::benchmark-setup: + - bundle::feature-e2e-setup: {} + - apt-get-install: inputs: - - REPO_URL: git@github.com:richardtop/CalendarApp.git - - BRANCH: master - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - bundle::benchmark_start_measure: + - packages: bc + - upgrade: "no" + - script: + title: Enable build cache inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli activate gradle -d --cache + - script: + title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - project_path: Calendar.xcodeproj - - scheme: Calendar - - configuration: Debug - - xcodebuild_options: -resultBundlePath "$BITRISE_DEPLOY_DIR/$BENCHMARK_APP_NAME.xcresult" - - bundle::benchmark_finish: + - content: cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - script: + title: Create local configuration cache inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_icecubesapp_build_baseline: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubesApp - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: + - content: |- + set -exo pipefail + ./gradlew debug --configuration-cache --dry-run --info --stacktrace + - script: + title: Save configuration cache inputs: - - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - - BRANCH: main - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli save-gradle-configuration-cache \ + --config-cache-dir "$PWD/.gradle/configuration-cache" \ + --key "cli-bitwarden-test" - script: - title: + title: Delete local configuration cache inputs: - content: |- set -exo pipefail - cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - - bundle::benchmark_start_measure: + rm -rf .gradle/configuration-cache + - script: + title: Restore configuration cache inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli restore-gradle-configuration-cache \ + --key "cli-bitwarden-test" + - script: + title: Build and capture logs inputs: - - project_path: IceCubesApp.xcodeproj - - scheme: IceCubesApp - - configuration: Debug - - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - - bundle::benchmark_finish: + - content: |- + set -exo pipefail + (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - script: + title: Check for cache invocations inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_icecubesapp_build_cc: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "false" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - content: "set -exo pipefail\n\n../scripts/check_pattern.sh \"$BITRISE_DEPLOY_DIR/logs.txt\" + \\\n 'Reusing configuration cache.' \\\n '\\[Bitrise Build Cache\\].*\U0001F916 + Bitrise remote cache enabled' \\\n '\\[Bitrise Build Cache\\].*Request + metadata invocationId' \\\n '\\[Bitrise Analytics\\].*\U0001F916 Bitrise + analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'\n\nsource + ../_e2e/scripts/extract_invocation_id.sh\n\ninvocation_id=$(extract_invocation_id_gradle + \"$BITRISE_DEPLOY_DIR/logs.txt\")\nif [[ -z \"$invocation_id\" ]]; then\n + \ fatal \"Invocation ID not found in logs\"\nfi\n\necho \"Found Invocation + ID: $invocation_id\"\nenvman add --key INVOCATION_ID --value \"$invocation_id\"" + - script: + title: Assert invocation from API + inputs: + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" + assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" + assert_invocation_tasks_gradle "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" + - deploy-to-bitrise-io@2: {} + feature-e2e-gradle-duckduck: + envs: + - TEST_APP_URL: git@github.com:duckduckgo/Android.git + - BRANCH: develop steps: - - bundle::benchmark-setup: + - bundle::feature-e2e-setup: {} + - apt-get-install: inputs: - - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - - BRANCH: main - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - packages: bc + - upgrade: "no" - script: - title: + title: Enable build cache inputs: - content: |- set -exo pipefail - cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - - bundle::benchmark_start_measure: + ../bitrise-build-cache-cli activate gradle -d --cache + - script: + title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - script: + title: Build and capture logs inputs: - - project_path: IceCubesApp.xcodeproj - - scheme: IceCubesApp - - configuration: Debug - - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - - bundle::benchmark_finish: + - content: |- + set -exo pipefail + (./gradlew debug --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - script: + title: Check for cache invocations inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_icecubesapp_build_dd: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "false" - - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: IceCubesApp_DD - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + - content: "set -exo pipefail\n\n../scripts/check_pattern.sh \"$BITRISE_DEPLOY_DIR/logs.txt\" + \\\n '\\[Bitrise Build Cache\\].*\U0001F916 Bitrise remote cache enabled' + \\\n '\\[Bitrise Build Cache\\].*Request metadata invocationId' \\\n + \ '\\[Bitrise Analytics\\].*\U0001F916 Bitrise analytics enabled for tasks.*Invocation + ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'\n\nsource + ../_e2e/scripts/extract_invocation_id.sh\n\ninvocation_id=$(extract_invocation_id_gradle + \"$BITRISE_DEPLOY_DIR/logs.txt\")\nif [[ -z \"$invocation_id\" ]]; then\n + \ fatal \"Invocation ID not found in logs\"\nfi\n\necho \"Found Invocation + ID: $invocation_id\"\nenvman add --key INVOCATION_ID --value \"$invocation_id\"" + - script: + title: Assert invocation from API + inputs: + - content: |- + source ../_e2e/scripts/assert_invocations.sh + + assert_bitrise_invocation_in_list "$INVOCATION_ID" "gradle" + assert_bitrise_invocation_detail "$INVOCATION_ID" "gradle" + assert_invocation_tasks_gradle "$INVOCATION_ID" + assert_build_performance "$INVOCATION_ID" + assert_invocation_in_build_performance "$INVOCATION_ID" "gradle" + - deploy-to-bitrise-io@2: {} + generate_and_commit_dependency_matrix: steps: - - bundle::benchmark-setup: + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - git-clone@8: inputs: - - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - - BRANCH: main - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - fetch_tags: "yes" + - shallow_clone: "false" + - clone_depth: "-1" + - bundle::generate_and_commit_dependency_matrix: {} + - slack@4: + title: Send slack if failed + run_if: .IsBuildFailed + inputs: + - channel: '#team-advanced-ci-alerts-website' + - text: |- + Dependency matrix generation failed! :matrix-code: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ':rotating_light:' + - color: '#ee003b' + - webhook_url: $SLACK_WEBHOOK_ALERTS + generate_gradle_verification: + steps: + - bundle::generate_gradle_verification_reference: {} + gradle-configuration-e2e-linux: + envs: + - TEST_APP_URL: git@github.com:bitwarden/android.git + - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 + steps: + - bundle::feature-e2e-setup: {} - script: - title: + title: Enable build cache inputs: - content: |- set -exo pipefail - cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - - bundle::benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + ../bitrise-build-cache-cli activate gradle -d --cache + - script: + title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts inputs: - - project_path: IceCubesApp.xcodeproj - - scheme: IceCubesApp - - configuration: Debug - - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - - bundle::benchmark_finish: + - content: cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts + - script: + title: Create local configuration cache inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_icecubesapp_build_cc_spm: - envs: - - USE_DD_CACHE: "false" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_SPM - meta: - bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large - steps: - - bundle::benchmark-setup: + - content: |- + set -exo pipefail + ./gradlew debug --configuration-cache --dry-run --info --stacktrace + - script: + title: Save configuration cache inputs: - - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - - BRANCH: main - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli save-gradle-configuration-cache \ + --config-cache-dir "$PWD/.gradle/configuration-cache" - script: - title: + title: Delete local configuration cache inputs: - content: |- set -exo pipefail - cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - - bundle::benchmark_start_measure: + rm -rf .gradle/configuration-cache + - script: + title: Restore configuration cache inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli restore-gradle-configuration-cache + - script: + title: Build and capture logs inputs: - - project_path: IceCubesApp.xcodeproj - - scheme: IceCubesApp - - configuration: Debug - - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - - bundle::benchmark_finish: + - content: |- + set -exo pipefail + (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - script: + title: Check for cache invocations inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - benchmark_icecubesapp_build_cc_dd_spm: - envs: - - USE_DD_CACHE: "true" - - USE_SPM: "true" - - USE_COMP_CACHE: "true" - - BENCHMARK_APP_NAME: IceCubesApp_CC_DD_SPM + - content: "set -exo pipefail\n\n../scripts/check_pattern.sh \"$BITRISE_DEPLOY_DIR/logs.txt\" + \\\n 'Reusing configuration cache.' \\\n '\\[Bitrise Build Cache\\].*\U0001F916 + Bitrise remote cache enabled' \\\n '\\[Bitrise Build Cache\\].*Request + metadata invocationId' \\\n '\\[Bitrise Analytics\\].*\U0001F916 Bitrise + analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'" + - deploy-to-bitrise-io@2: {} meta: bitrise.io: - stack: osx-xcode-26.0.x-edge - machine_type_id: g2.mac.large + stack: linux-docker-android-22.04 + gradle-configuration-e2e-osx: + envs: + - TEST_APP_URL: git@github.com:bitwarden/android.git + - COMMIT: 2c71ab7d27d7f976766adee7bfd1828d5eda0850 steps: - - bundle::benchmark-setup: + - bundle::feature-e2e-setup: {} + - script: + title: Enable build cache inputs: - - REPO_URL: git@github.com:Dimillian/IceCubesApp.git - - BRANCH: main - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - USE_COMP_CACHE: $USE_COMP_CACHE - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli activate gradle -d --cache + - script: + title: Print ~/.init.d/bitrise-build-cache.init.gradle.kts + inputs: + - content: cat ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts - script: - title: + title: Create local configuration cache inputs: - content: |- set -exo pipefail - cp IceCubesApp-release.xcconfig IceCubesApp.xcconfig - - bundle::benchmark_start_measure: + ./gradlew debug --configuration-cache --dry-run --info --stacktrace + - script: + title: Save configuration cache inputs: - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - - xcode-build-for-simulator: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli save-gradle-configuration-cache \ + --config-cache-dir "$PWD/.gradle/configuration-cache" + - script: + title: Delete local configuration cache inputs: - - project_path: IceCubesApp.xcodeproj - - scheme: IceCubesApp - - configuration: Debug - - destination: 'platform=iOS Simulator,name=iPhone 17,OS=26.0' - - bundle::benchmark_finish: + - content: |- + set -exo pipefail + rm -rf .gradle/configuration-cache + - script: + title: Restore configuration cache inputs: - - USE_DD_CACHE: $USE_DD_CACHE - - USE_SPM: $USE_SPM - - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME -step_bundles: - generate_gradle_verification_reference: - steps: + - content: |- + set -exo pipefail + ../bitrise-build-cache-cli restore-gradle-configuration-cache - script: - title: Generate Gradle verification reference + title: Build and capture logs inputs: - - content: | - #!/bin/bash - set -ex - - # Backup $HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts - GRADLE_INIT_PATH=$HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts - if [[ -f "$GRADLE_INIT_PATH" ]]; then - mv $GRADLE_INIT_PATH $GRADLE_INIT_PATH.backup - fi - - go build -o /tmp/bin/bitrise-build-cache-cli - - SAMPLE_PATH=$(realpath ./gradle_verification_sample) - GRADLE_VERIFICATION_REF_PATH=$SAMPLE_PATH/gradle/verification-metadata.xml - GRADLE_VERIFICATION_REF_TARGET_PATH=$(realpath ./cmd/gradle/asset/verification-metadata.xml) - - # add plugin with CLI - cd "$SAMPLE_PATH" - /tmp/bin/bitrise-build-cache-cli gradle-verification add-reference-deps - - # generate xml - rm -f "$SAMPLE_PATH/gradle/verification-metadata.xml" - ./gradlew --write-verification-metadata sha256 help - - cat $GRADLE_VERIFICATION_REF_PATH - echo "Generated verification xml: $GRADLE_VERIFICATION_REF_PATH" - - # Copy metadata to be included in the CLI binary - mv -f "$GRADLE_VERIFICATION_REF_PATH" "$GRADLE_VERIFICATION_REF_TARGET_PATH" - envman add --key GRADLE_VERIFICATION_REF_TARGET_PATH --value "$GRADLE_VERIFICATION_REF_TARGET_PATH" - - check_gradle_verification_reference: + - content: |- + set -exo pipefail + (./gradlew debug --configuration-cache --info --stacktrace 2>&1) | tee "$BITRISE_DEPLOY_DIR/logs.txt" + - script: + title: Check for cache invocations + inputs: + - content: "set -exo pipefail\n\n../scripts/check_pattern.sh \"$BITRISE_DEPLOY_DIR/logs.txt\" + \\\n 'Reusing configuration cache.' \\\n '\\[Bitrise Build Cache\\].*\U0001F916 + Bitrise remote cache enabled' \\\n '\\[Bitrise Build Cache\\].*Request + metadata invocationId' \\\n '\\[Bitrise Analytics\\].*\U0001F916 Bitrise + analytics enabled for tasks.*Invocation ID: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'" + - deploy-to-bitrise-io@2: {} + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + release: + description: Creates Linux and Darwin binaries, then publishes a GitHub release + triggers: + tag: + - name: + regex: ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ + envs: + - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN steps: + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - git-clone@8: + inputs: + - fetch_tags: "yes" - script@1: - title: Check if local updates to verification-metadata.xml are not commited + title: asdf use latest go inputs: - content: |- - set -x - - git update-index --refresh | grep "cmd/gradle/asset/verification-metadata.xml" - if [[ $? == 0 ]]; then - echo "Please manually commit the changes to the repo:" - echo "$GRADLE_VERIFICATION_REF_TARGET_PATH" - exit 1 - else - echo "The files have no unstaged changes: $GRADLE_VERIFICATION_REF_TARGET_PATH" - exit 0 - fi - generate_and_commit_dependency_matrix: - steps: + #!/usr/bin/env bash + + asdf install golang 1.24.3 + asdf global golang 1.24.3 - script: - run_if: ".IsCI" - title: Install pandoc + title: Install Goreleaser inputs: - content: | - #!/bin/bash + #!/usr/bin/env bash set -ex - - wget https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - tar xvzf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - sudo mv pandoc-$PANDOC_VERSION/bin/pandoc /usr/local/bin/ - - rm -rf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - rm -rf pandoc-$PANDOC_VERSION - - pandoc --version + + GOBIN=/usr/local/bin/ go install github.com/goreleaser/goreleaser/v2@latest + - bundle::generate_gradle_verification_reference: {} + - bundle::check_gradle_verification_reference: {} - script: - title: Install go versions + title: Goreleaser (create binaries + publish to GH) + deps: + brew: + - name: goreleaser inputs: - content: | - #!/bin/bash + #!/usr/bin/env bash set -ex - - asdf install golang 1.23.8 - asdf install golang 1.21.5 + + goreleaser release - script: - title: Generate dependency matrix + title: Authenticate to GCP inputs: - - content: | + - content: |- #!/bin/bash - set -ex - - bash ./scripts/generate-dependency-matrix.sh + set -euxo pipefail + KEY_FILE_PATH=$(mktemp -d)/keyfile.json + echo "${GAR_SERVICE_ACCOUNT_B64}" | base64 --decode > ${KEY_FILE_PATH} + gcloud auth activate-service-account --key-file=${KEY_FILE_PATH} - script: - title: Reformat dependency matrix + title: Upload release artifacts to GAR inputs: - - content: | - #!/bin/bash - set -ex - - pandoc --from=markdown --to=gfm --wrap=auto --output cleaned.md docs/dependency-matrix.md - mv cleaned.md docs/dependency-matrix.md + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + DIST_DIR="dist" + if [[ ! -d "$DIST_DIR" ]]; then + echo "Directory $DIST_DIR does not exist." + exit 1 + fi + tree -L 2 dist + + tag="${BITRISE_GIT_TAG#v}" # Remove the v from the tag + if [[ -z "$tag" ]]; then + echo "BITRISE_GIT_TAG is not set. Exiting." + exit 1 + fi + + echo "Uploading with tag: $tag" + + filenames=("bitrise-build-cache_${tag}_darwin_amd64.tar.gz" + "bitrise-build-cache_${tag}_linux_amd64.tar.gz" + "bitrise-build-cache_${tag}_darwin_arm64.tar.gz" + "bitrise-build-cache_${tag}_linux_arm64.tar.gz") + for filename in "${filenames[@]}"; do + if [[ ! -f "$DIST_DIR/$filename" ]]; then + echo "File $DIST_DIR/$filename does not exist." + exit 1 + fi + echo "Uploading $filename to GAR..." + + package_name="${filename/_${tag}/}" # Files will be versioned + + gcloud artifacts generic upload \ + --project=ip-build-cache-prod \ + --source="$DIST_DIR/$filename" \ + --package="$package_name" \ + --version="$tag" \ + --location=us-central1 \ + --repository=build-cache-cli-releases + done + + echo "Uploaded artifacts to GAR." + - deploy-to-bitrise-io@2: {} - script: - title: Commit dependency matrix + title: Update step inputs: - content: | - #!/bin/bash + #!/usr/bin/env bash set -ex - - git status - ls -l docs/dependency-matrix.md - git stash push -u -m "stash before switching to gh-pages" - - git fetch --all - git checkout gh-pages - - rm -f docs/dependency-matrix.md - git stash apply - - if [ ! -f docs/dependency-matrix.md ]; then - echo "No dependency matrix found, skipping commit." - exit -1 - fi - - if [ -n "$(git status --porcelain)" ]; then - echo "Changes detected, committing and pushing to gh-pages branch." - - git add docs/dependency-matrix.md - git diff --cached docs/dependency-matrix.md - - git commit -m "chore: update dependency matrix" - git push origin gh-pages - else - echo "No changes detected, skipping commit." - exit 0 - fi - feature-e2e-setup: + ./scripts/update_step.sh + - slack@4: + title: Send slack if PR opened + run_if: '{{ getenv "PR_URL" | ne "" }}' + inputs: + - channel: '#team-advanced-ci-alerts-website' + - text: |- + Build Cache for Gradle step update PR is ready! :tada: :rocket: :bitrise: + + Check PR here: $PR_URL + - emoji: ':gradle:' + - color: '#08a045' + - webhook_url: $SLACK_WEBHOOK_ALERTS + - slack@4: + title: Send slack if failed + run_if: .IsBuildFailed + inputs: + - channel: '#team-advanced-ci-alerts-website' + - text: |- + CLI release failed! :gopher_lift: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ':rotating_light:' + - color: '#ee003b' + - webhook_url: $SLACK_WEBHOOK_ALERTS + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + test: steps: - - activate-ssh-key: + - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - - script: - title: Clone e2e testing repo with deploy key - run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | ne ""}}' + - git-clone@8: {} + - go-list@1: {} + - script@1: + title: golangci-lint inputs: - content: |- #!/bin/bash set -ex - - mkdir -p ~/.ssh - echo "$SSH_DEPLOY_KEY_E2E_TESTING" > ~/.ssh/github_deploy_build_cache_e2e_testing - chmod 600 ~/.ssh/github_deploy_build_cache_e2e_testing - - ssh-add ~/.ssh/github_deploy_build_cache_e2e_testing - - mkdir -p ./_e2e - GIT_SSH_COMMAND='ssh -i ~/.ssh/github_deploy_build_cache_e2e_testing -o IdentitiesOnly=yes' git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e - - ls -la ./_e2e + make lint + - go-test@1: {} + - bundle::generate_gradle_verification_reference: {} + - bundle::check_gradle_verification_reference: {} + - deploy-to-bitrise-io@2: + inputs: + - deploy_path: $GRADLE_VERIFICATION_REF_TARGET_PATH + meta: + bitrise.io: + machine_type_id: g2.mac.medium + stack: osx-xcode-edge + update_plugins: + envs: + - GITHUB_TOKEN: $GIT_BOT_USER_ACCESS_TOKEN + steps: + - activate-ssh-key@4: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - git-clone@8: + inputs: + - fetch_tags: "yes" + - shallow_clone: "false" + - clone_depth: "-1" + - apt-get-install: + inputs: + - packages: libxml2-utils - script: - title: Clone e2e repo with existing SSH key - run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | eq ""}}' + title: Ensure we're on main inputs: - - content: |- + - content: | #!/bin/bash set -ex - - rm -rf ./_e2e - mkdir -p ./_e2e - git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e - - ls -la ./_e2e + + git fetch origin + if [[ "$BITRISE_GIT_BRANCH" != "main" ]]; then + git checkout main + git pull origin main + fi - script: - title: Delete _tmp dirs + title: Update plugins with latest version inputs: - - content: rm -rf _tmp + - content: | + bash ./scripts/update_plugins.sh + - bundle::generate_gradle_verification_reference: {} - script: - title: Delete DerivedData - inputs: - - content: rm -rf ~/Library/Developer/Xcode/DerivedData - - git::https://github.com/bitrise-steplib/bitrise-step-simple-git-clone.git: + title: Commit updated plugins and open PR inputs: - - repository_url: "$TEST_APP_URL" - - clone_into_dir: "./_tmp" - - branch: "$BRANCH" - - commit: "$COMMIT" - - git-clone: { } - - script: - title: build CLI + - content: | + set -ex + + # Check for existing PR with the same title + existing_pr=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls?state=open" | jq -r ".[] | select(.title == \"chore: Update Gradle plugins\") | .html_url") + + if [ -n "$existing_pr" ]; then + echo "A pull request with this title already exists: $existing_pr" + exit 0 + fi + + if [ -n "$(git status --porcelain)" ]; then + git branch -D update-plugins || true + git checkout -b update-plugins + + git add . + git commit -m "feat: update plugins to release" + git push -f origin update-plugins + + # Create a pull request using GitHub API + pr_response=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -d "{\"title\":\"chore: Update Gradle plugins\",\"body\":\"This PR updates the Gradle plugins.\",\"head\":\"update-plugins\",\"base\":\"main\"}" \ + "https://api.github.com/repos/bitrise-io/bitrise-build-cache-cli/pulls") + + pr_url=$(echo "$pr_response" | jq -r .html_url) + envman add --key PR_URL --value "$pr_url" + + if [ "$pr_url" != "null" ]; then + echo "Pull request created successfully: $pr_url" + else + echo "Failed to create pull request. Response: $pr_response" + exit 1 + fi + else + echo "No changes detected, skipping commit." + exit 0 + fi + - slack@4: + title: Send slack if PR opened + run_if: '{{ getenv "PR_URL" | ne "" }}' inputs: - - content: |- - set -exo pipefail - go build -o bitrise-build-cache-cli - - change-workdir: - title: Switch working dir to _tmp + - channel: '#team-advanced-ci-alerts-website' + - text: |- + Gradle plugin update PR is ready! :tada: :rocket: :gradle: + + Check PR here: $PR_URL + - emoji: ':gradle:' + - color: '#08a045' + - webhook_url: $SLACK_WEBHOOK_ALERTS + - slack@4: + title: Send slack if failed + run_if: .IsBuildFailed inputs: - - path: "./_tmp" + - channel: '#team-advanced-ci-alerts-website' + - text: |- + CLI plugin update failed! :gradle: :gopher_lift: :rotating_light: + + Check build here: $BITRISE_BUILD_URL + - emoji: ':rotating_light:' + - color: '#ee003b' + - webhook_url: $SLACK_WEBHOOK_ALERTS +step_bundles: benchmark-setup: inputs: - - REPO_URL: "$REPO_URL" - - BRANCH: "$BRANCH" - - USE_DD_CACHE: "$USE_DD_CACHE" - - USE_SPM: "$USE_SPM" - - USE_COMP_CACHE: "$USE_COMP_CACHE" - - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" + - REPO_URL: $REPO_URL + opts: {} + - BRANCH: $BRANCH + opts: {} + - USE_DD_CACHE: $USE_DD_CACHE + opts: {} + - USE_SPM: $USE_SPM + opts: {} + - USE_COMP_CACHE: $USE_COMP_CACHE + opts: {} + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + opts: {} steps: - activate-ssh-key: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' @@ -3168,7 +2996,7 @@ step_bundles: title: Clean _benchmark dir inputs: - content: rm -rf ./_benchmark - - git-clone: { } + - git-clone: {} - script: title: Build CLI run_if: '{{enveq "USE_COMP_CACHE" "true"}}' @@ -3204,25 +3032,17 @@ step_bundles: - restore-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - - verbose: true - - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' - benchmark_start_measure: - inputs: - - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" - steps: - - script: - title: Store action start time - inputs: - - content: |- - #!/usr/bin/env bash - set -eo pipefail - - envman add --key "${BENCHMARK_APP_NAME}_START" --value "$(date +%s)" + - verbose: true + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ + checksum "**/Package.resolved" }}' benchmark_finish: inputs: - - USE_DD_CACHE: "$USE_DD_CACHE" - - USE_SPM: "$USE_SPM" - - BENCHMARK_APP_NAME: "$BENCHMARK_APP_NAME" + - USE_DD_CACHE: $USE_DD_CACHE + opts: {} + - USE_SPM: $USE_SPM + opts: {} + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + opts: {} steps: - script: title: Store action end time @@ -3235,9 +3055,10 @@ step_bundles: - save-cache: run_if: '{{enveq "USE_SPM" "true"}}' inputs: - - verbose: true - - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' - - paths: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages + - verbose: true + - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ + checksum "**/Package.resolved" }}' + - paths: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages - git::https://github.com/bitrise-steplib/bitrise-step-save-xcodebuild-cache.git@main: run_if: '{{enveq "USE_DD_CACHE" "true"}}' inputs: @@ -3246,20 +3067,21 @@ step_bundles: - skip_spm: $USE_SPM - script: title: Save files + is_always_run: true inputs: - content: |- #!/usr/bin/env bash set -exo pipefail - + echo "BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH path: $BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" cp "$BITRISE_XCODE_BUILD_RAW_RESULT_TEXT_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_result.txt" || echo "No xcodebuild result file found" - + echo "BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH path: $BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" cp "$BITRISE_XCODEBUILD_BUILD_FOR_SIMULATOR_LOG_PATH" "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}_xcodebuild_simulator_log.txt" || echo "No xcodebuild simulator log file found" - + echo "BITRISE_XCRESULT_PATH path: $BITRISE_XCRESULT_PATH" tar -czf "$BITRISE_DEPLOY_DIR/${BENCHMARK_APP_NAME}.xcresult.tar.gz" -C "$BITRISE_XCRESULT_PATH" . || echo "No xcarchive files found" - + find "$HOME/Library/Developer/Xcode/DerivedData" -type d -name '*.xcbuilddata' -exec sh -c ' for dir do name=$(basename "$dir") @@ -3268,9 +3090,9 @@ step_bundles: tar -C "$dir" -czf "$dest" . done ' _ {} + - + find "$HOME/Library/Developer/Xcode/DerivedData" -type f -name '*.xcactivitylog' -exec cp {} "$BITRISE_DEPLOY_DIR/" \; - + tree -L 2 "$HOME/Library/Developer/Xcode/DerivedData" - deploy-to-bitrise-io: title: Upload logs to Bitrise @@ -3282,108 +3104,206 @@ step_bundles: - variables: |- ${BENCHMARK_APP_NAME}_END ${BENCHMARK_APP_NAME}_START + benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + opts: {} + steps: + - script: + title: Store action start time + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail -pipelines: - features-e2e: - workflows: - test: { } - feature-e2e-bazel-bitrisedc-no-rbe: { } - feature-e2e-bazel-public-no-rbe: { } - feature-e2e-gradle-duckduck: { } - feature-e2e-gradle-bitwarden: { } - gradle-configuration-e2e-osx: { } - gradle-configuration-e2e-linux: { } - e2e-xcode-comp-cache: { } - triggers: - pull_request: - - source_branch: "*" - push: - - branch: main - benchmark: - workflows: -# benchmark_vlc_build_baseline: { } -# benchmark_vlc_build_baseline_16_4: { } -# benchmark_vlc_build_spm: { } -# benchmark_vlc_build_spm_16_4: { } -# benchmark_vlc_build_cc: { } -# benchmark_vlc_build_cc_spm: { } - benchmark_sample_build_baseline: { } - benchmark_sample_build_spm: { } - benchmark_sample_build_spm_explicit: { } - benchmark_wordpress_build_baseline: { } - benchmark_wordpress_build_spm: { } - benchmark_wordpress_build_spm_invalidpackage: { } - benchmark_wordpress_build_spm_explicit: { } - benchmark_wordpress_build_cc: { } - # benchmark_wordpress_random_build_cc: { } - # benchmark_wordpress_random_build_baseline: { } - # benchmark_wordpress_build_cc_dd: {} - benchmark_wordpress_build_cc_spm: { } - # benchmark_wordpress_build_cc_dd_spm: {} - # benchmark_wordpress_analyze_baseline: { } - # benchmark_wordpress_analyze_spm: { } - #benchmark_wordpress_analyze_cc: { } - # benchmark_wordpress_analyze_cc_dd: {} - # benchmark_wordpress_analyze_cc_spm: { } - # benchmark_wordpress_analyze_cc_dd_spm: {} - # benchmark_tuist_build_baseline: { } - # benchmark_tuist_build_cc: { } - # benchmark_tuist_build_dd_cc: {} - # benchmark_tuist_build_spm_cc: { } - # benchmark_tuist_build_dd_spm_cc: {} - benchmark_calendar_build_baseline: { } - benchmark_calendar_build_baseline_16_4: { } - benchmark_calendar_build_spm: { } - benchmark_calendar_build_spm_16_4: { } - benchmark_calendar_build_spm_explicit: { } - benchmark_calendar_build_cc: { } - # benchmark_calendar_build_cc_dd: {} - benchmark_calendar_build_cc_spm: { } - # benchmark_calendar_build_cc_dd_spm: {} - # benchmark_icecubesapp_build_baseline: { } - # benchmark_icecubesapp_build_cc: { } - # benchmark_icecubesapp_build_cc_dd: {} - # benchmark_icecubesapp_build_cc_spm: { } - # benchmark_icecubesapp_build_cc_dd_spm: {} - benchmark_results: - depends_on: -# - benchmark_vlc_build_baseline -# - benchmark_vlc_build_baseline_16_4 -# - benchmark_vlc_build_spm -# - benchmark_vlc_build_spm_16_4 -# - benchmark_vlc_build_cc -# - benchmark_vlc_build_cc_spm - - benchmark_wordpress_build_baseline - - benchmark_wordpress_build_spm - - benchmark_wordpress_build_spm_explicit - - benchmark_wordpress_build_cc - #- benchmark_wordpress_random_build_cc - #- benchmark_wordpress_random_build_baseline - # - benchmark_wordpress_build_cc_dd - - benchmark_wordpress_build_cc_spm - # - benchmark_wordpress_build_cc_dd_spm - # - benchmark_wordpress_analyze_baseline - #- benchmark_wordpress_analyze_cc - # - benchmark_wordpress_analyze_spm - # - benchmark_wordpress_analyze_cc_dd - # - benchmark_wordpress_analyze_cc_spm - # - benchmark_wordpress_analyze_cc_dd_spm - # - benchmark_tuist_build_baseline - # - benchmark_tuist_build_cc - # - benchmark_tuist_build_dd_cc - # - benchmark_tuist_build_spm_cc - # - benchmark_tuist_build_dd_spm_cc - - benchmark_calendar_build_baseline - - benchmark_calendar_build_baseline_16_4 - - benchmark_calendar_build_spm - - benchmark_calendar_build_spm_16_4 - - benchmark_calendar_build_spm_explicit - - benchmark_calendar_build_cc - # - benchmark_calendar_build_cc_dd - - benchmark_calendar_build_cc_spm - # - benchmark_calendar_build_cc_dd_spm - # - benchmark_icecubesapp_build_baseline - # - benchmark_icecubesapp_build_cc - # - benchmark_icecubesapp_build_cc_dd - # - benchmark_icecubesapp_build_cc_spm - # - benchmark_icecubesapp_build_cc_dd_spm + envman add --key "${BENCHMARK_APP_NAME}_START" --value "$(date +%s)" + check_gradle_verification_reference: + steps: + - script@1: + title: Check if local updates to verification-metadata.xml are not commited + inputs: + - content: |- + set -x + + git update-index --refresh | grep "cmd/gradle/asset/verification-metadata.xml" + if [[ $? == 0 ]]; then + echo "Please manually commit the changes to the repo:" + echo "$GRADLE_VERIFICATION_REF_TARGET_PATH" + exit 1 + else + echo "The files have no unstaged changes: $GRADLE_VERIFICATION_REF_TARGET_PATH" + exit 0 + fi + feature-e2e-setup: + steps: + - activate-ssh-key: + run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' + - script: + title: Clone e2e testing repo with deploy key + run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | ne ""}}' + inputs: + - content: |- + #!/bin/bash + set -ex + + mkdir -p ~/.ssh + echo "$SSH_DEPLOY_KEY_E2E_TESTING" > ~/.ssh/github_deploy_build_cache_e2e_testing + chmod 600 ~/.ssh/github_deploy_build_cache_e2e_testing + + ssh-add ~/.ssh/github_deploy_build_cache_e2e_testing + + mkdir -p ./_e2e + GIT_SSH_COMMAND='ssh -i ~/.ssh/github_deploy_build_cache_e2e_testing -o IdentitiesOnly=yes' git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e + + ls -la ./_e2e + - script: + title: Clone e2e repo with existing SSH key + run_if: '{{getenv "SSH_DEPLOY_KEY_E2E_TESTING" | eq ""}}' + inputs: + - content: |- + #!/bin/bash + set -ex + + rm -rf ./_e2e + mkdir -p ./_e2e + git clone git@github.com:bitrise-io/build-cache-e2e-testing.git ./_e2e + + ls -la ./_e2e + - script: + title: Delete _tmp dirs + inputs: + - content: rm -rf _tmp + - script: + title: Delete DerivedData + inputs: + - content: rm -rf ~/Library/Developer/Xcode/DerivedData + - git::https://github.com/bitrise-steplib/bitrise-step-simple-git-clone.git: + inputs: + - repository_url: $TEST_APP_URL + - clone_into_dir: ./_tmp + - branch: $BRANCH + - commit: $COMMIT + - git-clone: {} + - script: + title: build CLI + inputs: + - content: |- + set -exo pipefail + go build -o bitrise-build-cache-cli + - change-workdir: + title: Switch working dir to _tmp + inputs: + - path: ./_tmp + generate_and_commit_dependency_matrix: + steps: + - script: + title: Install pandoc + run_if: .IsCI + inputs: + - content: | + #!/bin/bash + set -ex + + wget https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + tar xvzf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + sudo mv pandoc-$PANDOC_VERSION/bin/pandoc /usr/local/bin/ + + rm -rf pandoc-$PANDOC_VERSION-linux-amd64.tar.gz + rm -rf pandoc-$PANDOC_VERSION + + pandoc --version + - script: + title: Install go versions + inputs: + - content: | + #!/bin/bash + set -ex + + asdf install golang 1.23.8 + asdf install golang 1.21.5 + - script: + title: Generate dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + bash ./scripts/generate-dependency-matrix.sh + - script: + title: Reformat dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + pandoc --from=markdown --to=gfm --wrap=auto --output cleaned.md docs/dependency-matrix.md + mv cleaned.md docs/dependency-matrix.md + - script: + title: Commit dependency matrix + inputs: + - content: | + #!/bin/bash + set -ex + + git status + ls -l docs/dependency-matrix.md + git stash push -u -m "stash before switching to gh-pages" + + git fetch --all + git checkout gh-pages + + rm -f docs/dependency-matrix.md + git stash apply + + if [ ! -f docs/dependency-matrix.md ]; then + echo "No dependency matrix found, skipping commit." + exit -1 + fi + + if [ -n "$(git status --porcelain)" ]; then + echo "Changes detected, committing and pushing to gh-pages branch." + + git add docs/dependency-matrix.md + git diff --cached docs/dependency-matrix.md + + git commit -m "chore: update dependency matrix" + git push origin gh-pages + else + echo "No changes detected, skipping commit." + exit 0 + fi + generate_gradle_verification_reference: + steps: + - script: + title: Generate Gradle verification reference + inputs: + - content: | + #!/bin/bash + set -ex + + # Backup $HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts + GRADLE_INIT_PATH=$HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts + if [[ -f "$GRADLE_INIT_PATH" ]]; then + mv $GRADLE_INIT_PATH $GRADLE_INIT_PATH.backup + fi + + go build -o /tmp/bin/bitrise-build-cache-cli + + SAMPLE_PATH=$(realpath ./gradle_verification_sample) + GRADLE_VERIFICATION_REF_PATH=$SAMPLE_PATH/gradle/verification-metadata.xml + GRADLE_VERIFICATION_REF_TARGET_PATH=$(realpath ./cmd/gradle/asset/verification-metadata.xml) + + # add plugin with CLI + cd "$SAMPLE_PATH" + /tmp/bin/bitrise-build-cache-cli gradle-verification add-reference-deps + + # generate xml + rm -f "$SAMPLE_PATH/gradle/verification-metadata.xml" + ./gradlew --write-verification-metadata sha256 help + + cat $GRADLE_VERIFICATION_REF_PATH + echo "Generated verification xml: $GRADLE_VERIFICATION_REF_PATH" + + # Copy metadata to be included in the CLI binary + mv -f "$GRADLE_VERIFICATION_REF_PATH" "$GRADLE_VERIFICATION_REF_TARGET_PATH" + envman add --key GRADLE_VERIFICATION_REF_TARGET_PATH --value "$GRADLE_VERIFICATION_REF_TARGET_PATH" From 2e6e4be5f12d362c529f3b145d16b21babe9e6b5 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 10:32:07 +0200 Subject: [PATCH 080/116] feat: try restoring calendar SPM too --- bitrise.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 9f7f6480..54fe402b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1945,8 +1945,14 @@ workflows: - USE_SPM: $USE_SPM - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - restore-cache: + inputs: + - verbose: "true" + - cache_key: |- + darwin-arm64-spm-cache-Calendar_SPM-d6959daf9600d314a4772fa8f098060a37666a98a1f67605e18ce0294c82ab43 - script: title: Remove alamofire to make SPM invalid + run_if: 'false' inputs: - content: |- #!/usr/bin/env bash @@ -2067,6 +2073,16 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies + + for sp in ~/Library/Developer/Xcode/DerivedData/*/SourcePackages; do + [ -d "$sp" ] || continue + echo "=== $sp ===" + if command -v tree >/dev/null 2>&1; then + tree -L 2 "$sp" + else + ls -la "$sp" + fi + done - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -3035,6 +3051,23 @@ step_bundles: - verbose: true - key: '{{ .OS }}-{{ .Arch }}-spm-cache-{{ getenv "BENCHMARK_APP_NAME" }}-{{ checksum "**/Package.resolved" }}' + - script: + title: "Print SourcePackages dir (if SPM is used)" + run_if: '{{enveq "USE_SPM" "true"}}' + inputs: + - content: |- + #!/usr/bin/env bash + set -eo pipefail + + for sp in ~/Library/Developer/Xcode/DerivedData/*/SourcePackages; do + [ -d "$sp" ] || continue + echo "=== $sp ===" + if command -v tree >/dev/null 2>&1; then + tree -L 2 "$sp" + else + ls -la "$sp" + fi + done benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE From 637e963e5af644f2c61fd7dc234a733841bfdb45 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 10:34:05 +0200 Subject: [PATCH 081/116] feat: try restoring calendar SPM too --- bitrise.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 54fe402b..33f16473 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1948,8 +1948,7 @@ workflows: - restore-cache: inputs: - verbose: "true" - - cache_key: |- - darwin-arm64-spm-cache-Calendar_SPM-d6959daf9600d314a4772fa8f098060a37666a98a1f67605e18ce0294c82ab43 + - key: 'darwin-arm64-spm-cache-Calendar_SPM-d6959daf9600d314a4772fa8f098060a37666a98a1f67605e18ce0294c82ab43' - script: title: Remove alamofire to make SPM invalid run_if: 'false' From b9d3864b74328d3b37db2b392874c30df8156b77 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 10:52:27 +0200 Subject: [PATCH 082/116] feat: print SourcePackages --- bitrise.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 33f16473..da08e6d4 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2072,16 +2072,21 @@ workflows: mv WordPress/Credentials/Secrets-example.swift WordPress/Credentials/Secrets.swift mkdir -p ~/DerivedData/Wordpress rake dependencies - - for sp in ~/Library/Developer/Xcode/DerivedData/*/SourcePackages; do - [ -d "$sp" ] || continue - echo "=== $sp ===" - if command -v tree >/dev/null 2>&1; then - tree -L 2 "$sp" - else - ls -la "$sp" - fi - done + - script: + title: Print SourcePackages + inputs: + - content: |- + for sp in ~/Library/Developer/Xcode/DerivedData/*/SourcePackages; do + [ -d "$sp" ] || continue + echo "=== $sp ===" + if command -v tree >/dev/null 2>&1; then + tree -L 2 "$sp" + else + ls -la "$sp" + fi + + cat "$sp/workspace-state.json" | jq '{dependencies: [.object.dependencies[].subpath],artifacts: [.object.artifacts[].targetName]}' + done - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 937c9985bea0789bbf274edb9c6e538a5ef98914 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 11:10:52 +0200 Subject: [PATCH 083/116] feat: restore explicit spm --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index da08e6d4..e0ba76dd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1948,7 +1948,7 @@ workflows: - restore-cache: inputs: - verbose: "true" - - key: 'darwin-arm64-spm-cache-Calendar_SPM-d6959daf9600d314a4772fa8f098060a37666a98a1f67605e18ce0294c82ab43' + - key: 'darwin-arm64-spm-cache-WordPress_Explicit_SPM-ad8a2f69b293638b5ad9118881681f7a94a6dfb0b3f68de7c5210f26929bc400' - script: title: Remove alamofire to make SPM invalid run_if: 'false' From 581d692745dcf7fca02b4900d8677fc28fa7009c Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 11:12:22 +0200 Subject: [PATCH 084/116] feat: sha1sum --- bitrise.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index e0ba76dd..aa59cde2 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2079,12 +2079,9 @@ workflows: for sp in ~/Library/Developer/Xcode/DerivedData/*/SourcePackages; do [ -d "$sp" ] || continue echo "=== $sp ===" - if command -v tree >/dev/null 2>&1; then - tree -L 2 "$sp" - else - ls -la "$sp" - fi - + tree -L 2 "$sp" + ls -hal "$sp" + echo "workspace state sha1: $(cat "$sp/workspace-state.json" | sha1sum)" cat "$sp/workspace-state.json" | jq '{dependencies: [.object.dependencies[].subpath],artifacts: [.object.artifacts[].targetName]}' done - bundle::benchmark_start_measure: From 055fd0a4837f4aebcaa59251c76a27d2a02063d9 Mon Sep 17 00:00:00 2001 From: zsolt-marta-bitrise Date: Fri, 3 Oct 2025 11:30:32 +0200 Subject: [PATCH 085/116] feat: remove package too --- bitrise.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index aa59cde2..f06e9c79 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1951,7 +1951,6 @@ workflows: - key: 'darwin-arm64-spm-cache-WordPress_Explicit_SPM-ad8a2f69b293638b5ad9118881681f7a94a6dfb0b3f68de7c5210f26929bc400' - script: title: Remove alamofire to make SPM invalid - run_if: 'false' inputs: - content: |- #!/usr/bin/env bash From 54c7ca8421e316ad701a267e6380628cb5ad5af3 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:03:03 +0200 Subject: [PATCH 086/116] feat: Add doddle Flutter app --- bitrise.yml | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index f06e9c79..e0e0f18e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2217,6 +2217,44 @@ workflows: bitrise.io: machine_type_id: g2.mac.large stack: osx-xcode-26.0.x-edge + benchmark_doddle_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: WordPress + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/NaserElziadna/doddle.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - SILENT: "true" + - script: + title: Install dependencies + inputs: + - content: |- + flutter pub get + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Build + inputs: + - content: |- + flutter build ios --debug --no-codesign + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge e2e-xcode-comp-cache: envs: - TEST_APP_URL: git@github.com:bitrise-io/swift-composable-architecture.git @@ -3001,6 +3039,8 @@ step_bundles: opts: {} - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME opts: {} + - SILENT: false + opts: { } steps: - activate-ssh-key: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' @@ -3028,7 +3068,7 @@ step_bundles: #!/usr/bin/env bash set -eo pipefail - ./bitrise-build-cache-cli activate xcode --cache + ./bitrise-build-cache-cli activate xcode --cache --silent=${SILENT} - script: title: Git clone benchmark app inputs: From f41196be8d524bcffc24f1db502b53690be0a6ba Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:19:27 +0200 Subject: [PATCH 087/116] fix: Fix Podfile --- bitrise.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index e0e0f18e..627953b9 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2238,6 +2238,8 @@ workflows: inputs: - content: |- flutter pub get + sed -i '' "s/^#\s*platform :ios.*$/platform :ios, '13.0'/" ios/Podfile + sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 0c05a1d8349569b4e87f335b597e992d84842b4e Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:23:08 +0200 Subject: [PATCH 088/116] fix: Fix Podfile --- bitrise.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 627953b9..dbbdb9ce 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2240,6 +2240,8 @@ workflows: flutter pub get sed -i '' "s/^#\s*platform :ios.*$/platform :ios, '13.0'/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile + + cat ios/Podfile - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 2385c30c048b9709f5502b84940df10544060b82 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:26:47 +0200 Subject: [PATCH 089/116] fix: Fix Podfile --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index dbbdb9ce..be4bafad 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2238,7 +2238,7 @@ workflows: inputs: - content: |- flutter pub get - sed -i '' "s/^#\s*platform :ios.*$/platform :ios, '13.0'/" ios/Podfile + sed -i '' "s/^#\s*\(platform :ios.*\)/\1/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile cat ios/Podfile From c6a4acb0b19e27078a5124b2e0a4da7263943d50 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:28:56 +0200 Subject: [PATCH 090/116] fix: Fix Podfile --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index be4bafad..a6034615 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2241,7 +2241,7 @@ workflows: sed -i '' "s/^#\s*\(platform :ios.*\)/\1/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile - cat ios/Podfile + sed -n '1,40p' ios/Podfile - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 73b00406eabbd64c63cebee55d1b606233dfdb1f Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:35:17 +0200 Subject: [PATCH 091/116] fix: Fix Podfile --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index a6034615..ee5248ef 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2238,7 +2238,7 @@ workflows: inputs: - content: |- flutter pub get - sed -i '' "s/^#\s*\(platform :ios.*\)/\1/" ios/Podfile + sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/\1/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile sed -n '1,40p' ios/Podfile From 4c240e580101d39164ceb31a85f9b5e9c57beb00 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:38:28 +0200 Subject: [PATCH 092/116] fix: Fix Podfile --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index ee5248ef..e5f0f396 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2238,7 +2238,7 @@ workflows: inputs: - content: |- flutter pub get - sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/\1/" ios/Podfile + sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile sed -n '1,40p' ios/Podfile From ddd1f42c0275d79183f32b92b253c3cbd38f4560 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:43:17 +0200 Subject: [PATCH 093/116] fix: manual pod install --- bitrise.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index e5f0f396..3030e6fa 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2242,6 +2242,10 @@ workflows: sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile sed -n '1,40p' ios/Podfile + + pushd ios + pod install --repo-update + popd - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From af0c76e471856a4fed3c491b36318374401e5370 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 14:55:43 +0200 Subject: [PATCH 094/116] fix: modular headers --- bitrise.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 3030e6fa..f5e90fe8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2240,7 +2240,9 @@ workflows: flutter pub get sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile - + sed -i '' "/^platform :ios/ a\\ + use_modular_headers! + " ios/Podfile sed -n '1,40p' ios/Podfile pushd ios From 911d630aff0abf36ffc5c0e20dc19c9c917c5d02 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Wed, 15 Oct 2025 15:07:08 +0200 Subject: [PATCH 095/116] fix: pod clean --- bitrise.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index f5e90fe8..1e0643a0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2246,6 +2246,9 @@ workflows: sed -n '1,40p' ios/Podfile pushd ios + rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace + pod cache clean --all + pod deintegrate || true pod install --repo-update popd - bundle::benchmark_start_measure: From d3614248ac1cb1565b4ff190a00edc46e1e4ed8e Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 13:07:53 +0200 Subject: [PATCH 096/116] fix: upgrade flutter and ruby --- bitrise.yml | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 1e0643a0..6b44f82d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2237,20 +2237,25 @@ workflows: title: Install dependencies inputs: - content: |- + asdf install ruby 3.4.6 + asdf global ruby 3.4.6 + flutter upgrade + gem install cocoapods + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get - sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile - sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile - sed -i '' "/^platform :ios/ a\\ - use_modular_headers! - " ios/Podfile - sed -n '1,40p' ios/Podfile - - pushd ios - rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace - pod cache clean --all - pod deintegrate || true - pod install --repo-update - popd +# sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile +# sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile +# sed -i '' "/^platform :ios/ a\\ +# use_modular_headers! +# " ios/Podfile +# sed -n '1,40p' ios/Podfile +# +# pushd ios +# rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace +# pod cache clean --all +# pod deintegrate || true +# pod install --repo-update +# popd - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 2dae868568fe2af0f4940f3f99d4a16189d0e9b7 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 19:39:28 +0200 Subject: [PATCH 097/116] feat: Fluffychat --- bitrise.yml | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 6b44f82d..458ae24e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2273,6 +2273,63 @@ workflows: bitrise.io: machine_type_id: g2.mac.large stack: osx-xcode-26.0.x-edge + benchmark_fluffychat_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: FluffyChat + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/krille-chan/fluffychat.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - SILENT: "true" + - script: + title: Install dependencies + inputs: + - content: |- + #!/bin/bash + + flutter pub get + + cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils --silent ios/Podfile + diff --git a/ios/Podfile b/ios/Podfile + index 9411102b..0446120a 100644 + --- a/ios/Podfile + +++ b/ios/Podfile + @@ -37,5 +37,8 @@ end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + + target.build_configurations.each do |config| + + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + + end + end + end + EOPATCH + rm -f apple_please_fix_your_coreutils + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Build + inputs: + - content: |- + flutter build ipa -v --debug --no-codesign + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge e2e-xcode-comp-cache: envs: - TEST_APP_URL: git@github.com:bitrise-io/swift-composable-architecture.git From 234a364af04cfeb170da554e9276188135809be0 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 19:47:31 +0200 Subject: [PATCH 098/116] feat: RustDesk --- bitrise.yml | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 458ae24e..9afc1867 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2297,7 +2297,7 @@ workflows: flutter pub get - cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils --silent ios/Podfile + cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils ios/Podfile diff --git a/ios/Podfile b/ios/Podfile index 9411102b..0446120a 100644 --- a/ios/Podfile @@ -2313,6 +2313,69 @@ workflows: end EOPATCH rm -f apple_please_fix_your_coreutils + + cat ios/Podfile + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Build + inputs: + - content: |- + flutter build ipa -v --debug --no-codesign + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_rustdesk_build_baseline: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "false" + - BENCHMARK_APP_NAME: RustDesk + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/rustdesk/rustdesk.git + - BRANCH: master + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - SILENT: "true" + - change-workdir: + inputs: + - path: flutter + - script: + title: Install dependencies + inputs: + - content: |- + #!/bin/bash + + flutter pub get + + cat << EOPATCH | patch --forward ios/Podfile + diff --git a/ios/Podfile b/ios/Podfile + index 9411102b..0446120a 100644 + --- a/ios/Podfile + +++ b/ios/Podfile + @@ -37,5 +37,8 @@ end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + + target.build_configurations.each do |config| + + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + + end + end + end + EOPATCH + + cat ios/Podfile - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 1729b5874cc1349adad32b3168b473010766ed9f Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 19:56:50 +0200 Subject: [PATCH 099/116] fix: Use cargo build --- bitrise.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 9afc1867..c60c591a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2348,18 +2348,18 @@ workflows: - USE_COMP_CACHE: $USE_COMP_CACHE - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME - SILENT: "true" - - change-workdir: - inputs: - - path: flutter +# - change-workdir: +# inputs: +# - path: flutter - script: title: Install dependencies inputs: - content: |- #!/bin/bash - flutter pub get +# flutter pub get - cat << EOPATCH | patch --forward ios/Podfile + cat << EOPATCH | patch --forward flutter/ios/Podfile diff --git a/ios/Podfile b/ios/Podfile index 9411102b..0446120a 100644 --- a/ios/Podfile @@ -2375,7 +2375,7 @@ workflows: end EOPATCH - cat ios/Podfile + cat flutter/ios/Podfile - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME @@ -2383,7 +2383,7 @@ workflows: title: Build inputs: - content: |- - flutter build ipa -v --debug --no-codesign + cargo build --features flutter,hwcodec --target aarch64-apple-ios --lib - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -3214,7 +3214,7 @@ step_bundles: #!/usr/bin/env bash set -eo pipefail - git clone --depth 30 $REPO_URL -b $BRANCH ./_benchmark/$BENCHMARK_APP_NAME + git clone --recurse-submodules --depth 30 $REPO_URL -b $BRANCH ./_benchmark/$BENCHMARK_APP_NAME - change-workdir: title: Switch working dir to _benchmark inputs: From 9b6e32edc026fd0d69934c47bac58dc2411a2064 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 19:58:52 +0200 Subject: [PATCH 100/116] fix: Use cargo build --- bitrise.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index c60c591a..23e2df4d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2356,9 +2356,7 @@ workflows: inputs: - content: |- #!/bin/bash - -# flutter pub get - + cat << EOPATCH | patch --forward flutter/ios/Podfile diff --git a/ios/Podfile b/ios/Podfile index 9411102b..0446120a 100644 From 01eaf46270da2b47da0b291d3513ec8992ce844b Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:00:07 +0200 Subject: [PATCH 101/116] fix: Install latest rust and flutter --- bitrise.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 23e2df4d..ff61d13c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2295,6 +2295,10 @@ workflows: - content: |- #!/bin/bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + export PATH="$HOME/.cargo/bin:$PATH" + + flutter upgrade flutter pub get cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils ios/Podfile From eb96a3c65936767cef64fd987693c6128ac6fa0f Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:00:58 +0200 Subject: [PATCH 102/116] fix: Install latest rust and flutter --- bitrise.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index ff61d13c..ae41f36e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2361,6 +2361,10 @@ workflows: - content: |- #!/bin/bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + export PATH="$HOME/.cargo/bin:$PATH" + flutter upgrade + cat << EOPATCH | patch --forward flutter/ios/Podfile diff --git a/ios/Podfile b/ios/Podfile index 9411102b..0446120a 100644 From a8a77d7720c50686dd8d6501bb135cdd687e47af Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:09:47 +0200 Subject: [PATCH 103/116] fix: remove deployment target rewrite --- bitrise.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index ae41f36e..375afc69 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2318,6 +2318,9 @@ workflows: EOPATCH rm -f apple_please_fix_your_coreutils + # BSD sed example with flexible whitespace + sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" flutter/ios/Podfile + cat ios/Podfile - bundle::benchmark_start_measure: inputs: @@ -2380,6 +2383,9 @@ workflows: end end EOPATCH + + # BSD sed example with flexible whitespace + sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" flutter/ios/Podfile cat flutter/ios/Podfile - bundle::benchmark_start_measure: From 2d227d21886673ff191c9747b87480e3f977ab71 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:20:09 +0200 Subject: [PATCH 104/116] fix: envman --- bitrise.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 375afc69..9d9a5158 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2297,6 +2297,7 @@ workflows: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh export PATH="$HOME/.cargo/bin:$PATH" + envman add --key PATH --value "$PATH" flutter upgrade flutter pub get @@ -2318,8 +2319,11 @@ workflows: EOPATCH rm -f apple_please_fix_your_coreutils - # BSD sed example with flexible whitespace - sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" flutter/ios/Podfile + cat << EOPATCH | patch --forward ios/Podfile + *** Podfile + @@ + - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + EOPATCH cat ios/Podfile - bundle::benchmark_start_measure: @@ -2366,6 +2370,7 @@ workflows: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh export PATH="$HOME/.cargo/bin:$PATH" + envman add --key PATH --value "$PATH" flutter upgrade cat << EOPATCH | patch --forward flutter/ios/Podfile @@ -2384,8 +2389,11 @@ workflows: end EOPATCH - # BSD sed example with flexible whitespace - sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" flutter/ios/Podfile + cat << EOPATCH | patch --forward flutter/ios/Podfile + *** Podfile + @@ + - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + EOPATCH cat flutter/ios/Podfile - bundle::benchmark_start_measure: From cfa6ae6e7729f68363ae7650c767273995f8699c Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:26:49 +0200 Subject: [PATCH 105/116] fix: accept --- bitrise.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 9d9a5158..2f57d2a1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2294,8 +2294,9 @@ workflows: inputs: - content: |- #!/bin/bash + set -exo pipefail - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" envman add --key PATH --value "$PATH" @@ -2367,8 +2368,9 @@ workflows: inputs: - content: |- #!/bin/bash + set -exo pipefail - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" envman add --key PATH --value "$PATH" flutter upgrade From 74bb12410c52ec5cfe4ef0cd43d22dfd45acd7d5 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:36:58 +0200 Subject: [PATCH 106/116] fix: use sed --- bitrise.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 2f57d2a1..7cf5a1ac 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2320,11 +2320,7 @@ workflows: EOPATCH rm -f apple_please_fix_your_coreutils - cat << EOPATCH | patch --forward ios/Podfile - *** Podfile - @@ - - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' - EOPATCH + sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" ios/Podfile cat ios/Podfile - bundle::benchmark_start_measure: @@ -2391,11 +2387,7 @@ workflows: end EOPATCH - cat << EOPATCH | patch --forward flutter/ios/Podfile - *** Podfile - @@ - - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' - EOPATCH + sed -i '' "/config\.build_settings\[[[:space:]]*'IPHONEOS_DEPLOYMENT_TARGET'[[:space:]]*\][[:space:]]*=[[:space:]]*'11\.0'/d" flutter/ios/Podfile cat flutter/ios/Podfile - bundle::benchmark_start_measure: From 06cfb4ef747ef803760023d24bccf2bd60fa445a Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 20:49:48 +0200 Subject: [PATCH 107/116] fix: rustup --- bitrise.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 7cf5a1ac..93428b98 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2299,6 +2299,7 @@ workflows: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" envman add --key PATH --value "$PATH" + rustup target add aarch64-apple-ios flutter upgrade flutter pub get @@ -2369,6 +2370,7 @@ workflows: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y export PATH="$HOME/.cargo/bin:$PATH" envman add --key PATH --value "$PATH" + rustup target add aarch64-apple-ios flutter upgrade cat << EOPATCH | patch --forward flutter/ios/Podfile From d63922ffe7f8025986ead79f89bf778f942684c9 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Thu, 16 Oct 2025 21:02:37 +0200 Subject: [PATCH 108/116] fix: tail --- bitrise.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 93428b98..0182eec8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2331,7 +2331,8 @@ workflows: title: Build inputs: - content: |- - flutter build ipa -v --debug --no-codesign + flutter build ipa -v --debug --no-codesign &> $BITRISE_DEPLOY_DIR/build.log + tail -n 300 $BITRISE_DEPLOY_DIR/build.log - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE @@ -2399,7 +2400,8 @@ workflows: title: Build inputs: - content: |- - cargo build --features flutter,hwcodec --target aarch64-apple-ios --lib + cargo build --features flutter,hwcodec --target aarch64-apple-ios --lib &> $BITRISE_DEPLOY_DIR/rustdesk_build.log + tail -n 100 $BITRISE_DEPLOY_DIR/rustdesk_build.log - bundle::benchmark_finish: inputs: - USE_DD_CACHE: $USE_DD_CACHE From 51f4e6ac550e378d55f3847a2045220eaf86cc43 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 09:53:40 +0200 Subject: [PATCH 109/116] fix: remove deployment target --- bitrise.yml | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 0182eec8..bb1d6698 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2243,19 +2243,31 @@ workflows: gem install cocoapods curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get -# sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile -# sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile -# sed -i '' "/^platform :ios/ a\\ -# use_modular_headers! -# " ios/Podfile -# sed -n '1,40p' ios/Podfile -# -# pushd ios -# rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace -# pod cache clean --all -# pod deintegrate || true -# pod install --repo-update -# popd + sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile + sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile + sed -i '' "/^platform :ios/ a\\ + use_modular_headers! + " ios/Podfile + + + sed -i '' -e '/flutter_additional_ios_build_settings(target)/{ + N + /config.build_settings.delete.*IPHONEOS_DEPLOYMENT_TARGET/!{ + a\ + target.build_configurations.each do |config|\ + config.build_settings.delete '\''IPHONEOS_DEPLOYMENT_TARGET'\''\ + end + } + }' ios/Podfile + + sed -n '1,40p' ios/Podfile + + pushd ios + rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace + pod cache clean --all + pod deintegrate || true + pod install --repo-update + popd - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From e6d1f49a779b2766eaf59b3a70ded6c7fcc20115 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:21:43 +0200 Subject: [PATCH 110/116] fix: patchfile --- bitrise.yml | 61 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index bb1d6698..a335e6fb 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2237,37 +2237,46 @@ workflows: title: Install dependencies inputs: - content: |- - asdf install ruby 3.4.6 - asdf global ruby 3.4.6 - flutter upgrade + # asdf install ruby 3.4.6 + # asdf global ruby 3.4.6 + # flutter upgrade gem install cocoapods curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get - sed -i '' "s/^#[[:space:]]*\(platform :ios.*\)/platform :ios, '13.0'/" ios/Podfile - sed -i '' "/^[[:space:]]*target 'RunnerTests' do/,/^[[:space:]]*end/ d" ios/Podfile - sed -i '' "/^platform :ios/ a\\ - use_modular_headers! - " ios/Podfile - - sed -i '' -e '/flutter_additional_ios_build_settings(target)/{ - N - /config.build_settings.delete.*IPHONEOS_DEPLOYMENT_TARGET/!{ - a\ - target.build_configurations.each do |config|\ - config.build_settings.delete '\''IPHONEOS_DEPLOYMENT_TARGET'\''\ - end - } - }' ios/Podfile + cat << EOPATCH | patch ios/Podfile + diff --git a/ios/Podfile b/ios/Podfile + index 2dbf7d7..8e19882 100644 + --- a/ios/Podfile + +++ b/ios/Podfile + @@ -31,13 +31,13 @@ target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + - target 'RunnerTests' do + - inherit! :search_paths + - end + end - sed -n '1,40p' ios/Podfile - - pushd ios - rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace - pod cache clean --all - pod deintegrate || true - pod install --repo-update - popd + + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + + target.build_configurations.each do |config| + + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + + end + end + end + EOPATCH + + cat ios/Podfile + +# pushd ios +# rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace +# pod cache clean --all +# pod deintegrate || true +# pod install --repo-update +# popd - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 4d3f1f6b5236d50ff833081efdc3784d28c19f2a Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:23:58 +0200 Subject: [PATCH 111/116] fix: flutter upgrade --- bitrise.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index a335e6fb..d5816fc1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2237,9 +2237,9 @@ workflows: title: Install dependencies inputs: - content: |- - # asdf install ruby 3.4.6 - # asdf global ruby 3.4.6 - # flutter upgrade + asdf install ruby 3.4.6 + asdf global ruby 3.4.6 + flutter upgrade gem install cocoapods curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get From d655678b8527a79d670a1acc89d037a69fd41ea3 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:36:25 +0200 Subject: [PATCH 112/116] fix: cat --- bitrise.yml | 58 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index d5816fc1..e4edfac0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2244,32 +2244,42 @@ workflows: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get - cat << EOPATCH | patch ios/Podfile - diff --git a/ios/Podfile b/ios/Podfile - index 2dbf7d7..8e19882 100644 - --- a/ios/Podfile - +++ b/ios/Podfile - @@ -31,13 +31,13 @@ target 'Runner' do - use_frameworks! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - - target 'RunnerTests' do - - inherit! :search_paths - - end - end + cat < ios/Podfile - - post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - + target.build_configurations.each do |config| - + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' - + end - end - end - EOPATCH + platform :ios, '13.0' + # CocoaPods analytics sends network stats synchronously affecting flutter build latency. + ENV['COCOAPODS_DISABLE_STATS'] = 'true' + project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, + } + def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" + end + require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + flutter_ios_podfile_setup + target 'Runner' do + use_frameworks! + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + end + end + end - cat ios/Podfile # pushd ios # rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace From ac32218b24d257f4e85af395ca250dc021af0085 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:39:31 +0200 Subject: [PATCH 113/116] fix: EOF --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index e4edfac0..502e6f11 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2279,7 +2279,7 @@ workflows: end end end - + EOF # pushd ios # rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace From 8cd68099705f679381b41f2c3473db7d20023d53 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:51:03 +0200 Subject: [PATCH 114/116] Try without upgrade --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 502e6f11..05cd32bd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2239,7 +2239,7 @@ workflows: - content: |- asdf install ruby 3.4.6 asdf global ruby 3.4.6 - flutter upgrade + # flutter upgrade gem install cocoapods curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh flutter pub get From 9b7553a31f957c50b24c552b90401094b9041f0c Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 10:58:52 +0200 Subject: [PATCH 115/116] feat: Benchmark doddle --- bitrise.yml | 120 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 85 insertions(+), 35 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 05cd32bd..d92d5331 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -15,36 +15,12 @@ meta: pipelines: benchmark: workflows: - benchmark_calendar_build_baseline: {} - benchmark_calendar_build_baseline_16_4: {} - benchmark_calendar_build_cc: {} - benchmark_calendar_build_cc_spm: {} - benchmark_calendar_build_spm: {} - benchmark_calendar_build_spm_16_4: {} - benchmark_calendar_build_spm_explicit: {} + benchmark_doddle_build_baseline: {} + benchmark_doddle_build_cc: {} benchmark_results: depends_on: - - benchmark_wordpress_build_baseline - - benchmark_wordpress_build_spm - - benchmark_wordpress_build_spm_explicit - - benchmark_wordpress_build_cc - - benchmark_wordpress_build_cc_spm - - benchmark_calendar_build_baseline - - benchmark_calendar_build_baseline_16_4 - - benchmark_calendar_build_spm - - benchmark_calendar_build_spm_16_4 - - benchmark_calendar_build_spm_explicit - - benchmark_calendar_build_cc - - benchmark_calendar_build_cc_spm - benchmark_sample_build_baseline: {} - benchmark_sample_build_spm: {} - benchmark_sample_build_spm_explicit: {} - benchmark_wordpress_build_baseline: {} - benchmark_wordpress_build_cc: {} - benchmark_wordpress_build_cc_spm: {} - benchmark_wordpress_build_spm: {} - benchmark_wordpress_build_spm_explicit: {} - benchmark_wordpress_build_spm_invalidpackage: {} + - benchmark_doddle_build_baseline + - benchmark_doddle_build_cc features-e2e: triggers: push: @@ -559,6 +535,7 @@ workflows: Calendar IceCubesApp VLC + Doddle opts: is_expand: false steps: @@ -2222,7 +2199,7 @@ workflows: - USE_DD_CACHE: "false" - USE_SPM: "false" - USE_COMP_CACHE: "false" - - BENCHMARK_APP_NAME: WordPress + - BENCHMARK_APP_NAME: Doddle steps: - bundle::benchmark-setup: inputs: @@ -2280,13 +2257,86 @@ workflows: end end EOF + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Build + inputs: + - content: |- + flutter build ios --debug --no-codesign + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge + benchmark_doddle_build_cc: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Doddle_CC + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/NaserElziadna/doddle.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - SILENT: "true" + - script: + title: Install dependencies + inputs: + - content: |- + asdf install ruby 3.4.6 + asdf global ruby 3.4.6 + # flutter upgrade + gem install cocoapods + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + flutter pub get -# pushd ios -# rm -rf Pods Podfile.lock .symlinks Podfile.xcworkspace -# pod cache clean --all -# pod deintegrate || true -# pod install --repo-update -# popd + cat < ios/Podfile + + platform :ios, '13.0' + # CocoaPods analytics sends network stats synchronously affecting flutter build latency. + ENV['COCOAPODS_DISABLE_STATS'] = 'true' + project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, + } + def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" + end + require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + flutter_ios_podfile_setup + target 'Runner' do + use_frameworks! + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + end + end + end + EOF - bundle::benchmark_start_measure: inputs: - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME From 389086c3c9261e37d02891b90be2ea814bf68d36 Mon Sep 17 00:00:00 2001 From: Zsolt Marta Date: Fri, 17 Oct 2025 11:41:14 +0200 Subject: [PATCH 116/116] feat: Benchmark doddle random --- bitrise.yml | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index d92d5331..02f37eed 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -17,10 +17,12 @@ pipelines: workflows: benchmark_doddle_build_baseline: {} benchmark_doddle_build_cc: {} + benchmark_doddle_build_cc_random: {} benchmark_results: depends_on: - benchmark_doddle_build_baseline - benchmark_doddle_build_cc + - benchmark_doddle_build_cc_random features-e2e: triggers: push: @@ -2354,6 +2356,101 @@ workflows: bitrise.io: machine_type_id: g2.mac.large stack: osx-xcode-26.0.x-edge + benchmark_doddle_build_cc_random: + envs: + - USE_DD_CACHE: "false" + - USE_SPM: "false" + - USE_COMP_CACHE: "true" + - BENCHMARK_APP_NAME: Doddle_Random_CC + steps: + - bundle::benchmark-setup: + inputs: + - REPO_URL: https://github.com/NaserElziadna/doddle.git + - BRANCH: main + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - USE_COMP_CACHE: $USE_COMP_CACHE + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - SILENT: "true" + - script: + title: Random checkout + inputs: + - content: |- + #!/bin/bash + set -exo pipefail + + # produce a numeric seed from the slug (sha1 -> hex -> decimal bytes) + seed_hex=$(printf '%s' "$BITRISE_BUILD_SLUG" | sha1sum | awk '{print $1}') + # turn hex into raw bytes for --random-source + seed_bytes=$(printf '%s' "$seed_hex" | xxd -r -p) + + # pick a commit deterministically + commit=$(git rev-list --max-count=30 HEAD | shuf -n1 --random-source=<(printf '%s' "$seed_bytes")) + git checkout "$commit" + - script: + title: Install dependencies + inputs: + - content: |- + asdf install ruby 3.4.6 + asdf global ruby 3.4.6 + # flutter upgrade + gem install cocoapods + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + flutter pub get + + cat < ios/Podfile + + platform :ios, '13.0' + # CocoaPods analytics sends network stats synchronously affecting flutter build latency. + ENV['COCOAPODS_DISABLE_STATS'] = 'true' + project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, + } + def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" + end + require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + flutter_ios_podfile_setup + target 'Runner' do + use_frameworks! + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + end + end + end + EOF + - bundle::benchmark_start_measure: + inputs: + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + - script: + title: Build + inputs: + - content: |- + flutter build ios --debug --no-codesign + - bundle::benchmark_finish: + inputs: + - USE_DD_CACHE: $USE_DD_CACHE + - USE_SPM: $USE_SPM + - BENCHMARK_APP_NAME: $BENCHMARK_APP_NAME + meta: + bitrise.io: + machine_type_id: g2.mac.large + stack: osx-xcode-26.0.x-edge benchmark_fluffychat_build_baseline: envs: - USE_DD_CACHE: "false"