mirror of
https://github.com/tailscale/github-action.git
synced 2026-08-20 18:49:24 +00:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](de0fac2e45...df4cb1c069)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
168 lines
5.4 KiB
YAML
168 lines
5.4 KiB
YAML
name: "Integration Tests"
|
|
|
|
permissions:
|
|
id-token: write # This is required for requesting the JWT for workload identity
|
|
|
|
on:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
# Matrix test for all supported platforms and architectures
|
|
|
|
integration-tests:
|
|
# Skip our integration tests if the PR is from a fork. This has the consequence of
|
|
# disabling these even if the PR is from a forked repo into itself, but given that
|
|
# these tests are very specific to our internal test environment that is a good thing.
|
|
#
|
|
# Similarly, skip if this is running from a PR that has been opened by dependabot as
|
|
# the bot does not have credentials for the integration testing tailnet.
|
|
# TODO(mpminardi): revisit / remove this if / when we give dependabot a tailnet for
|
|
# testing with a smaller blast radius.
|
|
if: ${{ github.event_name == 'push' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]') }}
|
|
name: ${{ matrix.os }} (${{ matrix.arch }}) (${{ matrix.credential-type }}) tailscale-${{ matrix.version }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# Linux tests (AMD64)
|
|
- os: ubuntu-latest
|
|
runner-os: Linux
|
|
arch: amd64
|
|
version: latest
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: oauth
|
|
|
|
# Try unstable too
|
|
- os: ubuntu-latest
|
|
runner-os: Linux
|
|
arch: amd64
|
|
version: unstable
|
|
credential-type: oauth
|
|
|
|
# Try a pinned version
|
|
- os: ubuntu-latest
|
|
runner-os: Linux
|
|
arch: amd64
|
|
credential-type: oauth
|
|
# leave version blank to fall back to default
|
|
|
|
# Linux tests (ARM64)
|
|
- os: ubuntu-24.04-arm
|
|
runner-os: Linux
|
|
arch: arm64
|
|
version: latest
|
|
credential-type: oauth
|
|
|
|
# Windows tests (AMD64)
|
|
- os: windows-latest
|
|
runner-os: Windows
|
|
arch: amd64
|
|
version: latest
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: oauth
|
|
|
|
# Windows tests (ARM64)
|
|
- os: windows-11-arm
|
|
runner-os: Windows
|
|
arch: arm64
|
|
version: latest
|
|
credential-type: oauth
|
|
|
|
# macOS 14 (ARM)
|
|
- os: macos-14
|
|
runner-os: macOS
|
|
arch: arm64
|
|
version: latest
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: oauth
|
|
|
|
# macOS latest (ARM)
|
|
- os: macos-latest
|
|
runner-os: macOS
|
|
arch: arm64
|
|
version: latest
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: oauth
|
|
|
|
# Try workload identity for each platform
|
|
- os: macos-latest
|
|
runner-os: macOS
|
|
arch: amd64
|
|
version: latest
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: workload-identity
|
|
|
|
- os: windows-latest
|
|
runner-os: Windows
|
|
arch: amd64
|
|
ping: 100.99.0.2,lax-pve.pineapplefish.ts.net,lax-pve
|
|
credential-type: workload-identity
|
|
# leave version blank to fall back to default
|
|
|
|
# Try adding in an unstable
|
|
- os: ubuntu-latest
|
|
runner-os: Linux
|
|
arch: amd64
|
|
version: unstable
|
|
credential-type: workload-identity
|
|
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
with:
|
|
node-version: "24"
|
|
cache: "npm"
|
|
|
|
- name: Install Dependencies
|
|
run: npm ci
|
|
|
|
- name: Build Action
|
|
run: npm run build
|
|
|
|
# Test with OAuth authentication
|
|
- name: Test Action
|
|
id: tailscale-oauth
|
|
uses: ./
|
|
with:
|
|
oauth-client-id: ${{ matrix.credential-type == 'oauth' && secrets.TS_AUTH_KEYS_OAUTH_CLIENT_ID || secrets.TS_WORKLOAD_IDENTITY_CLIENT_ID }}
|
|
oauth-secret: ${{ matrix.credential-type == 'oauth' && secrets.TS_AUTH_KEYS_OAUTH_CLIENT_SECRET || '' }}
|
|
audience: ${{ matrix.credential-type == 'workload-identity' && secrets.TS_AUDIENCE || ''}}
|
|
tags: "tag:ci"
|
|
version: "${{ matrix.version }}"
|
|
use-cache: false
|
|
timeout: "5m"
|
|
retry: 3
|
|
ping: "${{ matrix.ping }}"
|
|
|
|
# Look up names to make sure MagicDNS is working
|
|
- name: Look up qualified name
|
|
run: nslookup lax-pve.pineapplefish.ts.net
|
|
|
|
- name: Look up unqualified name
|
|
run: nslookup lax-pve
|
|
|
|
# Test Tailscale status command
|
|
- name: Check Tailscale Status
|
|
if: steps.tailscale-oauth.outcome == 'success'
|
|
run: |
|
|
echo "Testing Tailscale status command..."
|
|
if [ "${{ matrix.runner-os }}" == "Windows" ]; then
|
|
# Windows uses system-installed binary without sudo
|
|
tailscale status
|
|
tailscale version
|
|
else
|
|
# Linux and macOS use system-installed binary with sudo
|
|
sudo -E tailscale status
|
|
tailscale version
|
|
fi
|
|
shell: bash
|