我在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"]
}
答案 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缺少/未实现的功能,现已添加。我没有对工作流程文件或存储库设置进行任何更改,但现在可以看到用户界面“重新运行所有检查”:
(我通过点击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')