如何重新运行Github Action?

时间:2019-06-03 23:08:13

标签: github github-actions

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

screenshot

但是我不清楚是否禁用重新运行是我的.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"]
}

5 个答案:

答案 0 :(得分:7)

您现在也可以(2020年1月)将新的 GitHub Actions API (!,虽然仍为beta)用作announced here

它确实包含一个GitHub Actions Secrets API

重新运行工作流程

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

"intent://" + data + "#Intent;scheme=" + scheme + ";package=" + package_name + ";S.browser_fallback_url=" + store_link_encoded + ";S.market_referrer=" + referrer + ";end"

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

答案 1 :(得分:3)

假设您的工作流在任何推动下开始(您的yml包含触发器on: [push]),要重新运行由提交触发的成功操作,只需添加一个新的liteweight标签即可。

我使用这一衬纸来创建标签,推动标签,删除标签,推动标签删除:

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

答案 2 :(得分:1)

到目前为止,似乎没有办法从UI重新运行GitHub操作。

您可以添加一个空提交以戳GitHub上的操作:

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

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

但是,这确实弄糟了提交历史。 以后您可以根据需要挤压/去除这些,但这可能并不理想。

答案 3 :(得分:0)

这只是Github Actions缺少/未实现的功能,现已添加。我没有对工作流程文件或存储库设置进行任何更改,但现在可以看到用户界面“重新运行所有检查”:

screenshot of re-run ui

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

答案 4 :(得分:0)

我编写了一个 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