【问题标题】:How do I re-run Github Actions?如何重新运行 Github Actions?
【发布时间】:2019-10-19 11:48:18
【问题描述】:

我在 Github 网络用户界面上看到了这个:

但我不清楚禁用的重新运行是我的.github/main.workflow 配置的结果,还是继承自 Github Actions 服务。

下面的示例工作流程 - 我没有看到任何明显会禁用重新运行的内容。

workflow "Test, Lint" {
  on = "push"
  resolves = [
    "Test",
    "Lint",
    "Lint Format"
  ]
}

action "Install" {
  uses = "actions/npm@master"
  args = "install"
  secrets = ["SECRET_TOKEN"]
}

action "Test" {
  needs = "Install"
  uses = "actions/npm@master"
  args = "test"
  secrets = ["SECRET_TOKEN"]
}

action "Lint" {
  needs = "Install"
  uses = "actions/npm@master"
  args = "run lint"
  secrets = ["SECRET_TOKEN"]
}

action "Lint Format" {
  needs = "Install"
  uses = "actions/npm@master"
  args = "run lint:format"
  secrets = ["SECRET_TOKEN"]
}

【问题讨论】:

  • 如果构建是针对 PR 分支的,并且您在主分支上进行了后续更改,那么您可以在本地 rebase PR 分支并将其推送回您的 GitHub 远程分支。或者,即使您没有在主分支上进行后续更改,您也可以在本地修改分支上的最新提交消息——通过进行小的空格或标点符号更改或其他方式——然后推送回您的 GitHub 远程分支。跨度>

标签: github github-actions


【解决方案1】:

有两种情况:

1) 在构建失败时,来自docs

(可选)如果运行失败,要重新运行工作流,在工作流的右上角,使用 重新运行检查 下拉菜单,然后选择 重新运行所有检查

2) 如果您的运行没有失败,您必须触发您的工作流程运行的事件on:

on: push最常见的情况下,你可以添加一个空提交来poke GitHub操作:

git commit --allow-empty -m "trigger GitHub actions"
git push

这将添加一个空提交(未更改文件),并将在 GitHub 上触发另一个 push 事件,从而触发另一个工作流运行。

但是,这确实会破坏提交历史记录。 如果您愿意,您可以稍后挤压/删除这些,但这可能并不理想。


这是对我的原始答案的更新,它在 2019 年 8 月基于 YAML 的重新发布之前提到了基于 GitHub Actions HCL 的 v1。 @tuff 首先做到了这一点,@instantepiphany 提出警告。

【讨论】:

  • 谢谢,这是我找到的唯一方法。
  • 我认为还有另一种方法可以重新运行。这是通过使用Deployment。在 workflow.yml 上设置部署 --- name: test name on: [deployment, push] ... 然后像这样调用 curl curl -X POST \ -H "Authorization: token xxxxxxxxxxxxxxxx" \ -d '{"ref": "master", "environment": "periodic execution"}' \ api.github.com/repos/${username}/${reponame}/deployments
  • 作为此答案中案例 #2 的替代方案(推送一个空提交),您还可以在本地修改分支上的最新提交消息 - 通过进行小的空格或标点符号更改或其他方式 - 和然后推送回你的 GitHub 远程分支。
【解决方案2】:

您现在(2020 年 1 月)也可以使用新的 GitHub Actions API(!,尽管仍是测试版),如 announced here

它确实包含GitHub Actions Secrets API

重新运行工作流

使用其 ID 重新运行您的工作流程。
对存储库具有写入权限的任何人都可以使用此端点。
GitHub 应用程序必须具有使用此端点的操作权限。

POST /repos/:owner/:repo/actions/runs/:run_id/rerun

因此,您可以尝试编写脚本并通过此新 API 重新运行 Actions 工作流。

【讨论】:

  • 不错的尝试,但是它不允许重新运行成功的运行。我收到的错误消息:{ "message": "This workflow run cannot be rerun", "documentation_url": "https://developer.github.com/v3/actions/workflow_runs/#re-run-a-workflow" }
  • @warpech 那……不幸。
  • 可能是这个 API 不像文档中那样工作。我收到此错误消息This workflow run cannot be rerun
  • @SourovRoyChowdhury 是一个之前成功运行的工作吗?如上所述,您无法重新运行成功的运行。
【解决方案3】:

这只是 Github Actions 的一个缺失/未实现的功能,现已添加。我没有对我的工作流文件或 repo 设置进行任何更改,但我现在可以看到 UI 以“重新运行所有检查”:

(我通过我的 PR 上检查部分的“详细信息”链接进入此页面)。

【讨论】:

  • 不幸的是,只有在失败的情况下才能重新运行操作(截至发布此评论) - 至少在我团队的存储库中,我们可以重新运行失败的操作,但该链接/按钮在成功的操作,这意味着我们必须推送一个空提交。现在这让我们继续使用 Travis,尽管我们想切换到 Actions,因为它们在其他方面比 Travis 更强大。如果 GitHub 没有为功能奇偶性添加此功能,我会感到惊讶 - Travis 支持重新运行成功的构建,BitBucket Pipelines 也是如此。
【解决方案4】:

假设您的工作流程从任何推送开始(您的 yml 包含一个触发器 on: [push]),要重新运行由提交触发的成功操作,添加一个新的轻量级标签就足够了。

我用这个划线器创建标签、推送标签、删除标签、推送标签删除:

git tag tmp-rerun && git push --tags && git tag -d tmp-rerun && git push origin :tmp-rerun

【讨论】:

    【解决方案5】:

    我制作了一个 python 脚本来触发 github 工作流:

    from github import Github
    
    # using an access token : https://github.com/settings/tokens
    g = Github("access_token")
    #g = Github(base_url="https://{hostname}/api/v3", login_or_token="access_token")
    
    
    for repo in g.get_user().get_repos():
        if (repo.get_workflows().totalCount > 0):
            print(repo.name, 'Have github workflow')
            for workflow in repo.get_workflows():
                if workflow.create_dispatch(repo.default_branch) is True:
                    print(repo.name, 'Manual workflow has been trigger')
                else:
                    print(repo.name, 'No nanual workflow, you need to add "workflow_dispatch:" to workflow file')
        else:
            print(repo.name, 'Does not have github workflow')
    

    你需要安装这个:https://github.com/PyGithub/PyGithub

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 2022-08-04
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2022-11-25
      相关资源
      最近更新 更多