首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有可能在提交时让Azure管道修改README.md吗?

有可能在提交时让Azure管道修改README.md吗?
EN

Stack Overflow用户
提问于 2020-04-14 16:19:39
回答 1查看 1.8K关注 0票数 3

我试图在Azure DevOps Repo中自动生成和更新我的代码的文档。我已经将管道配置为在提交到主分支时运行python脚本。此脚本从存储库中的文件中提取相关信息,并创建一个标记文件并将输出存储为README.md。

但是,当我运行管道时,什么都不会发生。作业注册为已完成,但README.md文件不变。我不知道会出现什么错误,所以我不确定到底出了什么问题,可能是权限问题。有人知道解决这个问题的方法吗?

管道代码:

代码语言:javascript
代码运行次数:0
运行
复制
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脚本:

代码语言:javascript
代码运行次数:0
运行
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 03:59:37

完全有可能,完全遵循这个行动计划,,如果有任何问题的话。

  1. 在进行文件转换之前和签出之后,添加一个bash脚本,其中包含以下内联代码:

git checkout $(Build.SourceBranchName)

不管是什么转换,在Python中处理它并使用管道中的内联巴什脚本步骤来验证它,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
cat README.md

如果在管道日志中看到README.md文件的预期状态,那么只需添加第二个内联bash脚本,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
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

  1. 您需要来为您的管道启用OAuth令牌,这将验证推操作返回到Git。对于YAML管道,您需要添加一个显式的结帐步骤作为第一步,选项persistCredentials设置为true。
代码语言:javascript
代码运行次数:0
运行
复制
- checkout: self
  persistCredentials: true
  1. 推送操作将使用构建服务标识、项目或集合范围内的权限。默认情况下,这些标识()没有贡献通用权限,因此您需要将其授予它们。这些标识被跨使用-- Azure DevOps中管道的所有。你的身份如下:

组织范围:项目集合构建服务({OrgName})

项目作用域:{Project } ({Org })

授予他们来自项目设置->存储库的贡献权限

曾任Azure DevOps和GitHub支持工程师。我把Python从提交和推送步骤的评估中拿出来,尽管可能比Bash更难排除故障。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61212433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档