Skip to content

test cache #377

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 16 commits into
base: master
Choose a base branch
from
151 changes: 125 additions & 26 deletions e2e/bitrise.yml
Original file line number Diff line number Diff line change
Expand Up @@ -202,15 +202,15 @@ workflows:
- _check_outputs
- _check_exported_artifacts

test_api_key_signing_managed:
description: Fruta project requires Xcode 13+. Remove this conditional run if we don't run tests on Xcode 12 anymore
steps:
- bitrise-run:
run_if: |-
{{ or (enveq "IS_LATEST_STACK_XCODE" "true") (not .IsCI) }}
inputs:
- workflow_id: utility_test_api_key_signing_managed
- bitrise_config_path: ./e2e/bitrise.yml
# test_api_key_signing_managed:
# description: Fruta project requires Xcode 13+. Remove this conditional run if we don't run tests on Xcode 12 anymore
# steps:
# - bitrise-run:
# run_if: |-
# {{ or (enveq "IS_LATEST_STACK_XCODE" "true") (not .IsCI) }}
# inputs:
# - workflow_id: utility_test_api_key_signing_managed
# - bitrise_config_path: ./e2e/bitrise.yml

utility_test_api_key_signing_managed:
description: |
Expand Down Expand Up @@ -298,21 +298,21 @@ workflows:
- _check_outputs
- _check_exported_artifacts

test_api_key_signing_managed_app_store:
description: Test API key based code signing and app store export on a project where signing is managed automatically
envs:
- TEST_APP_URL: https://github.com/bitrise-io/sample-apps-ios-multi-target.git
- TEST_APP_BRANCH: automatic
- BITRISE_PROJECT_PATH: code-sign-test.xcodeproj
- BITRISE_SCHEME: code-sign-test
- CODE_SIGNING_METHOD: api-key
- MIN_DAYS_PROFILE_VALID: 0
- IPA_EXPORT_METHOD: app-store
- LOG_FORMATTER: xcbeautify
after_run:
- _run
- _check_outputs
- _check_exported_artifacts
# test_api_key_signing_managed_app_store:
# description: Test API key based code signing and app store export on a project where signing is managed automatically
# envs:
# - TEST_APP_URL: https://github.com/bitrise-io/sample-apps-ios-multi-target.git
# - TEST_APP_BRANCH: automatic
# - BITRISE_PROJECT_PATH: code-sign-test.xcodeproj
# - BITRISE_SCHEME: code-sign-test
# - CODE_SIGNING_METHOD: api-key
# - MIN_DAYS_PROFILE_VALID: 0
# - IPA_EXPORT_METHOD: app-store
# - LOG_FORMATTER: xcbeautify
# after_run:
# - _run
# - _check_outputs
# - _check_exported_artifacts

test_apple_id_signing_managed_app_store:
description: Running Apple ID tests on a single stack to avoid 503 Service Temporarily Unavailable issue.
Expand Down Expand Up @@ -456,6 +456,12 @@ workflows:
- _check_exported_artifacts

