mirror of
https://github.com/tailscale/tailscale.git
synced 2025-06-21 15:48:39 +00:00
.github/workflows: shard the Windows builder
It's one of the slower ones, so split it up into chunks. Updates tailscale/corp#28679 Change-Id: I16a5ba667678bf238c84417a51dda61baefbecf7 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
5a52f80c4c
commit
9af42f425c
21
.github/workflows/test.yml
vendored
21
.github/workflows/test.yml
vendored
@ -210,6 +210,17 @@ jobs:
|
|||||||
windows:
|
windows:
|
||||||
runs-on: windows-2022
|
runs-on: windows-2022
|
||||||
needs: gomod-cache
|
needs: gomod-cache
|
||||||
|
name: Windows (${{ matrix.name || matrix.shard}})
|
||||||
|
strategy:
|
||||||
|
fail-fast: false # don't abort the entire matrix if one element fails
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- key: "win-bench"
|
||||||
|
name: "benchmarks"
|
||||||
|
- key: "win-shard-1-2"
|
||||||
|
shard: "1/2"
|
||||||
|
- key: "win-shard-2-2"
|
||||||
|
shard: "2/2"
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
@ -237,14 +248,16 @@ jobs:
|
|||||||
~\AppData\Local\go-build
|
~\AppData\Local\go-build
|
||||||
# The -2- here should be incremented when the scheme of data to be
|
# The -2- here should be incremented when the scheme of data to be
|
||||||
# cached changes (e.g. path above changes).
|
# cached changes (e.g. path above changes).
|
||||||
key: ${{ github.job }}-${{ runner.os }}-go-2-${{ hashFiles('**/go.sum') }}-${{ github.run_id }}
|
key: ${{ github.job }}-${{ matrix.key }}-go-2-${{ hashFiles('**/go.sum') }}-${{ github.run_id }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ github.job }}-${{ runner.os }}-go-2-${{ hashFiles('**/go.sum') }}
|
${{ github.job }}-${{ matrix.key }}-go-2-${{ hashFiles('**/go.sum') }}
|
||||||
${{ github.job }}-${{ runner.os }}-go-2-
|
${{ github.job }}-${{ matrix.key }}-go-2-
|
||||||
- name: test
|
- name: test
|
||||||
|
if: matrix.key != 'win-bench' # skip on bench builder
|
||||||
working-directory: src
|
working-directory: src
|
||||||
run: go run ./cmd/testwrapper ./...
|
run: go run ./cmd/testwrapper sharded:${{ matrix.shard }}
|
||||||
- name: bench all
|
- name: bench all
|
||||||
|
if: matrix.key == 'win-bench'
|
||||||
working-directory: src
|
working-directory: src
|
||||||
# Don't use -bench=. -benchtime=1x.
|
# Don't use -bench=. -benchtime=1x.
|
||||||
# Somewhere in the layers (powershell?)
|
# Somewhere in the layers (powershell?)
|
||||||
|
@ -213,6 +213,16 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// As a special case, if the packages looks like "sharded:1/2" then shell out to
|
||||||
|
// ./tool/listpkgs to cut up the package list pieces for each sharded builder.
|
||||||
|
if nOfM, ok := strings.CutPrefix(packages[0], "sharded:"); ok && len(packages) == 1 {
|
||||||
|
out, err := exec.Command("go", "run", "tailscale.com/tool/listpkgs", "-shard", nOfM, "./...").Output()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("failed to list packages for sharded test: %v", err)
|
||||||
|
}
|
||||||
|
packages = strings.Split(strings.TrimSpace(string(out)), "\n")
|
||||||
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
type nextRun struct {
|
type nextRun struct {
|
||||||
tests []*packageTests
|
tests []*packageTests
|
||||||
|
Loading…
x
Reference in New Issue
Block a user