mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
a0e229afec
This PR starts running test-go-pg on macOS and Windows in regular CI. Previously this suite was only run in the nightly gauntlet for 2 reasons: - it was flaky - it was slow (took 17 minutes) We've since stabilized the flakiness by switching to depot runners, using ram disks, optimizing the number of tests run in parallel, and automatically re-running failing tests. We've also [brought down](https://github.com/coder/coder/pull/17756) the time to run the suite to 9 minutes. Additionally, this PR allows test-go-pg to use cache from previous runs, which speeds it up further. The cache is only used on PRs, `main` will still run tests without it. This PR also: - removes the nightly gauntlet since all tests now run in regular CI - removes the `test-cli` job for the same reason - removes the `setup-imdisk` action which is now fully replaced by [coder/setup-ramdisk-action](https://github.com/coder/setup-ramdisk-action) - makes 2 minor changes which could be separate PRs, but I rolled them into this because they were helpful when iterating on it: - replace the `if: always()` condition on the `gen` job with a `if: ${{ !cancelled() }}` to allow the job to be cancelled. Previously the job would run to completion even if the entire workflow was cancelled. See [the GitHub docs](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#always) for more details. - disable the recently added `TestReinitializeAgent` since it does not pass on Windows with Postgres. There's an open issue to fix it: https://github.com/coder/internal/issues/642 This PR will: - unblock https://github.com/coder/coder/issues/15109 - alleviate https://github.com/coder/internal/issues/647 I tested caching by temporarily enabling cache upload on this PR: here's [a run](https://github.com/coder/coder/actions/runs/15119046903/job/42496939341?pr=17853#step:13:1296) showing cache being used.
58 lines
2.0 KiB
YAML
58 lines
2.0 KiB
YAML
name: "Setup Go Paths"
|
|
description: Overrides Go paths like GOCACHE and GOMODCACHE to use temporary directories.
|
|
outputs:
|
|
gocache:
|
|
description: "Value of GOCACHE"
|
|
value: ${{ steps.paths.outputs.gocache }}
|
|
gomodcache:
|
|
description: "Value of GOMODCACHE"
|
|
value: ${{ steps.paths.outputs.gomodcache }}
|
|
gopath:
|
|
description: "Value of GOPATH"
|
|
value: ${{ steps.paths.outputs.gopath }}
|
|
gotmp:
|
|
description: "Value of GOTMPDIR"
|
|
value: ${{ steps.paths.outputs.gotmp }}
|
|
cached-dirs:
|
|
description: "Go directories that should be cached between CI runs"
|
|
value: ${{ steps.paths.outputs.cached-dirs }}
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Override Go paths
|
|
id: paths
|
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
|
with:
|
|
script: |
|
|
const path = require('path');
|
|
|
|
// RUNNER_TEMP should be backed by a RAM disk on Windows if
|
|
// coder/setup-ramdisk-action was used
|
|
const runnerTemp = process.env.RUNNER_TEMP;
|
|
const gocacheDir = path.join(runnerTemp, 'go-cache');
|
|
const gomodcacheDir = path.join(runnerTemp, 'go-mod-cache');
|
|
const gopathDir = path.join(runnerTemp, 'go-path');
|
|
const gotmpDir = path.join(runnerTemp, 'go-tmp');
|
|
|
|
core.exportVariable('GOCACHE', gocacheDir);
|
|
core.exportVariable('GOMODCACHE', gomodcacheDir);
|
|
core.exportVariable('GOPATH', gopathDir);
|
|
core.exportVariable('GOTMPDIR', gotmpDir);
|
|
|
|
core.setOutput('gocache', gocacheDir);
|
|
core.setOutput('gomodcache', gomodcacheDir);
|
|
core.setOutput('gopath', gopathDir);
|
|
core.setOutput('gotmp', gotmpDir);
|
|
|
|
const cachedDirs = `${gocacheDir}\n${gomodcacheDir}`;
|
|
core.setOutput('cached-dirs', cachedDirs);
|
|
|
|
- name: Create directories
|
|
shell: bash
|
|
run: |
|
|
set -e
|
|
mkdir -p "$GOCACHE"
|
|
mkdir -p "$GOMODCACHE"
|
|
mkdir -p "$GOPATH"
|
|
mkdir -p "$GOTMPDIR"
|