0

我正在研究打包和部署 sfdc 代码的管道。我附上以下脚本:

# CI process for SFDX
image: radon57/sfdx-cli #image with sfdx installed

definitions:
  steps:
    - step: &package_install
        name: Package and Install
        script:
          - apt-get install -y jq  
    
          - export PACKAGE_NAME=$( cat sfdx-project.json | jq -r '.packageDirectories[0].package')
        
          - VERSION_NUMBER="$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION.$BUILD_VERSION" 
 
          - sfdx force:package:create --name "$PACKAGE_NAME" --description "My Package" --packagetype Unlocked --path force-app --nonamespace --targetdevhubusername $USERNAME || true
          # Create a new package version.
          #- sfdx force:package:version:create:list --targetusername $USERNAME
          - sfdx force:package:version:create -c -v $USERNAME --package "$PACKAGE_NAME" --versionnumber=$VERSION_NUMBER --installationkey $PASSWORD --wait 30 --json > package-output.json || true
          - cat package-output.json
          - version_data=$(cat package-output.json)
          - PKG_VERSION=$( jq -r '.result.SubscriberPackageVersionId' <<< "${version_data}" )
    
          # need to parse out the version from the previous command.
          - sfdx force:package:install --package "$PKG_VERSION" --targetusername $USERNAME --wait 10 --publishwait 10 --installationkey $PASSWORD --json -r

pipelines:
  default:
    - step: *package_install

这个脚本第一次运行良好。当我更新代码并执行管道时,由于唯一的包名称约束,它失败了。

作为解决方案,我绕过了包的创建,只是通过计算版本号来更新包的版本。此方法在本地有效。但由于此管道在容器上运行,因此 sfdx-package.json 不会使用包名称和版本进行更新。所以我必须为每个源更新创建一个新的包名称,这是低效的。

有什么解决方法吗?

管道应该将代码打包并安装在 org 中,如果代码有任何更新,则应将其作为新版本进行推广,而不是作为新包进行推广。

4

0 回答 0