如何解决当 sqlproj.user 文件不在源代码管理中时,在 DACPAC 构建/部署期间会发生什么?
我是不是遗漏了什么,还是 MS 搞砸了:
Q1:我是否应该将 projname.sqlproj.user 文件添加到源代码管理中?
问题 2:我应该以某种方式将 .publish.xml 文件合并到构建步骤中吗?
额外问题:如果没有包含所有这些关键标志的 .sqlproj.user 文件,构建服务器上会发生什么?
背景:
在我的大型企业中,我的团队拥有第一个工作 CI/CD 管道,使用构建服务器生成的 .dacpac 将 .sqlproj 交付给 sql 数据库。它正在工作,我正在学习 dacpac 绳索。
我正在处理站在我的团队和灾难之间的标志(即 DropObjectsnotinSource=false
),而 git 没有看到 .sqlproj 文件中的更改。很明显,这些标志存储在 .user 文件中,而不是 .sqlproj 文件中!? (projname.sqlproj.user)
通常的做法是 .gitignore *.user 文件,MS 知道这一点,所以我疯了吗?我不希望新的开发者开始玩标志并且永远看不到 SC 的变化。
其他背景
我们的目标之一是通过 ci/cd 管道处理所有发布事件;所以我们真的不想要一个开放的路径来手动/直接发布更改甚至是 Dev env。太多的长期开发人员有一个非常坏的习惯,即完全跳过 Dev env,直接进入 QA,然后进入 Prod。因此,我们可能需要通过在 QA/Prod 中明确拒绝个人 Alter/Control 访问权来让他们震惊,但甚至可能在 Dev 环境中。
堆栈:
VS2017(2019是一个选项)
SSDT
GitHub企业
团队城市
八达通
sqlServer2016
解决方法
这是“publish.xml”或发布参数/配置文件设置。当我们对 sqlpackage.exe 进行炮击时,我们将包含具有这些设置的相应发布配置文件的选项。您也可以在命令行级别设置它。这绝对不是 *.user 文件设置。
也就是说,我通常也会将这些发布配置文件包含在项目中供开发人员使用(本地、开发等),以便他们可以双击其中之一并使用预定义的本地/开发构建设置。 (通常带有警告,例如 - 在通过生成脚本点击“发布”之前查看预览)然后我们可以将这些发布配置文件包含在我们的部署/发布操作中。
如果你走这条路,唯一的警告是,如果你使用“发布”文件夹,你可能需要调整你的 .gitignore。如果您使用的是 gitignore 存储库文件,则默认情况下,Visual Studio 项目将忽略该文件夹名称。
,Q1 - 不,你不应该。开发人员在他们的机器上可以有非常不同的设置和首选项,将这个文件添加到源代码控制会很麻烦。这个文件应该被 gitignored(如果你使用 git)。您可以查看我的 repo,在那里我开始创建类似 SSDT template 的内容。它也有 Instant now = Instant.now();
Instant hoursAfter = now.plus(12,ChronoUnit.HOURS);
Instant hoursBefore = now.minus(12,ChronoUnit.HOURS);
模板。
Q2 - .gitignore
用于发布的配置文件。您可以为不同的环境设置不同的设置。 *.publish.xml
设置应驻留在该配置文件中,因为您可能希望将这些对象放在 dev env 上而不是将其放在 prod 中。但是,如果没有特定目的,我会将这个设置 = false 用于所有环境。
额外问题 - 正如已经说过的,DropObjectsNotInSource=false
文件不应参与部署。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。