Bash脚本在本地成功执行,但不在Azure Devops管道中执行

时间:2020-09-21 12:27:41

标签: bash azure-devops

我有一个在本地环境中成功执行的bash脚本:

#!/bin/bash
#build changelog

version="Version: "
current_date=`date`
cat <(printf " \n") <(echo $version $env:BUILD_BUILDNUMBER $current_date) <(tail -n+6 pr-changelog.md) ./CHANGELOG.md > output 
mv output ./CHANGELOG.md

但是,在脚本成功运行的同时,在我的Azure Devops管道中使用Bash生成程序包不会引发任何错误,并且管道会完成,但是脚本中的更改不会发生。

该脚本将行从一个文件复制到CHANGELOG.md以及其他两个小东西。在本地复制文本,但是在运行管道之后,CHANGELOG.md文件在我的分支中没有更改。

我可以期望它起作用吗?如果没有,我应该采取什么进一步的步骤?

TIA

1 个答案:

答案 0 :(得分:0)

Bash脚本在本地成功执行,但未在Azure Devops管道中执行

当我们在Azure管道上执行构建时,它将从存储库中签出源代码到构建代理,并且下一步操作还将在代理上完成。它不会直接影响回购,这将保护我们回购中源的安全性。

这就是脚本中的更改未在您的分支中发生的原因。

要解决此问题,我们需要通过git命令将此更改提交到仓库:git add git commitgit push

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

cd "$(System.DefaultWorkingDirectory)"

version="Version: "
current_date=`date`
cat <(printf " \n") <(echo $version $env:BUILD_BUILDNUMBER $current_date) <(tail -n+6 pr-changelog.md) ./CHANGELOG.md > output 
mv output ./CHANGELOG.md

git add CHANGELOG.md

git commit -m "copies lines to CHANGELOG.md"

git push https://<PAT>@dev.azure.com/YourOrganization/YourProject/_git/YourProject HEAD:master

我使用Azure管道对其进行了测试,效果很好。