🐇

GitHub ActionsでTailscaleを使う

2025/01/02に公開

GitHub Actions 便利ですよね。

数日前にちゃんと触り始めたのにもうハマっています。

ところで、Tailscale 経由で GitHub Actions で遊びたくないですか??

ポート開けたくなかったり、諸事情により開けられなかったりで Tailscale 使っている人がそこそこいそうなので記事を書くことにしました。

Tailscale の OAuth Client の取得

Tailscale の Access Contorl を以下のように修正

https://login.tailscale.com/admin/acls/file

{
        ...
	"tagOwners": {
+           "tag:ci": ["自分のアカウントのメールアドレス"],
	},
	"acls": [
            {"action": "accept", "src": ["*"], "dst": ["*:*"]},
+           {"action": "accept", "src": ["tag:ci"], "dst": ["tag:ci:*"]},
	],
	...
}

次に、Settings > OAuth Clientから、OAuth のクライアントを作成する。

https://login.tailscale.com/admin/settings/oauth

Generate OAuth Clinetを押し、Devicesに読み書き両方を選択する。

このときタグを選べ〜と言われるので、先程作成したtag:ciを選択する。

クライアントを作成すると、クライアントの ID と Secrets が生成されるのでメモしておく。

GitHub Actions の Workflow

なんのことはない、tailscale/github-actionからちょっとお借りするだけ。

https://github.com/tailscale/github-action

on: ...

jobs:
  deploy:
    name: GitHub Actions with Tailscale
    runs-on: ubuntu-latest
    steps:
      - name: Connect to Tailscale
        uses: tailscale/github-action@v2
        with:
          oauth-client-id: ${{ secrets.TAILSCALE_OAUTH_CLIENT_ID }}
          oauth-secret: ${{ secrets.TAILSCALE_OAUTH_CLIENT_SECRET }}
          tags: tag:ci

あとは、GitHub のSettings > Secrets and variables > ActionsSecretsに、先程メモした、クライアントの ID と Secrets を追加しといてあげるだけ。

https://github.com/mimifuwa/uec-report/settings/secrets/actions

以上、これだけでmainへの push を監視して、自宅鯖へデプロイとか Tailscale 経由で GitHub Actions で遊べるようになる。
(GitHub に転がってるドキュメント読んでれば色々わかる)

GitHubで編集を提案

Discussion