CI: use BuildJet & self-hosted Windows runners

1. Use buildjet for the longer Linux CI workflows.
2. Use a self-hosted Windows runner.
3. Make CIFuzz run on merge to main or release branch.

Two runs each of the original workflow files and the updated
workflows in this PR:

                                GitHub  GitHub   BuildJet BuildJet
codeql-analysis.yml             4m 30s  cached    2m 56s  2m 59s
cross-darwin.yml                3m 10s  3m 19s    1m 33s  1m 30s
cross-freebsd.yml               3m 33s  3m 10s    1m 28s  1m 22s
cross-openbsd.yml               3m 4s   2m 36s    1m 29s  1m 22s
cross-wasm.yml                  1m 59s  2m  2s    1m 12s  1m 16s
cross-windows.yml               2m 45s  3m  0s    1m 44s  1m 25s
linux32.yml                     4m 27s  4m  0s    1m 55s  2m  8s
linux-race.yml                  3m 54s  4m  7s    2m 22s  2m 12s
linux.yml                       4m 23s  4m 39s    2m 37s  2m 15s
static-analysis.yml
 /vet                           1m 41s  2m 22s       52s     56s
 /staticcheck(linux, amd64)     2m 47s  2m 38s    1m  7s  1m 10s
 /staticcheck(windows, amd64)   2m 5s   2m  4s    1m  6s  1m  8s
 /staticcheck(darwin, amd64)    2m 14s  2m 20s    1m 10s  1m 10s
 /staticcheck(windows, 386)     2m 36s  1m 58s    1m 23s  1m  8s
vm.yml                          1m 30s  1m 32s    2m 31s  2m 23s
windows.yml                     6m 23s  6m 19s    3m 40s  3m 53s

A few very short workflows are being left on GitHub-hosted runners, like
licenses and gofmt. These benefit from the quicker dispatch to GitHub
hosted runners.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
This commit is contained in:
Denton Gentry 2022-09-17 10:12:01 -07:00
parent fb4e23506f
commit 3d24611e32
No known key found for this signature in database
13 changed files with 24 additions and 21 deletions

View File

@ -1,5 +1,7 @@
name: CIFuzz name: CIFuzz
on: [pull_request] on:
push:
branches: [ main, release-branch/* ]
concurrency: concurrency:
group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }}
@ -7,7 +9,7 @@ concurrency:
jobs: jobs:
Fuzzing: Fuzzing:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
steps: steps:
- name: Build Fuzzers - name: Build Fuzzers
id: build id: build
@ -20,7 +22,7 @@ jobs:
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with: with:
oss-fuzz-project-name: 'tailscale' oss-fuzz-project-name: 'tailscale'
fuzz-seconds: 300 fuzz-seconds: 900
dry-run: false dry-run: false
language: go language: go
- name: Upload Crash - name: Upload Crash

View File

@ -27,7 +27,7 @@ concurrency:
jobs: jobs:
analyze: analyze:
name: Analyze name: Analyze
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
permissions: permissions:
actions: read actions: read
contents: read contents: read

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"
@ -38,10 +38,6 @@ jobs:
- name: Get QEMU - name: Get QEMU
run: | run: |
# The qemu in Ubuntu 20.04 (Focal) is too old; we need 5.x something
# to run Go binaries. 5.2.0 (Debian bullseye) empirically works, and
# use this PPA which brings in a modern qemu.
sudo add-apt-repository -y ppa:jacob/virtualisation
sudo apt-get -y update sudo apt-get -y update
sudo apt-get -y install qemu-user sudo apt-get -y install qemu-user

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"

View File

@ -40,7 +40,7 @@ jobs:
if: failure() && github.event_name == 'push' if: failure() && github.event_name == 'push'
vet: vet:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
steps: steps:
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v3 uses: actions/setup-go@v3
@ -66,7 +66,7 @@ jobs:
if: failure() && github.event_name == 'push' if: failure() && github.event_name == 'push'
staticcheck: staticcheck:
runs-on: ubuntu-latest runs-on: buildjet-4vcpu-ubuntu-2204
strategy: strategy:
matrix: matrix:
goos: [linux, windows, darwin] goos: [linux, windows, darwin]

View File

@ -11,7 +11,7 @@ concurrency:
jobs: jobs:
ubuntu2004-LTS-cloud-base: ubuntu2004-LTS-cloud-base:
runs-on: [ self-hosted, linux, vm ] runs-on: buildjet-4vcpu-ubuntu-2204
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"
@ -27,12 +27,17 @@ jobs:
with: with:
go-version-file: go.mod go-version-file: go.mod
- name: Get QEMU
run: |
sudo apt-get -y update
sudo apt-get -y install qemu-system-x86 qemu-user genisoimage qemu-utils
- name: Run VM tests - name: Run VM tests
run: go test ./tstest/integration/vms -v -no-s3 -run-vm-tests -run=TestRunUbuntu2004 run: go test ./tstest/integration/vms -v -no-s3 -run-vm-tests -run=TestRunUbuntu2004
env: env:
HOME: "/tmp" HOME: "/tmp"
TMPDIR: "/tmp" TMPDIR: "/tmp"
XDG_CACHE_HOME: "/var/lib/ghrunner/cache" XDG_CACHE_HOME: "/home/runner/cache"
- uses: k0kubun/action-slack@v2.0.0 - uses: k0kubun/action-slack@v2.0.0
with: with:

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
test: test:
runs-on: windows-latest runs-on: [ self-hosted, Windows ]
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"