From 3d24611e325de36ea7ffac2d6288cf15e3aac784 Mon Sep 17 00:00:00 2001 From: Denton Gentry Date: Sat, 17 Sep 2022 10:12:01 -0700 Subject: [PATCH] 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 --- .github/workflows/cifuzz.yml | 8 +++++--- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/cross-darwin.yml | 2 +- .github/workflows/cross-freebsd.yml | 2 +- .github/workflows/cross-openbsd.yml | 2 +- .github/workflows/cross-wasm.yml | 2 +- .github/workflows/cross-windows.yml | 2 +- .github/workflows/linux-race.yml | 2 +- .github/workflows/linux.yml | 6 +----- .github/workflows/linux32.yml | 2 +- .github/workflows/static-analysis.yml | 4 ++-- .github/workflows/vm.yml | 9 +++++++-- .github/workflows/windows.yml | 2 +- 13 files changed, 24 insertions(+), 21 deletions(-) diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index d4c1e0921..2fb9db43c 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -1,5 +1,7 @@ name: CIFuzz -on: [pull_request] +on: + push: + branches: [ main, release-branch/* ] concurrency: group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }} @@ -7,7 +9,7 @@ concurrency: jobs: Fuzzing: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 steps: - name: Build Fuzzers id: build @@ -20,7 +22,7 @@ jobs: uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: 'tailscale' - fuzz-seconds: 300 + fuzz-seconds: 900 dry-run: false language: go - name: Upload Crash diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 84d5b903e..c02a8b5f6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -27,7 +27,7 @@ concurrency: jobs: analyze: name: Analyze - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 permissions: actions: read contents: read diff --git a/.github/workflows/cross-darwin.yml b/.github/workflows/cross-darwin.yml index 5dfab485e..e6cc2b7c6 100644 --- a/.github/workflows/cross-darwin.yml +++ b/.github/workflows/cross-darwin.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/cross-freebsd.yml b/.github/workflows/cross-freebsd.yml index 684e31cf2..0a7b2be7f 100644 --- a/.github/workflows/cross-freebsd.yml +++ b/.github/workflows/cross-freebsd.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/cross-openbsd.yml b/.github/workflows/cross-openbsd.yml index cc4cd11b2..a65110450 100644 --- a/.github/workflows/cross-openbsd.yml +++ b/.github/workflows/cross-openbsd.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/cross-wasm.yml b/.github/workflows/cross-wasm.yml index 60a397add..93f82e9f7 100644 --- a/.github/workflows/cross-wasm.yml +++ b/.github/workflows/cross-wasm.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/cross-windows.yml b/.github/workflows/cross-windows.yml index 470cc4a2f..8950e79e0 100644 --- a/.github/workflows/cross-windows.yml +++ b/.github/workflows/cross-windows.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/linux-race.yml b/.github/workflows/linux-race.yml index cd92d717c..70812b885 100644 --- a/.github/workflows/linux-race.yml +++ b/.github/workflows/linux-race.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 228b701b5..be1945e51 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" @@ -38,10 +38,6 @@ jobs: - name: Get QEMU 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 install qemu-user diff --git a/.github/workflows/linux32.yml b/.github/workflows/linux32.yml index c0a64a702..1cea03e15 100644 --- a/.github/workflows/linux32.yml +++ b/.github/workflows/linux32.yml @@ -14,7 +14,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index b50cf5a9a..8b06be804 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -40,7 +40,7 @@ jobs: if: failure() && github.event_name == 'push' vet: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 steps: - name: Set up Go uses: actions/setup-go@v3 @@ -66,7 +66,7 @@ jobs: if: failure() && github.event_name == 'push' staticcheck: - runs-on: ubuntu-latest + runs-on: buildjet-4vcpu-ubuntu-2204 strategy: matrix: goos: [linux, windows, darwin] diff --git a/.github/workflows/vm.yml b/.github/workflows/vm.yml index 53989bc9e..9f56bec9d 100644 --- a/.github/workflows/vm.yml +++ b/.github/workflows/vm.yml @@ -11,7 +11,7 @@ concurrency: jobs: 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]')" @@ -27,12 +27,17 @@ jobs: with: 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 run: go test ./tstest/integration/vms -v -no-s3 -run-vm-tests -run=TestRunUbuntu2004 env: HOME: "/tmp" TMPDIR: "/tmp" - XDG_CACHE_HOME: "/var/lib/ghrunner/cache" + XDG_CACHE_HOME: "/home/runner/cache" - uses: k0kubun/action-slack@v2.0.0 with: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7b5706635..2b319ccc1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,7 +14,7 @@ concurrency: jobs: test: - runs-on: windows-latest + runs-on: [ self-hosted, Windows ] if: "!contains(github.event.head_commit.message, '[ci skip]')"