This GitHub Action connects to your Tailscale network by adding a step to your workflow.
- name: Tailscale
uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
Subsequent steps in the Action can then access nodes in your Tailnet.
oauth-client-id and oauth-secret are an OAuth client
for the tailnet to be accessed. We recommend storing these as
GitHub Encrypted Secrets.
OAuth clients used for this purpose must have the
auth_keys
scope.
tags is a comma-separated list of one or more ACL Tags for the node. At least one tag is required: an OAuth client is not associated with any of the Users on the tailnet, it has to Tag its nodes.
Nodes created by this Action are marked as Ephemeral to be automatically removed by the coordination server a short time after they finish their run. The nodes are also marked Preapproved on tailnets which use Device Approval
Propagating information about new peers - such as the node created by this action - across your tailnet is an eventually consistent process, and brief delays are expected. Until the GitHub workflow node becomes visible, other peers will not accept connections. It is best to verify connectivity to the intended nodes before executing steps that rely on them.
You can do this by adding a list of targets to the action configuration:
- name: Tailscale
uses: tailscale/github-action@v3
with:
targets: 100.x.y.z,my-machine.my-tailnet.ts.net
or with the tailscale ping command if you do not know the targets at the time of installing Tailscale in the workflow:
tailscale ping my-target.my-tailnet.ts.net
If you are using this Action in a Tailnet Lock enabled network, you need to:
- Authenticate using an ephemeral reusable pre-signed auth key rather than an OAuth client.
- Specify a state directory for the client to store the Tailnet Key Authority data in.
- name: Tailscale
uses: tailscale/github-action@v3
with:
authkey: tskey-auth-...
statedir: /tmp/tailscale-state/
Which Tailscale version to use can be set like this:
- name: Tailscale
uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
version: 1.52.0
latest
or unstable
can also be specified to use the latest stable or unstable version respectively:
- name: Tailscale
uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
version: latest
You can find the latest Tailscale stable version number at https://pkgs.tailscale.com/stable/#static.
Caching can reduce download times and download failures on runners with slower network connectivity. Although caching is not enabled by default, it is generally recommended.
You can opt in to caching Tailscale binaries by passing 'true'
to the use-cache
input:
- name: Tailscale
uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
use-cache: 'true'