我试图在Azure DevOps Repo中自动生成和更新我的代码的文档。我已经将管道配置为在提交到主分支时运行python脚本。此脚本从存储库中的文件中提取相关信息,并创建一个标记文件并将输出存储为README.md。
但是,当我运行管道时,什么都不会发生。作业注册为已完成,但README.md文件不变。我不知道会出现什么错误,所以我不确定到底出了什么问题,可能是权限问题。有人知道解决这个问题的方法吗?
管道代码:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.8'
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
python generate-documentation.py
displayName: 'Generate Documentation'
Python脚本:
import yaml
file = open('single-source.yaml')
documentation = yaml.load(file, Loader=yaml.FullLoader)
productdetails = documentation["product details"]
specifications = documentation["specifications"]
prerequisites = documentation["prerequisites"]
requiredinputs = documentation["required inputs"]
selfservice = documentation["self service"]
costsandcharging = documentation["costs and charging"]
f = open("README.md","w")
for x in productdetails.values():
f.write(x+"\n" )
f = open("README.md","a")
if "specifications" in documentation:
for x in specifications.values():
f.write(x+"\n")
if "prerequisites" in documentation:
for x in prerequisites.values():
f.write(x+"\n")
if "requiredinputs" in documentation:
for x in requiredinputs.values():
f.write(x+"\n")
if "selfservice" in documentation:
for x in selfservice.values():
f.write(x+"\n")
if "costsandcharging" in documentation:
for x in costsandcharging.values():
f.write(x)
f.close()
发布于 2020-04-14 19:59:37
完全有可能,完全遵循这个行动计划,,如果有任何问题的话。
git checkout $(Build.SourceBranchName)
不管是什么转换,在Python中处理它并使用管道中的内联巴什脚本步骤来验证它,如下所示:
cat README.md
如果在管道日志中看到README.md
文件的预期状态,那么只需添加第二个内联bash脚本,如下所示:
git add README.md
git config --global user.name "$(Build.RequestedFor)"
git config --global user.email "$(Build.RequestedForEmail)"
git commit -m "$(Build.BuildId)"
git push origin $(Build.SourceBranchName)
Prerequisites
- checkout: self
persistCredentials: true
组织范围:项目集合构建服务({OrgName})
项目作用域:{Project } ({Org })
授予他们来自项目设置->存储库的贡献权限
曾任Azure DevOps和GitHub支持工程师。我把Python从提交和推送步骤的评估中拿出来,尽管可能比Bash更难排除故障。
https://stackoverflow.com/questions/61212433
复制