是否可以让 Azure Pipeline 在提交时修改 README.md?

2024-01-13

我正在尝试在 Azure DevOps Repo 中自动生成和更新代码文档。我已经配置了一个管道,以便在提交到 master 分支时运行 python 脚本。该脚本从存储库中的文件中提取相关信息并创建一个 markdown 文件并将输出存储为 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()

完全有可能,完全遵循该行动计划,如有问题请留言。

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

git checkout $(Build.SourceBranchName)

无论您进行什么转换,都可以在 Python 中处理它并使用内联验证它bash脚本 https://learn.microsoft.com/azure/devops/pipelines/tasks/utility/bash?view=azure-devops按如下步骤进入您的管道:

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)

先决条件:

  1. You need要为您的管道启用 OAuth 令牌,这将对推送操作进行身份验证返回您的 Git 存储库。对于 YAML 管道,您需要添加显式作为带有选项的第一步持久化凭证 set to true, e.g.
- checkout: self
  persistCredentials: true
  1. 推送操作将使用 a 的权限建立服务身份 https://learn.microsoft.com/azure/devops/pipelines/build/options?view=azure-devops#build-job-authorization-scope、项目或集合范围。这些身份do not have 贡献通用默认情况下权限,因此您需要将其授予他们。仅供参考,这些身份被广泛使用allAzure DevOps 中的管道。您的身份命名如下:

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

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

前 Azure DevOps 和 GitHub 支持工程师。我将 Python 从提交和推送步骤的等式中剔除,尽管它可能比 Bash 更难排除故障。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以让 Azure Pipeline 在提交时修改 README.md? 的相关文章

随机推荐

  • 比较 Excel 中的两列并排除

    I want to compare values in two columns in Excel as depicted in the image below 使用该公式 我想将值放入 B 中不存在的 A 的值 和 A 中不存在的 B 的值
  • 在 ConfigParser 解析的请求模块上使用 URL 时,InvalidSchema("未找到 {!r}".format(url)) 的 URL

    我在配置文件中有一个 URL 我使用 ConfigParser 解析该 URL 以获取请求 配置文件 default root url https reqres in api users page 2 FetchFeeds py impor
  • 如何在 Windows shell 中向文件类型添加辅助动词?

    Windows shell 编程的基本思想是 您可以将给定的文件类型 扩展名 与 MS 当前调用的 progid 例如 Company Type Ver 相关联 HKCR txt Acme Text 1 HKCR Acme Text 1 这
  • Javascript 中触摸屏事件的文档

    在哪里可以找到 Javascript 中触摸屏事件的文档或参考 例如 触摸开始 我发现这个有用的链接http ross posterous com 2008 08 19 iphone touch events in javascript h
  • PHP中将单个数字分成一组唯一的随机数

    我想从一个预先确定的单个数字开始 然后有多个随机数字 当它们相加时 它们的总数就是我开始的数字 例如 我有 100 个 但想要 10 个随机数 将它们加在一起时等于 100 以我有限的知识 我写下了这样的内容
  • Elixir 变量真的是不可变的吗?

    在 Dave Thomas 的 Programming Elixir 一书中 他指出 Elixir 强制执行不可变数据 并接着说道 在 Elixir 中 一旦变量引用了诸如 1 2 3 之类的列表 您就知道它将始终引用相同的值 直到您重新绑
  • 如何从字符串转换为 XElement 对象

    我有一个像这样的字符串
  • STL Vector默认使用“new”和“delete”进行内存分配吗?

    我正在为应用程序开发一个插件 其中内存应该由应用程序分配并跟踪它 因此 内存句柄应该以缓冲区的形式从主机应用程序获取 然后将它们返回给应用程序 现在 我计划使用 STL Vectors 我想知道它内部使用什么样的内存分配 它在内部使用 新建
  • jquery悬停事件无法正常工作

    我有一个简单的水平菜单 当我将鼠标悬停在每个项目上时 子菜单会向下滑动 所以基本上它是我们经常看到的典型导航菜单 我希望当鼠标悬停时子菜单会在鼠标移出时向下和向上滑动 我的问题是 如果我在项目中快速移动鼠标 就会有多个子菜单保持可见 我猜这
  • RSS 是否跟踪保留或提交的内存?

    我正在 java 8 上使用不同的 jvm 选项进行实验 以降低 RSS 用于 Rss 跟踪的脚本 ps o rss o vsz o pid pid 用于设置 java 进程的 JVM 参数 XX PrintNMTStatistics XX
  • Laravel 5 中用于管理或身份验证的 Laravel 中间件

    我是 Laravel 的新手 不了解 Laravel 限制机制 我读过有关中间件的内容 但很困惑如何使用它 为什么使用它以及它如何工作 所以请指导我如何实现它以达到限制目的 即对于 auth sa 用户路由 确保您在数据库用户表中有角色列或
  • Sitecore 中子布局的多变量测试

    我过去曾尝试过这个概念 现在对在我公司的 Sitecore 网站上使用多变量测试感兴趣 我认为在很多地方我们绝对可以通过使用 A B 测试来提高销量 运行两个完全不同的模板 看看哪种布局更适合用户 在网站上运行许多不同的子布局 表单 以查看
  • PHP 中的重音符号 (`)(不是单引号)代表什么?

    在下面的示例中 第二行中的重音符号是什么意思 cmd ffmpeg i video deinterlace an ss second t 00 00 01 r 1 y vcodec mjpeg f mjpeg image 2 gt 1 re
  • 将版本放入我的 java 应用程序 - Netbeans

    有什么方法可以在 netbeans 中为我的应用程序提供版本号 然后在我的代码中访问该版本号 类似于我们在 Net 中使用的程序集号 在 java 或 netbeans 中是否有类似的东西 定义一个Implementation Versio
  • 保留 Spark Streaming 输出

    我正在从消息传递应用程序收集数据 我目前正在使用 Flume 它每天发送大约 5000 万条记录 我想用卡夫卡 使用 Spark Streaming 从 Kafka 消费 并将其保存到 hadoop 并使用 impala 进行查询 我尝试过
  • Vue.js 组件渲染后是否会触发事件?

    我在 Vue js 中有一些自定义组件 在我拥有的一个组件中有一个选择列表 我想将其呈现为Chosen http harvesthq github io chosen 选择框 我将其与 jQuery 函数一起使用 select chosen
  • 如何在 Firefox 和 Opera 中缩放 HTML 元素?

    如何在 Firefox 和 Opera 中缩放 HTML 元素 The zoom该属性在 IE Google Chrome 和 Safari 中有效 但在 Firefox 和 Opera 中无效 有什么方法可以将这个属性添加到 Firefo
  • JaxB读取类层次结构

    只是延伸使用 JaxB 解析类层次结构 https stackoverflow com questions 15676401 parsing class hierarchy using jaxb问题 想要使用 JaxB 读取以下 xml 文
  • 我需要引用命令替换吗?

    根据Google Shell 风格指南 https google github io styleguide shell xml Quoting 我应该 始终引用包含变量 命令替换 空格或 shell 元字符的字符串 除非需要小心的不带引号的
  • 是否可以让 Azure Pipeline 在提交时修改 README.md?

    我正在尝试在 Azure DevOps Repo 中自动生成和更新代码文档 我已经配置了一个管道 以便在提交到 master 分支时运行 python 脚本 该脚本从存储库中的文件中提取相关信息并创建一个 markdown 文件并将输出存储