Azure发布管道:通过提交同步文件

时间:2020-10-23 18:51:53

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

我是第一次使用Azure VM(Linux,Ubuntu 18),并且Ive的任务是为简单网站的持续开发设置管道/版本

它应该像这样工作:当将master分支提交到Azure时,自动运行管道并释放以将其部署到VM中的目录(其中不涉及构建,是一个简单的Wordpress站点)

我设法使它像这样工作:

  1. 我设置了一个管道,该管道仅从git中获取代码并将其复制到$(Build.ArtifactStagingDirectory)(使用“复制文件”任务)
  2. 将其发布为工件(使用Publish Artifact任务)

然后执行以下操作的发布管道:

  1. 将工件文件复制到目录(再次使用“复制文件”任务)

它正在工作,但是确实不错。存在一些明显的问题:

  1. 很慢:每次都会复制所有文件,而不仅仅是更改的内容
  2. 如果我删除文件,它将不会在部署目录中删除

所以我想要的是一种将git commit与站点目录同步,仅覆盖已更改的文件并删除所有已删除文件,忽略.git-ignore等上的文件和目录的方法

看起来很简单(我知道如何使用git hooks做到这一点),但是我只是找不到在Azure DevOps中做到这一点的方法

有可能吗?谁能给我指示?

1 个答案:

答案 0 :(得分:1)

Azure发布管道:通过提交同步文件

Azure devops构建/发布不支持仅构建/发布已更改的文件,因为仅构建/发布已更改的文件并不总是有意义,也无法归档项目打算发布的内容。

但是我们可以每次比较上传/发布文件->与新提交的信息进行比较->仅发布更改的文件:

嵌入式Powershell:

cd $(System.DefaultWorkingDirectory)

get-childitem $(System.DefaultWorkingDirectory) -recurse | Foreach { 
        $lastupdatetime=$_.LastWriteTime; 
        $nowtime=get-date; 
        if(($nowtime - $lastupdatetime).totalhours -le 48) { 
          Write-Host $_.fullname 
        } 
        else{ 
          remove-item $_.fullname -Recurse -Force 
        } 
      }

以上powershell脚本将列出过去48小时内已修改的所有文件。

您可以查看this thread了解更多详细信息。