macOS: action unconditionally overrides system DNS (networksetup 100.100.100.100), breaking Actions broker resolution and cancelling jobs mid-run
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 52/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- github-actions, macos, typescript
- 領域
- ci-cd, devops, networking
調査の方向性
src/main.ts の configureDNSOnMacOS から開始し、#200 で導入された macOS の join および post-step フローを追跡します。Action の networksetup 呼び出しとの関係で --accept-dns がどのように処理されるかを確認し、opt-in または --accept-dns=false の動作と DNS の復元を定義します。完了条件は、job 中に Action が runner の DNS を無条件に上書きしなくなることです。
索引モデルが issue の本文から書いたものです。
説明
What happens
On a GitHub-hosted macOS runner, a job that connects with tailscale/github-action@v4 and then runs for several minutes gets cancelled ~5 min in with the generic The operation was canceled. Runner diagnostic logs (ACTIONS_RUNNER_DEBUG=true) show repeated job-lease renewal failures:
WARN GitHubActionsService] Attempt N of POST .../renewjob failed (Socket Error: HostNotFound)
ERR JobDispatcher] Catch exception during renew runner job ...
INFO JobDispatcher] Send job cancellation message to worker ...
The Actions broker hostname (run-actions-*.actions.githubusercontent.com) fails to resolve (HostNotFound), so the runner cannot renew its lease and the service cancels the healthy job.
Root cause
On join (macOS only), configureDNSOnMacOS in src/main.ts runs:
networksetup -setdnsservers Ethernet 100.100.100.100
repointing the runner's system DNS at the tailnet resolver, which intermittently fails to forward public queries — so the broker does not resolve, renewjob fails, and the job is cancelled. Three problems:
- Unconditional on macOS — gated only on the tailnet-wide
MagicDNSEnabledflag, not on--accept-dns. Passingargs: --accept-dns=falsedoes not prevent it (that only affectstailscale up, not the action's ownnetworksetupcall). - No input to disable the DNS configuration.
- The action never restores DNS, so the override persists for the whole job.
Introduced by #200.
Impact
Any macOS job that stays up long enough to hit a lease renewal while the tailnet resolver cannot forward the broker query is silently cancelled. Intermittent, so it reads as flaky infrastructure.
Workaround
Revert DNS immediately after the action (safe when you do not need MagicDNS name resolution — reach peers by Tailscale IP):
- run: sudo networksetup -setdnsservers Ethernet Empty
Request
Make the macOS DNS configuration opt-in (or skip it when --accept-dns=false), and/or restore the original DNS in the post step. An input such as set-dns: false would suffice.
Environment
GitHub-hosted macOS (arm64), tailscale/github-action@v4, Tailscale 1.94.2.
- 主要言語
- TypeScript
- スター
- 938
- フォーク
- 137
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
tailscale/github-action のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
tailscale/github-action#283 · コメント 1 件 · リアクション 1 件 ·
-
fr
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
tailscale/github-action#317 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
tailscale/github-action#316 · コメント 2 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 76/100
tailscale/github-action#313 · リアクション 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
tailscale/github-action#287 · コメント 7 件 ·
tailscale/github-action の issue をすべて見る
似ている issue
-
comp/desktop P3 type/bug
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
NousResearch/hermes-agent#118866 ·
-
Browser Waiting for: Product Owner
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
getsentry/sentry-javascript#24577 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
agilepathway/label-checker#640 ·
-
Plugin stuck at "loading" on DSH 0.1.6-alpha.2 — turnTail list slot registration missing options.id オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
chrisparsons83/flexspotff#153 ·