From 0f1273ea69c8e89b954ca5ee9a92df783335cc54 Mon Sep 17 00:00:00 2001 From: Denton Gentry Date: Sat, 17 Sep 2022 10:12:01 -0700 Subject: [PATCH] CI: use BuildJet & large Windows runners 1. Use buildjet for the longer Linux CI workflows. 2. Continue with `ubuntu-latest` for shorter Linux CI workflows. 3. Use a large GitHub-hosted Windows runner. https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners 4. Make CIFuzz run on merge to main or release branch, not in the pull request Two runs each of the original workflow files and the updated workflows in this PR. One run of the GitHub Large Ubuntu runners is included; these are clearly between the regular GitHub and BuildJet runners in performance. GitHub GitHub BuildJet BuildJet GHLarge codeql-analysis.yml 4m 30s cached 2m 56s 2m 59s 4m 0s cross-darwin.yml 3m 10s 3m 19s 1m 33s 1m 30s 2m 43s cross-freebsd.yml 3m 33s 3m 10s 1m 28s 1m 22s 2m 15s cross-openbsd.yml 3m 4s 2m 36s 1m 29s 1m 22s 2m 3s cross-wasm.yml 1m 59s 2m 2s 1m 12s 1m 16s 1m 46s cross-windows.yml 2m 45s 3m 0s 1m 44s 1m 25s 2m 6s linux32.yml 4m 27s 4m 0s 1m 55s 2m 8s 2m 51s linux-race.yml 3m 54s 4m 7s 2m 22s 2m 12s 3m 14s linux.yml 4m 23s 4m 39s 2m 37s 2m 15s 3m 38s static-analysis.yml /vet 1m 41s 2m 22s 52s 56s 1m 12s /staticcheck(linux, amd64) 2m 47s 2m 38s 1m 7s 1m 10s 1m 52s /staticcheck(windows, amd64) 2m 5s 2m 4s 1m 6s 1m 8s 1m 33s /staticcheck(darwin, amd64) 2m 14s 2m 20s 1m 10s 1m 10s 1m 50s /staticcheck(windows, 386) 2m 36s 1m 58s 1m 23s 1m 8s 1m 39s vm.yml 1m 30s 1m 32s 2m 31s 2m 23s N/A 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. -------- For Windows and the windows.yml test run: - the regular `windows-latest` runner takes about 6 minutes 20 seconds - there is enough variability run to run that we get the same ~4 minute run with: - a GitHub-hosted large runner - a self-hosted Windows Server 2022 in an AWS t3.xlarge - a self-hosted Windows Server 2022 in an AWS c6i.xlarge Since there is not a gain from operating our own runner, we'll pay GitHub to operate a Windows large runner. Signed-off-by: Denton Gentry --- .github/workflows/cifuzz.yml | 8 +++++--- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/cross-android.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 +- 14 files changed, 25 insertions(+), 22 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-android.yml b/.github/workflows/cross-android.yml index 163b984d3..88b54ee2d 100644 --- a/.github/workflows/cross-android.yml +++ b/.github/workflows/cross-android.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-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..e78824ab4 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,7 +14,7 @@ concurrency: jobs: test: - runs-on: windows-latest + runs-on: windows-8vcpu if: "!contains(github.event.head_commit.message, '[ci skip]')"