更新另一个 Action 的工作流程文件的 GitHub Action

2024-05-19

我在同一个存储库中有两个 GitHub Actions。我正在尝试更新其中一个,但在尝试提交并推送更改时出现以下错误:

! [remote rejected] HEAD -> some-branch (refusing to allow a GitHub App to create or update workflow .github/workflows/the-other-action.yml without workflows permission)

这是我尝试运行的 GH 操作的简化版本:

name: my-action

on:
  workflow_dispatch:
  schedule:
    - cron: "0 9 * * *"

jobs:
  components:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the code
        uses: actions/checkout@v2

      - name: Update the other Action
        run: |
          # Do something to .github/workflows/the-other-action.yaml here

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v3
        with:
            token: ${{ secrets.GITHUB_TOKEN }}
            branch: some-branch
            commit-message: Updated stuff

我正在尝试找出如何给予workflows的许可GITHUB_TOKEN,但不确定如何做?

(对于上下文:我每天运行一次此操作,以检查其他操作中使用的工具的新版本是否已发布。如果是,它会创建一个 PR 更新其他操作以使用较新的版本)


您需要在此处使用具有工作流程权限的个人访问令牌,而不是GITHUB_TOKEN它有一个明确的范围。

实际上,这只是发生了变化(2022 年 9 月 8 日):

GitHub 操作:使用GITHUB_TOKEN with workflow_dispatch and repository_dispatch https://github.blog/changelog/2022-09-08-github-actions-use-github_token-with-workflow_dispatch-and-repository_dispatch/

客户现在可以使用GITHUB_TOKEN with workflow_dispatch and repository_dispatch触发工作流程的事件。

在此更改之前,触发的事件GITHUB_TOKEN不会创建新的工作流程运行。这样做是为了防止意外触发无休止的工作流程。

此更新有一个例外workflow_dispatch and repository_dispatch事件,因为它们是客户发出的显式调用,不太可能最终陷入循环。

name: Create Workflow Dispatch

on:   workflow_dispatch:

jobs:   build:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger Workflow
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.actions.createWorkflowDispatch({
              owner: context.repo.owner,
              repo: context.repo.repo,
              workflow_id: 'test.yml',
              ref: 'main',
            })

欲了解更多详情,请参阅
从工作流触发工作流 https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow.

So GITHUB_TOKEN现在可能可以工作了。


在OP问题的上下文中:这里的主要任务是从另一个工作流程中修改工作流程文件。

我上面提到的最近的 GitHub 更改允许使用以下命令触发工作流程GITHUB_TOKEN,但没有明确提及是否可以使用令牌直接将更改推送到工作流文件。这种能力可以解决最初的问题。

您仍然需要修改工作流程以提交更改并将更改推送到工作流程文件。您尝试更新工作流程文件的操作步骤如下所示:

- name: Update the other Action
  run: |
    # Do something to .github/workflows/the-other-action.yaml here
    git config --local user.email "[email protected] /cdn-cgi/l/email-protection"
    git config --local user.name "GitHub Action"
    git add .github/workflows/the-other-action.yaml
    git commit -m "Update the other Action"
    git push

您需要使用具有必要权限的令牌来推送更改,并且可以使用更新后的功能来测试它GITHUB_TOKEN:

随着peter-evans/create-pull-request@v3行动,那就是:

- name: Create Pull Request
  uses: peter-evans/create-pull-request@v3
  with:
    token: ${{ secrets.GITHUB_TOKEN }}
    branch: some-branch
    commit-message: Updated stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新另一个 Action 的工作流程文件的 GitHub Action 的相关文章