_run:
envs:
- PROFILES_PATH: /Users/vagrant/Library/Developer/Xcode/UserData/Provisioning Profiles
- PROFILES_PATH_OLD: /Users/vagrant/Library/MobileDevice/Provisioning Profiles
before_run:
- _generate_api_token
- _random_invalid_login
steps:
- script:
title: Remove temp folder
Expand All @@ -472,7 +478,38 @@ workflows:
- content: |-
#!/bin/bash
set -ex
rm -rf ~/Library/MobileDevice/Provisioning Profiles
rm -f "$PROFILES_PATH_OLD/*"
rm -f "$PROFILES_PATH/*"
- script:
title: Create provisioning profiles folder
run_if: .IsCI
inputs:
- content: |-
#!/bin/bash
set -ex
if [[ ! -d "$PROFILES_PATH_OLD" ]]; then
mkdir -p "$PROFILES_PATH_OLD"
fi
if [[ ! -d "$PROFILES_PATH" ]]; then
mkdir -p "$PROFILES_PATH"
fi
- restore-cache:
run_if: "true"
inputs:
- key: |-
profile-cache-key-{{ checksum "$PROFILES_PATH_OLD/*.mobileprovision" }}-{{ checksum "$PROFILES_PATH/*.mobileprovision" }}
- script:
title: List profiles
inputs:
- content: |-
#!/bin/bash
set -ex
if [[ -d "$PROFILES_PATH_OLD" ]]; then
ls "$PROFILES_PATH_OLD"
fi
if [[ -d "$PROFILES_PATH" ]]; then
ls "$PROFILES_PATH"
fi
- git::https://github.com/bitrise-steplib/bitrise-step-simple-git-clone.git:
inputs:
- repository_url: $TEST_APP_URL
Expand All @@ -496,10 +533,21 @@ workflows:
- verbose_log: "yes"
- keychain_path: $BITRISE_KEYCHAIN_PATH
- keychain_password: $BITRISE_KEYCHAIN_PASSWORD
- fallback_provisioning_profile_url_list: $FALLBACK_PROFILES
- fallback_provisioning_profile_url_list: |-
$PROFILES_PATH_OLD
$PROFILES_PATH
- api_key_path: $API_KEY_PATH
- api_key_id: $API_KEY_ID
- api_key_issuer_id: $API_KEY_ISSUER_ID
- save-cache:
run_if: "true"
inputs:
- verbose: "yes"
- key: |-
profile-cache-key-{{ checksum "$PROFILES_PATH_OLD/*.mobileprovision" }}-{{ checksum "$PROFILES_PATH/*.mobileprovision" }}
- paths: |-
$PROFILES_PATH_OLD
$PROFILES_PATH

_check_outputs:
steps:
Expand Down Expand Up @@ -588,6 +636,33 @@ workflows:
exit 1
fi

_random_invalid_login:
steps:
- script:
title: Set invalid login
inputs:
- content: |-
#!/bin/env bash
set -ex

# fail 10% of the time
if [[ $((RANDOM % 10)) -eq 0 ]]; then
echo "Randomly failing login"
else
exit 0
fi

INVALID_BUILD_URL=./_invalid_authinfo
echo '{"key_id": "x", "issuer_id": "x", "private_key": "x"}' > $INVALID_BUILD_URL

BITRISE_BUILD_URL="file://$INVALID_BUILD_URL"
BITRISE_BUILD_API_TOKEN="x"

export BITRISE_BUILD_API_TOKEN
export BITRISE_BUILD_API_TOKEN
envman add --key BITRISE_BUILD_URL --value $BITRISE_BUILD_URL
envman add --key BITRISE_BUILD_API_TOKEN --value $BITRISE_BUILD_API_TOKEN

_invalid_login:
steps:
- script:
Expand Down Expand Up @@ -638,3 +713,27 @@ workflows:
set -ex
envman add --key BITRISE_BUILD_URL --value $BITRISE_BUILD_URL_BACKUP
envman add --key BITRISE_BUILD_API_TOKEN --value $BITRISE_BUILD_API_TOKEN_BACKUP

_generate_api_token:
steps:
- script:
run_if: "{{ not .IsCI }}"
title: Generate API access token
description: Generate an expiring API token using $API_CLIENT_SECRET
inputs:
- content: |
#!/bin/env bash
set -e

json_response=$(curl --fail -X POST https://auth.services.bitrise.io/auth/realms/bitrise-services/protocol/openid-connect/token -k \
--data "client_id=bitrise-steps" \
--data "client_secret=$CACHE_API_CLIENT_SECRET" \
--data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
--data "claim_token=eyJhcHBfaWQiOlsiY2FjaGUtc3RlcHMtdGVzdHMiXSwgIm9yZ19pZCI6WyJ0ZXN0LW9yZy1pZCJdLCAiYWJjc19hY2Nlc3NfZ3JhbnRlZCI6WyJ0cnVlIl19" \
--data "claim_token_format=urn:ietf:params:oauth:token-type:jwt" \
--data "audience=bitrise-services")

auth_token=$(echo $json_response | jq -r .access_token)

envman add --key BITRISEIO_ABCS_API_URL --value $BITRISEIO_CACHE_SERVICE_URL
envman add --key BITRISEIO_BITRISE_SERVICES_ACCESS_TOKEN --value $auth_token --sensitive