在 Hybris (CCv2) 的 Azure Devops 上创建 CI/CD 管道

Creating CI/CD pipelines on Azure Devops for Hybris (CCv2)

我在 Azure Devops 上有一个 Hybris 存储库,想在 SAP Commerce Cloud (CCv2) 上部署。'¨

我是 Azure Devops 的新手,所以不确定如何继续,如何从 Azure 连接到 CCv2 等。

我已经在 CCv2 上创建了“Staging”和“Prod”空间,现在我只想部署在 staging 上。

如果以前有人创建过这种任务,能不能一一解释一下步骤。

例如,我如何从 Azure 连接到 CCv2?使用一些命令或安全文件等?

谢谢!

我们将在本例中讨论以下主题:

  1. 构建你的代码CI/CD(我们不会讨论这个)
  2. 在 SAP Commerce Cloud V2 中触发构建(并等待它完成)
  3. 在 D1 环境中触发部署(然后忘记它)

我们在 Atlassian Bitbucket Cloud 上托管我们的项目,那里提供的 CI/CD 解决方案称为 Bitbucket Pipelines。

第一步完成后,我们要(再次)构建,然后才在 ccv2 平台上,成功完成后触发部署到 D1 环境,使用我们自己的 CLI 工具 CI/CD。

先决条件

  • SCCA 的 Docker 化版本 (SAP CX CLI Acorel)
  • SAP API Bitbucket 管道中的令牌秘密变量
  • bitbucket 管道中的 SAP 订阅 ID 秘密变量

下面是我们如何使用 scca 在 CCV2 平台上触发构建的示例:

- step: &cloud-build
    clone:
      enabled: false
    options:
      size: 1x
    name: Trigger build SAP Cloud
    image:
      name:  /sap-cx-cli-acorel:latest
      aws:
        access-key: $AWS_ACCESS_KEY
        secret-key: $AWS_SECRET_KEY
    artifacts: # defining the artifacts to be passed to each future step.
      - build-output.txt
    script:
      - scca config set --api-token=$SAP_API_TOKEN --sap-subscription-id=$SAP_SUBSCRIPTION_ID
      - scca build create --branch=$BITBUCKET_BRANCH --name=$(echo "$BITBUCKET_BRANCH-$BITBUCKET_BUILD_NUMBER" | sed -e "s/^.*\///") > $BITBUCKET_CLONE_DIR/build-output.txt

让我们回顾一下我们在步骤的脚本部分中看到的内容。

- scca config set --api-token=$SAP_API_TOKEN --sap-subscription-id=$SAP_SUBSCRIPTION_ID

这会将 scca 配置为使用正确的 API 令牌和订阅 ID。 接下来我们创建构建,这里还有很多事情要做。

- scca build create --branch=$BITBUCKET_BRANCH --name=$(echo "$BITBUCKET_BRANCH-$BITBUCKET_BUILD_NUMBER" | sed -e "s/^.*\///") > $BITBUCKET_CLONE_DIR/build-output.txt
  • –branch=$BITBUCKET_BRANCH # 指定用于此构建的分支

  • –name=$(echo “$BITBUCKET_BRANCH-$BITBUCKET_BUILD_NUMBER” | sed -e “s/^.*///”) > # 设置将在此构建的云门户中显示的名称。

  • $BITBUCKET_CLONE_DIR/build-output.tx # 这个命令产生的输出保存在文件build-output.txt

我们存储此创建构建命令的输出的原因是我们需要将 SAP CCV2 生成的构建代码共享到下一步,即部署到 D1 环境。因为这是一个单独的步骤,所以使用的 docker 实例将被重置并忘记它之前完成的进度或任务。 scca 的 create build 命令对构建进度进行轮询,因此当构建完成时在 SAP 平台上完成。

您可以通过在命令后附加 –no-wait 来跳过此步骤。

现在我们已经准备好部署在 SAP Commerce Cloud v2 上,下面是一个关于如何使用 scca.

进行构建的示例

部署步骤

- step: &cloud-deploy
    clone:
      enabled: false
    options:
      size: 1x
    name: Deploy SAP Cloud D1
    image:
        name: <url to your docker image>/sap-cx-cli-acorel:latest
        aws:
          access-key: $AWS_ACCESS_KEY
          secret-key: $AWS_SECRET_KEY
    script:
      - scca config set --api-token=$SAP_API_TOKEN --sap-subscription-id=$SAP_SUBSCRIPTION_ID
      - scca build deploy --build-code=$(grep -Po '(?<=build\-code:\s).*' $BITBUCKET_CLONE_DIR/build-output.txt) --environment-code=$environment --no-wait

在脚本的第一行,我们再次设置配置,就像我们在前面讨论的创建构建步骤中所做的那样。 奇迹发生在第二行,我们在这里使用 scca build deploy 命令。

- scca build deploy --build-code=$(grep -Po '(?<=build\-code:\s).*' $BITBUCKET_CLONE_DIR/build-output.txt) --environment-code=$environment --no-wait
  • –build-code,但使用 grep。这确保我们 grep 由 SAP 生成的构建代码并使用它来触发此构建。
  • –environment-code 这是在Bitbucket 中指定为部署变量的变量。可以在此处找到有关该主题的更多信息
  • –no-wait,这告诉 scca 不要等待部署完成。

完成此步骤后,bitbucket 认为部署成功。 您可能已经注意到我们没有指定任何更新策略和其他类似的东西,那是因为如果没有指定,scca 有一些默认值,但可以通过在部署命令中添加以下参数来覆盖。

--strategy= The way the deployment is handled [default: ROLLING_UPDATE]
--database-update-mode= DB update mode [default: UPDATE]

数据库更新模式的可能选项是NONE、UPDATE 和INITIALIZE 策略的可能选项是 ROLLING_UPDATE 和 RECREATE。

现在我们可以在 SAP Commerce Cloud v2 上构建和部署,剩下的就是安排夜间触发器。