为电容器 iOS 移动应用程序部署 azure devops 管道

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

我正在尝试在 Azure devOps 上创建一个管道,以使用此 yaml 文件将 iOS 应用程序(使用电容器/类星体框架构建)发布到应用程序商店

parameters:
- name: environment
  displayName: Configuration based on env
  type: string
  default: DEV
  values:
  - PROD
  - DEV
stages:
- stage: __default
  jobs:
  - job: Job
    pool:
      vmImage: macOS-12
    strategy:
      maxParallel: 1
    steps:
    - task: NodeTool@0
      displayName: install node version
      inputs:
        versionSource: 'spec'
        versionSpec: '16.0.0'
    - task: CmdLine@2
      displayName: install dependencies
      inputs:
        script: |
          npm i -g @quasar/cli
          npm install
          cd src-capacitor
          npm install
    - task: CocoaPods@0
      displayName: install cocoapods
      inputs:
        workingDirectory: 'src-capacitor/ios/App'
        forceRepoUpdate: false
    - task: CmdLine@2
      displayName: npm build
      inputs:
        script: 'quasar build -m capacitor -T ios --skip-pkg'
    - task: InstallAppleCertificate@2
      displayName: install apple signing certificate
      inputs:
        certSecureFile: 'devTest.p12'
        certPwd: '0000'
        keychain: 'temp'
    - task: InstallAppleProvisioningProfile@1
      displayName: install apple provisioning profile
      inputs:
        provisioningProfileLocation: 'secureFiles'
        provProfileSecureFile: 'testDev.mobileprovision'
    - task: Xcode@5
      displayName: Uncheck "Based on dependency analysis" for "[CP] Embed Pods Frameworks"
      inputs:
        buildAction: 'modify'
        xcodeProjPath: 'src-capacitor/ios/App.xcodeproj'
        buildSettings: |
          "TARGETED_DEVICE_FAMILY[$(Default Platforms)]"="iphoneos"
          "buildSettings[$(SCHEME_NAME)][ENABLE_BITCODE]"="NO"
          "buildSettings[$(SCHEME_NAME)][SWIFT_VERSION]"="5.0"  # Example settings, adjust as needed
          # Add a setting to disable dependency analysis for the script phase:
          "buildSettings[\"Embed Pods Frameworks\"][BASED_ON_DEPENDENCY_ANALYSIS]"="NO"
        sdk: 'iphoneos'
    - task: CmdLine@2
      displayName: 'Ensure proper integration of Capacitor modules'
      inputs:
        script: |
          echo "Ensuring proper integration of Capacitor modules..."
          cd src-capacitor/ios/App  # Navigate to the iOS project directory
          pod install  # Install CocoaPods dependencies
          npx cap sync ios  # Sync Capacitor iOS configuration and dependencies
    - task: Xcode@5
      displayName: 'Building IPA File'
      inputs:
        actions: 'build archive'
    - task: CmdLine@2
      displayName: Naming ipa file
      inputs:
        script: >
          appversion=$(cat package.json | head | grep -w "version" | awk '{print $2}' |cut -c 2-6)

          mv /Users/runner/work/1/s/output/App.ipa /Users/runner/work/1/s/output/myapp_DEV_${appversion}.ipa
    - task: CopyFiles@2
      displayName: 'Copy Files to: $(build.artifactStagingDirectory)'
      inputs:
        SourceFolder: '/Users/runner/work/1/s/output'
        Contents: '*.ipa'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'ios'
        publishLocation: 'Container'

但是管道在构建 IPA 文件时失败:

构建失败**

运行脚本构建阶段“[CP] Embed Pods Frameworks”将在每次构建期间运行,因为它没有指定任何输出。要解决此警告,请将输出依赖项添加到脚本阶段,或者通过取消选中脚本阶段中的“基于依赖项分析”将其配置为在每个构建中运行。 (在项目“App”的目标“App”中)

** 存档失败 **

##[错误]错误:/usr/bin/xcodebuild 失败,返回代码:65

问题是 xcode 没有返回任何其他错误。

azure azure-devops azure-pipelines capacitor quasar
1个回答
0
投票

从您提供的 YAML 中,我注意到您正在使用默认配置

nosign
不要编码符号)作为 Xcode@5
 上的 
signingOption签名样式)任务。

要构建和存档 IPA 文件,您需要在 Xcode@5 任务上提供以下签名证书。

  • signingIdentity
    签名身份):由
    InstallAppleCertificate@2
    任务(安装Apple证书)安装/生成。此任务将自动设置变量“
    APPLE_CERTIFICATE_SIGNING_IDENTITY
    ”以供使用。

  • provisioningProfileUuid
    配置文件 UUID):它由
    InstallAppleProvisioningProfile@1
    任务(安装 Apple 配置文件)安装/生成。此任务将自动设置变量“
    APPLE_PROV_PROFILE_UUID
    ”以供使用。

然后在 Xcode@5 任务中,您可以进行如下配置:

steps:
. . .

- task: Xcode@5
  displayName: 'Building IPA File'
  inputs:
    actions: 'build archive'
    signingOption: manual
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

欲了解更多详情,您可以参考“签署您的 Apple iOS、macOS、tvOS 或 watchOS 应用程序”。

© www.soinside.com 2019 - 2024. All rights reserved.