🐇

GitHub ActionsでTailscaleを使う

2024/08/24に公開

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に転がってるドキュメント読んでれば色々わかる)

Discussion