【发布时间】:2022-06-26 14:02:48
【问题描述】:
我将 App Center 用作我的应用程序的 CI 和 CD。我必须手动配置我需要构建和分发的所有分支。
我想要什么
如果有人从develop/master创建一个特性分支并推送代码,那么App Center应该像CircleCI等一样开始自动运行。
这在应用中心是不可能的吗?
【问题讨论】:
标签: android ios react-native continuous-integration appcenter
我将 App Center 用作我的应用程序的 CI 和 CD。我必须手动配置我需要构建和分发的所有分支。
我想要什么
如果有人从develop/master创建一个特性分支并推送代码,那么App Center应该像CircleCI等一样开始自动运行。
这在应用中心是不可能的吗?
【问题讨论】:
标签: android ios react-native continuous-integration appcenter
是的,这是可能的。您需要使用app center fastlane plugin。您需要使用appcenter_upload 函数。 SSH与整个过程无关。
在您的FastFile 中,您需要按以下方式配置通道:
desc 'Deploy a new version to the AppCenter'
lane :upload_to_appcenter do |options|
config = fetch_configuration(for_release_type: options[:release_type], for_project_dir: ENV['PROJECT_DIR'])
gradle(
task: 'assemble',
build_type: 'Release',
properties: {
"AppCenterEnvironment" => options[:release_type],
"android.injected.signing.store.file" => ENV['KEYSTORE'],
"android.injected.signing.store.password" => ENV['KEYSTORE_PASSWORD'],
"android.injected.signing.key.alias" => ENV['KEYALIAS'],
"android.injected.signing.key.password" => ENV['KEYALIAS_PASSWORD'],
"VersionPatchNumber" => config['app_version_patch_number']
})
perform_backup
appcenter_upload(
app_name: config['appcenter_name'],
file: lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH],
destinations: '*',
release_notes: default_changelog,
notify_testers: true,
mapping: 'app/build/outputs/mapping/release/mapping.txt'
)
end
在您的 CI 管道 yaml 中,您必须有这样的内容:
- script: bundle exec fastlane upload_to_appcenter
displayName: Upload to AppCenter
condition: eq(variables['Build.SourceBranch'], 'refs/heads/development')
env:
APPCENTER_TOKEN: $(APPCENTER_API_TOKEN)
APPCENTER_OWNER_NAME: $(APPCENTER_OWNER)
RSYNC_PASSWORD: $(RSYNC_PASSWORD)
这将为development的头部的每次更改推送版本。
请查看 repo 指南如何提供 ENV 变量,还请查看您的 CI 如何将参数从 yaml 传递到 FastLane。
【讨论】: