【问题标题】:Azure Devops - Trigger Release pipeline based on commit to respective folderAzure Devops - 根据对相应文件夹的提交触发发布管道
【发布时间】:2021-01-30 01:18:38
【问题描述】:

需要一些关于我们如何触发发布管道以根据对 master 分支中特定文件夹的提交将相应的 .json 文件复制到 Azure 存储帐户的输入。

目前,当 API1-.json 文件发生变化时,所有的 .json 将被复制到存储帐户,这是通过 Azure 复制文件任务完成的。

大师
--- 应用
--- API1(文件夹 1)
示例.json
--- API2(文件夹2)
示例.json
--- API3(文件夹 3)
示例.json

注意:以上不是 git repo,它是存储 API 文件的普通 repo,我没有使用构建管道来获取工件,在发布管道中我直接引用 Azure git repo。

如果有提交到相应的文件夹(API1)并复制到特定的存储帐户,我怎样才能只复制 API1 .json 文件?

我们可以使用单个 Azure 复制任务来实现这一点,还是应该创建多个 Azure 复制任务?

【问题讨论】:

    标签: azure azure-devops azure-pipelines-release-pipeline


    【解决方案1】:

    如果有提交到相应的文件夹(API1)并复制到特定的存储帐户,我怎样才能只复制 API1 .json 文件?

    我们可以通过单个 Azure 复制任务来做到这一点,我们可以在字段 Source 中输入文件路径,然后通过字段 RM Storage Account 选择存储帐户。 p>

    有提交到相应的文件夹(API1)

    如果发布管道artifact是build,我们可以通过this API查看build commit信息,得到最新的commit ID(注:commit id是response body中的sourceVersion),然后我们可以得到commit文件夹路径通过提交 ID

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=6.0-preview.1
    

    我们可以确定文件路径并将结果保存在新变量(如A1)中,然后在任务Azure copy中添加条件eq(variables['A1'], 'true')运行它。

    如果您在多次提交后运行构建,您需要获取最新的构建号和之前的构建号,然后获取这些提交 ID。并通过提交 ID 获取提交日期,然后使用其余 API 列出构建之间的所有提交。并通过代码for 检查提交路径。你可以参考这个answer了解更多详情。

    【讨论】:

    • 谢谢,我已经按照上面提到的步骤完成了,并且成功了。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2020-04-22
    • 2020-04-13
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多