如何从 Azure DevOps Pipeline Dynamics 365 CE 到 git 存储库中的 add/update 文件

How to add/update files in git repository from Azure DevOps Pipeline Dynamics 365 CE

精简版

当构建管道被触发时,其中一个构建管道任务将获取最新文件,它必须是当前 运行 管道的 git 存储库中的 added/updated。我尝试使用命令行任务来完成它,但它失败了,因为不是 git 存储库

fatal: not a git repository (or any of the parent directories): .git

长版

我试图为 Dynamics 365 实例实现解决方案打包和解包过程。所以构建管道有以下任务

  1. 从 Dynamics 365 导出解决方案并将其存储在 $(build.binariesdirectory)

  2. 解压缩解决方案 zip 文件并存储在 $(Build.Repository.LocalPath) 中,即 adding/updating 个现有文件

  3. 提交文件并将其推送到当前管道存储库的命令行任务

ECHO "Setting git config..."
git config --global user.email "xxx@xyz.com"
git config --global user.name "Admin"

ECHO "CHECK GIT STATUS..."
git status

ECHO "GIT ADD..."
git add -A

ECHO "CHECK GIT STATUS..."
git status

ECHO "Commiting the changes..."
git commit -m "Latest Customizations updated"

ECHO "Pushing the changes..."
git push -u origin master

ECHO "Customization Committed Successfully"

已更新

如果管道是用 2 个命令行任务创建的,即一个在 Build.Sourcedirectory 中创建一个随机文件,另一个用于提交更改,那么 git 提交和推送命令正在运行。

但是,如果我们在命令行任务之前添加其他任务(例如在 Build.Sourcedirectory 目录中解压缩文件),则会出现错误,因为不是存储库。

如果您看到下面的屏幕截图,则表明在结帐阶段 git 存储库被克隆到 D:\a\s

下面的截图来自命令行任务,当前工作目录与结帐任务相同(即D:\a\s),我们可以看到“.git”文件夹是present 所以当前目录中有本地存储库,但仍然出现 fatal: not a git repository

错误

我在这里遗漏了什么吗?

默认情况下,源文件被签出到 Build.SourcesDirectory(例如:目录:D:\a\s),它可以被视为临时 git 存储库。

根据错误消息,命令行任务的工作目录似乎不在 Build.SourcesDirectory 下,您没有再次 git checkout 到该工作目录。

因此,请尝试解压解决方案 zip 文件并存储在 Build.SourcesDirectory 中,然后在命令行下方 运行 推送提交(对我有用):

ECHO "Setting git config..."
git config --global user.email "xxx@xyz.com"
git config --global user.name "Admin"

ECHO "CHECK GIT STATUS..."
git status

git checkout -b master

ECHO "GIT ADD..."
git add -A

ECHO "CHECK GIT STATUS..."
git status

ECHO "Commiting the changes..."
git commit -m "Latest Customizations updated"

ECHO "Pushing the changes..."
git push -u origin master

ECHO "Customization Committed Successfully"

请注意,您需要Grant version control permissions to the build service and enable Allow scripts to access the system token