我如何重新运行 Github 操作?
How do I re-run Github Actions?
我在 Github 网上看到这个 UI:
但我不清楚禁用的重新运行是我的 .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"]
}
有两种情况:
1) 在构建失败时 ,来自 docs
Optionally, if the run failed, to re-run the workflow, in the upper-right corner of the workflow, use the Re-run checks drop-down menu, and select Re-run all checks.
2) 如果您的运行没有失败,您必须触发您的工作流运行s on:
的事件。
在最常见的on: push
情况下,您可以添加一个空提交来戳GitHub actions:
git commit --allow-empty -m "trigger GitHub actions"
git push
这将添加一个空提交(没有文件更改),并将在 GitHub 上触发另一个 push
事件,因此触发另一个工作流 运行。
然而,这确实会弄乱提交历史。
如果你愿意,以后可以 squash/remove 这些,但这可能并不理想。
这是对我的原始答案的更新,它提到了 2019 年 8 月 YAML-based re-release 之前的 GitHub 操作 HCL-based v1。
@tuff 首先做对了,@instantepiphany 的警告。
这只是 Github 操作的 missing/unimplemented 功能,现已添加。我没有对我的工作流文件或回购设置进行任何更改,但我现在可以看到 UI 到 "Re-run all checks":
(我通过我的 PR 的检查部分中的 "Details" link 进入了这个页面)。
您现在(2020 年 1 月)也可以使用新的 GitHub Actions API(!, still beta though), as announced here。
它确实包括 GitHub Actions Secrets API:
Re-run a workflow
Re-runs your workflow run using its id.
Anyone with write access to the repository can use this endpoint.
GitHub Apps must have the actions permission to use this endpoint.
POST /repos/:owner/:repo/actions/runs/:run_id/rerun
因此您可以尝试编写脚本并通过这个新的 API 重新运行 Actions 工作流。
假设您的工作流从任何推送开始(您的 yml 包含触发器 on: [push]
),要重新 运行 由提交触发的成功操作,添加一个新的轻量级标签就足够了.
我用这个liner来创建标签,推送标签,删除标签,推送标签删除:
git tag tmp-rerun && git push --tags && git tag -d tmp-rerun && git push origin :tmp-rerun
我制作了一个 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')
我在 Github 网上看到这个 UI:
但我不清楚禁用的重新运行是我的 .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"]
}
有两种情况:
1) 在构建失败时 ,来自 docs
Optionally, if the run failed, to re-run the workflow, in the upper-right corner of the workflow, use the Re-run checks drop-down menu, and select Re-run all checks.
2) 如果您的运行没有失败,您必须触发您的工作流运行s on:
的事件。
在最常见的on: push
情况下,您可以添加一个空提交来戳GitHub actions:
git commit --allow-empty -m "trigger GitHub actions"
git push
这将添加一个空提交(没有文件更改),并将在 GitHub 上触发另一个 push
事件,因此触发另一个工作流 运行。
然而,这确实会弄乱提交历史。 如果你愿意,以后可以 squash/remove 这些,但这可能并不理想。
这是对我的原始答案的更新,它提到了 2019 年 8 月 YAML-based re-release 之前的 GitHub 操作 HCL-based v1。 @tuff 首先做对了,@instantepiphany 的警告。
这只是 Github 操作的 missing/unimplemented 功能,现已添加。我没有对我的工作流文件或回购设置进行任何更改,但我现在可以看到 UI 到 "Re-run all checks":
(我通过我的 PR 的检查部分中的 "Details" link 进入了这个页面)。
您现在(2020 年 1 月)也可以使用新的 GitHub Actions API(!, still beta though), as announced here。
它确实包括 GitHub Actions Secrets API:
Re-run a workflow
Re-runs your workflow run using its id.
Anyone with write access to the repository can use this endpoint.
GitHub Apps must have the actions permission to use this endpoint.POST /repos/:owner/:repo/actions/runs/:run_id/rerun
因此您可以尝试编写脚本并通过这个新的 API 重新运行 Actions 工作流。
假设您的工作流从任何推送开始(您的 yml 包含触发器 on: [push]
),要重新 运行 由提交触发的成功操作,添加一个新的轻量级标签就足够了.
我用这个liner来创建标签,推送标签,删除标签,推送标签删除:
git tag tmp-rerun && git push --tags && git tag -d tmp-rerun && git push origin :tmp-rerun
我制作了一个 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')