使用Bitrise上的构建缓存在构建之间传递工件

可以 Bitrise 使用 Cache:Push Cache:Pull 步骤在 构件之间传递工件 ,如果要使用一个 构件 另一个构件中 生成的文件,这非常方便。

例如,在第一个构建中,您可以存档您的iOS项目并从xcarchive导出Development ipa文件,然后可以由测试人员进行测试。
测试人员完成后,无需再次存档项目,但是可以使用xcarchive (由第一个版本生成)来导出一个ipa文件供App Store分发并将其部署到App Store。

让我们看看如何做到这一点:

1,使用iOS项目的存储库在Bitrise上创建一个新项目。
Bitrise将对其进行扫描,并将生成包含primary工作流程和deploy工作流程的初始配置。

您需要使用配置为能够导出到Development和App Store类型的ipa文件的iOS应用。 此外,该项目需要已经部署(至少一次)到iTunesConnect,以便能够使用Bitrise自动进行后续部署。

 format_version: '4' 
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: ios
trigger_map:
- push_branch: "*"
workflow: primary
- pull_request_source_branch: "*"
workflow: primary
workflows:
deploy:
steps:
- activate-ssh-key@3.1.1:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@4.0.5: {}
- cache-pull@2.0.1: {}
- script@1.1.5:
title: Do anything with Script step
- certificate-and-profile-installer@1.9.2: {}
- xcode-test@1.18.9:
inputs:
- project_path: "$BITRISE_PROJECT_PATH"
- scheme: "$BITRISE_SCHEME"
- xcode-archive@2.4.3:
inputs:
- project_path: "$BITRISE_PROJECT_PATH"
- scheme: "$BITRISE_SCHEME"
- export_method: "$BITRISE_EXPORT_METHOD"
- deploy-to-bitrise-io@1.3.10: {}
- cache-push@2.0.3: {}
primary:
steps:
- activate-ssh-key@3.1.1:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@4.0.5: {}
- cache-pull@2.0.1: {}
- script@1.1.5:
title: Do anything with Script step
- certificate-and-profile-installer@1.9.2: {}
- xcode-test@1.18.9:
inputs:
- project_path: "$BITRISE_PROJECT_PATH"
- scheme: "$BITRISE_SCHEME"
- deploy-to-bitrise-io@1.3.10: {}
- cache-push@2.0.3: {}
app:
envs:
- opts:
is_expand: false
BITRISE_PROJECT_PATH: Bitrise-iTunesConnectBetaTest/Bitrise-iTunesConnectBetaTest.xcodeproj
- opts:
is_expand: false
BITRISE_SCHEME: Bitrise-iTunesConnectBetaTest
- opts:
is_expand: false
BITRISE_EXPORT_METHOD: development

2,对primary工作流程-t进行以下更改:

  • Xcode Test for iOS步骤替换Xcode Test for iOS Xcode Archive & Export for iOS
  • Select method for export输入变量(在bitrise.yml中称为export_method)的Select method for export更改为development 。 此输入描述Xcode如何导出存档。
  • Export the generated archive?设置是Export the generated archive?is_export_xcarchive_zip输入字段)。 如果此输入设置为yes ,则将压缩生成的.xcarchive并将其移至output_dir

这些更改之后, primary工作流程的配置将如下所示:

 primary: 
steps:
- activate-ssh-key:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone: {}
- certificate-and-profile-installer: {}
- xcode-archive:
inputs:
- project_path: "$BITRISE_PROJECT_PATH"
- export_method: development
- is_export_xcarchive_zip: 'yes'
- scheme: "$BITRISE_SCHEME"
- deploy-to-bitrise-io@1.3.10: {}
- cache-push:
inputs:
- cache_paths: |
$BITRISE_XCARCHIVE_ZIP_PATH

3,现在也该在deploy工作流程中进行一些更改:

  • 无需再次克隆项目,因此省去了激活SSH密钥和克隆代码的步骤。
  • 在高速缓存-拉动步骤之后,使用脚本步骤解压缩档案。 存档的路径将为${BITRISE_DEPLOY_DIR}/${BITRISE_SCHEME}.xcarchive
  • 添加Export iOS and tvOS Xcode archive步骤,并将app-store设置为export_method
  • 添加“ Deploy to iTunes Connect步骤,该步骤会将存档上传到iTunes Connect。 默认配置即可。

更改后, deploy工作流的配置将如下所示:

 deploy: 
steps:
- cache-pull@2.0.1: {}
- script@1.1.5:
inputs:
- content: cd "${BITRISE_DEPLOY_DIR}" && unzip "${BITRISE_DEPLOY_DIR}/${BITRISE_SCHEME}.xcarchive.zip"
- export-xcarchive@1.0.1:
inputs:
- archive_path: "${BITRISE_DEPLOY_DIR}/${BITRISE_SCHEME}.xcarchive"
- export_method: app-store
- deploy-to-itunesconnect-deliver@2.12.0: {}

4,上传您的开发和App Store的代码签名文件(如果尚未上传)。 我们为此提供了一些漂亮的工具!

至此配置已完成。 👏

此外,可以使用我们自己的部署步骤之一或脚本将文件上传到任何云存储(例如Amazon S3或Google Cloud Storage),但是如果您不想编写和维护脚本,则可以始终使用我们的cache-pushcache-pull步骤。 🙂

建设愉快! 🏢