web-dev-qa-db-ja.com

Githubアクションを再実行するにはどうすればよいですか?

これはGithub Web UIに表示されます。

screenshot

しかし、無効にされた再実行が.github/main.workflow構成の結果なのか、Githubアクションサービスから継承されたのかははっきりしません。

以下のサンプルワークフロー-再実行を無効にするような明らかなものはありません。

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"]
}
17
tuff

これは、Githubアクションに欠けている/実装されていない機能であり、現在追加されています。ワークフローファイルまたはリポジトリ設定に変更を加えていませんが、「すべてのチェックを再実行」するためのUIが表示されます。

screenshot of re-run ui

(私は私のPRのチェックセクションから「詳細」リンクをたどってこのページに行きました)。

4
tuff

2つの状況があります。

1)失敗したビルドの場合 docs

必要に応じて、実行が失敗した場合、ワークフローを再実行するには、ワークフローの右上隅で、再実行チェックドロップダウンを使用しますダウンメニューからを選択し、すべてのチェックを再実行しますrerun

2)実行が失敗しなかった場合、ワークフローが実行するイベントをトリガーする必要がありますon:

on: Pushの最も一般的なケースでは、空のコミットを追加してGitHubアクションをポークできます。

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

これにより空のコミットが追加され(ファイルは変更されません)、GitHubで別のPushイベントがトリガーされるため、別のワークフローの実行がトリガーされます。

ただし、これはコミット履歴を汚してしまいます。必要に応じて、後でこれらをスカッシュ/削除できますが、おそらく理想的ではありません。


これは、2019年8月のYAMLベースの再リリースに先立って、GitHub Actions HCLベースのv1に言及していた私の元の回答に対する更新です。 @tuffが最初にこれを正しく行い、@ instantepiphanyの警告がありました。

20
maxheld

また、(2020年1月)新しいGitHub Actions API(!、まだベータ版です)を-として使用することもできます。 こちらで発表

そして GitHub Actions Secrets API が含まれています:

ワークフローを再実行する

IDを使用してワークフロー実行を再実行します。
リポジトリへの書き込みアクセス権を持つ誰もがこのエンドポイントを使用できます。
GitHubアプリには、このエンドポイントを使用するためのアクション権限が必要です。

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

したがって、スクリプトを作成して、この新しいAPIを通じてアクションワークフローを再実行できます。

1
VonC

以下のセルフプラグ。

私の相棒と私は非常にシンプルなGitHubアプリを一緒に投げて、UIからリポジトリディスパッチをトリガーできるようにしました。再実行ほど対象範囲は広くありませんが、ワークフローをトリガーする方法を提供します。

https://www.actionspanel.app/

これにより、空のコミットなどを行う必要がなくなります。

0
aaronbatilo