随机推荐

  • 比较 rspec 自定义 ActiveRecord::RecordInvalid 错误消息

    模型中有以下内容 validates uniqueness of title if proc item item item type tag case sensitive false message I18n t errors key va
  • 可以有一个带有可变列的表吗?

    这可能是一个愚蠢的问题 但这里是 是否可以创建一个能够包含具有可变列数和自定义列名称的行的动态表 我浏览过 EAV 建模 但看起来很沉重 现实生活中的例子可能是这样的 假设我有一个客户登记册 但每个客户可能需要输入不同的信息 根据您要输入的
  • 无法解决dll之间的冲突

    我在构建中收到类似于以下内容的警告墙 No way to resolve conflict between Newtonsoft Json Version 7 0 0 0 and Newtonsoft Json Version 6 0 0
  • 将下一个参数作为 String.Format 中的字段宽度

    在 C 中 我有一个想要用于某些字符串的宽度 但直到运行时我才知道该宽度 我正在做这样的事情 string Format 0 digits value prints 123 as 123 是否有一个字符串格式化指令可以让我指定它 而无需像这
  • Powershell v2 远程处理和委派

    我在两台机器上安装了 Powershell V2 并在两台机器上运行 Enable PsRemoting 两台机器都是Win 2003 R2 并且都加入了同一个活动目录域 我可以成功地远程运行命令 所以PS远程处理是在本地服务器和远程服务器
  • 是否可以设置输入文本值的样式?

    我想知道是否可以设置输入框值的样式 such http jsfiddle net aCwhY as
  • 运行maven编译两次

    我正在将 ant 项目迁移到 Maven 这个项目非常不寻常 它使用两个编译步骤和这些编译步骤之间的代码生成步骤 整个构建过程可以描述如下 编译 src 目录中的所有内容 运行内部java工具 将java指向已编译的类和用于编译这些类的ja
  • MVCC 如何与 MySql 中的 Lock 配合使用?

    我知道Mysql中使用锁或者MVCC可以实现并发控制 比如可重复读 但我不知道MVCC如何避免幻读 在其他地方了解到一般是通过MVCC和Gap Lock来实现的 但是目前我理解的是MVCC不需要锁 即更新和删除都是使用undo log来实现
  • 每个新的 COM 类都必须重新实现 IUnknown 接口吗?

    抱歉 如果这个问题对每个人来说都是显而易见的 但我对 COM 很陌生 从教程中我看到这里http www codeguru com cpp com tech activex tutorials article php c5567 http
  • 在午夜更新应用程序徽章,并提供以下选项:应用程序未启动或在后台,徽章数量可能会减少

    我正在阅读许多有关本地通知的内容以及它们如何帮助更新应用程序徽章编号 我想在午夜更新此徽章 并将其值设置为我在午夜之前无法知道的数字 因此 如果可能的话 我想在午夜启动一个功能来更新 加载一些数据 检查要显示的数字 并将其显示在徽章上 当然
  • 尝试抓住最后的问题

    在 Try Catch Final 块中 无论发生什么情况 finally 块总是执行 还是仅当 catch 块不返回错误时才执行 我的印象是 只有当 catch 块没有错误地通过时 finally 块才会执行 如果 catch 块因错误而
  • 有谁知道变量必须在函数顶部定义的原因

    I have a question does anyone know why the variables have to be defined initialized at the beginning of a function Why c
  • Erlang 中的接受器池和负载平衡?

    From http www erlang org doc man gen tcp html accept 1 http www erlang org doc man gen tcp html accept 1 值得注意的是 accept 调
  • 从bigquery中的json字符串中提取键和值,其中json文档中没有指定的键

    我在 bigquery 中有一个表 其中有对象 对于每个对象 我都有一些字符串化的 json 在 json 中 示例行如下所示 ObjectID 1984931229 indexed abstract IndexLength 123 Inv
  • 使用 Spring 进行 Swing GUI 开发

    是否有任何使用 Spring 最好是 v3 构建 Swing GUI 应用程序的不错的教程 这是可能的 但如果您想使用 GUI 构建器 则无法通过 spring 初始化任何 GUI 组合 所以你不能使用依赖注入之类的东西 Spring 管理
  • Weld - 异步事件观察者

    我正在使用 Weld 来观察事件 我认为有一种方法可以指定观察者是否异步 但我没有找到该注释或文档 观察者可以异步吗 如果可以 我需要做什么才能实现这一点 对此有一个公开请求 CDI 31 异步事件 https issues jboss o
  • Type.GetInterface 和嵌套类型

    我刚刚发现 Type GetInterface 和嵌套类型有一个非常奇怪的行为 以下示例代码将显示问题 我使用接口的 Type FullName 来检查给定类型是否派生自该接口 public interface IStandardInter
  • 在GCC中添加父目录的包含路径

    我想将父目录中的文件包含在我正在处理的项目中 所有的头文件都在父目录中 有没有办法在命令行上使用 I 来搜索父目录中的包含而不使用绝对路径 我知道我可以使用 makefile 解决这些问题 并且我可能最终会这样做 但我想知道是否有一个可以使
  • jQuery 变量在定义时声称它是未定义的

    我试图在同一页面上有两个自动填充文本框 一个用于手机型号 input1 一个用于固件 input2 当两者都填充时 我希望显示一个带有ID input1input2 的div 但是当在input1 中输入值时 它声称phone 的变量未定义
  • 更新另一个 Action 的工作流程文件的 GitHub Action

    我在同一个存储库中有两个 GitHub Actions 我正在尝试更新其中一个 但在尝试提交并推送更改时出现以下错误 remote rejected HEAD gt some branch refusing to allow a GitHu