FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 不适用于 Azure devops

问题描述 投票:0回答:1

我已经使用 azure devops 设置了管道。它在本地工作正常,但在天蓝色上运行时它说:

Missing password for user [email protected], and running in non-interactive shell

我注意到azure正在寻找FASTLANE_PASSWORD而不是FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD。 (因为我使用 2FA,所以我提供 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD)。

这是我的快速文件


default_platform(:ios)
xcode_select("/Applications/Xcode_15.3.app")

  desc "Deploy to App Store"
  lane :appstore do
    if is_ci
      setup_ci
    end
    prelane
    match(type: "appstore",app_identifier: "xxxxxx", readonly: is_ci)
    build_app(scheme: "prod" ,export_method: "app-store",clean:true)
    upload_to_app_store(
      app_identifier: "xxxxxxxx",
      skip_metadata: true,
      skip_screenshots: true
    )
  end

和APPFILE

# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
apple_id("xxxxxxxxxx")
ENV["FASTLANE_USER"] ="xxxxxxxxx"
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] ="xxxxxxxx"

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

这里有一个错误 enter image description here

如有任何帮助,我们将不胜感激。

azure-devops app-store-connect fastlane fastlane-match fastlane-deliver
1个回答
0
投票

当运行

fastlane
命令将应用程序部署到本地 Mac 计算机上的 Apple App Store 时,系统会提示我们输入 2FA 的应用程序专用密码。在新代理机器上持续部署的过程中,我们还会被要求提供安全代码,这可能会使 Azure Pipelines 等自动化工具陷入困境。

Image

来自有关持续集成的 fastlane 文档,

FASTLANE_SESSION
:如果您启用了 2 因素身份验证并希望使用与 App Store Connect 通信的任何操作,则需要通过 fastlane spaceaut
 提供 
预生成的会话。

虽然我建议避免处理使用启用 2FA 的帐户所需的交互,例如因为我们想在不支持交互的自动化或 CI 系统上使用太空飞船

为此,我们可以使用扩展任务

AppStoreRelease@1
,它将在代理工作期间安装和使用fastlane工具。

以下是步骤供您参考。

  1. 在 Apple Store Connect 中生成新的 API 密钥; enter image description here
  2. 记下Issuer IDKey ID -> 下载
    .p8
    证书并将密钥内容转换为BASE64编码; enter image description here 我使用 Windows 机器上运行的 PowerShell 脚本进行编码;
    # Define the path to your .p8 file
    $p8FilePath = "C:\Users\Alvin\Downloads\AuthKey_xxxxxx.p8"
    
    # Read the contents of the .p8 file
    $p8FileContent = Get-Content -Path $p8FilePath -Raw
    
    # Convert the file contents to a byte array
    $p8FileBytes = [System.Text.Encoding]::UTF8.GetBytes($p8FileContent)
    
    # Encode the byte array to a base64 string
    $p8FileBase64 = [System.Convert]::ToBase64String($p8FileBytes)
    
    # Output the base64 string
    Write-Output $p8FileBase64
    
  3. 新建Apple App Store服务连接并输入认证信息; enter image description here
  4. 通过引用新
    AppStoreRelease@1
    AppleAppStoreSvcCnn
    管道任务部署应用程序;
    - task: AppStoreRelease@1
      inputs:
        serviceEndpoint: 'AppleAppStoreSvcCnn'
        releaseTrack: 'TestFlight'
        appIdentifier: 'com.mydomain.myapp'
        appType: 'iOS'
        ipaPath: '$(Pipeline.Workspace)/**/*.ipa'
        appSpecificId: 'xxxxxx'
    
    enter image description here enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.