我第一次使用 Azure VM(Linux,Ubuntu 18),我的任务是为一个简单网站的持续开发设置管道/发布
它的工作方式应该是这样的:当主分支提交到 Azure 时,自动运行管道并发布以将其部署到 VM 中的目录(不涉及构建,是一个简单的 Wordpress 网站)
我设法让它像这样工作:
- 我已经设置了一个管道,它只从 git 获取代码并将其复制到 $(Build.ArtifactStagingDirectory)(使用复制文件任务)
- 然后将其作为工件发布(使用发布工件任务)
然后,发布管道执行以下操作:
- 将工件文件复制到目录(再次使用复制文件任务)
它能工作,但看起来不太好。有一些明显的问题:
- 速度很慢:每次都会复制所有文件,而不仅仅是更改的文件
- 如果我删除一个文件,它将不会被删除在部署目录中
所以我想要的是某种方式将 git 提交与站点目录同步,仅覆盖已更改的文件并删除任何已删除的文件,忽略 .git-ignore 上的文件和目录等
看起来很简单(我知道如何用 git hooks 来做)但我就是找不到在 Azure DevOps 中做到这一点的方法
有可能吗?有人能给我指点一下吗?
答案1
一个简单的解决方案可能是在部署阶段仅使用 bash 或 PowerShell 脚本任务,在 VM 上的目标文件夹中执行 git pull/checkout 代码。
但是,您应该小心从部署目标上的 git 中提取和签出的内容。通过使用指定的变量 Release.Artifacts.{alias}.SourceVersion这里你可以确保你正在检出的提交已经在管道的上一阶段进行了测试