我有一个在本地环境中成功执行的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
答案 0 :(得分:0)
Bash脚本在本地成功执行,但未在Azure Devops管道中执行
当我们在Azure管道上执行构建时,它将从存储库中签出源代码到构建代理,并且下一步操作还将在代理上完成。它不会直接影响回购,这将保护我们回购中源的安全性。
这就是脚本中的更改未在您的分支中发生的原因。
要解决此问题,我们需要通过git命令将此更改提交到仓库:git add
git commit
和git 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管道对其进行了测试,效果很好。