在Azure DevOps(VSTS)的发行阶段之间共享文件

Mat*_*ska 8 azure-devops azure-pipelines azure-pipelines-release-task

大图:我们正在使用Azure DevOps发布过程(到目前为止,我们在设计器中创建步骤,而不是在YAML管道中创建步骤)。我们发布到具有3个不同数据库的3个环境。该发行版的一部分是从DACPAC文件部署数据库。由于使用SqlPackage.exe直接发布到数据库不是很透明(您不会看到并查看实际的SQL脚本),因此我们希望分两个阶段进行发布:

  1. 从DACPAC创建SQL脚本并对其进行检查
  2. 批准后,从先前生成的脚本运行app和db部署。

问题:如何在阶段之间共享sql脚本文件,以及如何查看该脚本以进行批准。可以在不同的代理上触发阶段。

我已经试过

  1. 将脚本发布为构建工件-这将无法正常工作,因为生成生成脚本需要连接到数据库,并且连接到脚本不应该是构建过程的一部分,尤其是连接到生产数据库。
  2. 作为发布步骤将工件发布到Azure Pipelines-不允许在发布时发布,仅适用于版本发布
  3. 将工件发布到文件共享-我不确定这是如何工作的,文档做得不好。而且,常规的Windows文件共享很难在我们的基础结构中设置,我宁愿避免这样做。

还有其他建议吗?

jes*_*ing 2

虽然您无法使用管道工件,但您可以使用包管理中的通用包来发布任意文件以供以后检索。只需将文件内容转储到管道日志中是允许人们检查它的最简单方法。

您还可以创建一个带有占位符的文件作为构建工件,并合并每个阶段中管道变量的最终设置,这样您就可以将它们保留为构建工件。这就是我倾向于对任何此类性质的文件执行的操作。听起来这不适用于您生成的 SQL 文件。

或者,如果“寻求批准”部分很重要,您可以生成它并将其写入日志,然后将其上传到通用包管理。然后在该阶段结束时请求批准。在下一阶段,您可以从通用包管理下载脚本,或者在执行前使用完全相同的任务配置重新生成脚本。