1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
name: c
on:
push:
branches:
- main
tags:
- v*
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
build_test:
name: build (rust ${{ matrix.rust_toolchain.label }}, ${{ matrix.build.runner }})
# This matrix targets runner labels (linux-x86_64-16cpu, linux-arm64-16cpu, windows-8vcpu) that
# only exist in the upstream tailscale/tailscale-rs org. On this fork they do not exist, so the
# jobs would queue forever and never report (clogging the Actions tab + blocking nothing). Skip the
# whole job off-upstream — the C-FFI examples are built locally. This mirrors the same owner guard
# on `ci.yml`'s `build_test`/`arch_independent`, `elixir.yml`, and `python.yml`. Delete this guard
# if/when the fork provisions its own runners with these labels.
if: ${{ github.repository_owner == 'tailscale' }}
runs-on: ${{ matrix.build.runner }}
strategy:
matrix:
rust_toolchain:
- version: 1.95.0
label: latest
build:
- triple: x86_64-unknown-linux-gnu
runner: linux-x86_64-16cpu
- triple: aarch64-unknown-linux-gnu
runner: linux-arm64-16cpu
- triple: x86_64-pc-windows-gnu
runner: windows-8vcpu
# macos uses clang, not working yet
# - triple: aarch64-apple-darwin
# runner: macos-26
defaults:
run:
working-directory: ts_ffi
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup rust
id: setup-rust
uses: ./.github/actions/setup-rust
with:
toolchain-version: ${{ matrix.rust_toolchain.version }}
builder-triple: ${{ matrix.build.triple }}
- name: Build examples
run: make -C examples