ci: fixed performance issues, converted more fields to hidden

Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
This commit is contained in:
Sam Alba 2022-02-17 20:39:40 -08:00
parent 8e2f3eb21d
commit 2a9cf1ce7c
2 changed files with 23 additions and 22 deletions

View File

@ -37,11 +37,7 @@ let GolangCILintVersion = "1.44.0"
// base image for the Go linter // base image for the Go linter
// https://golangci-lint.run/usage/install/#docker // https://golangci-lint.run/usage/install/#docker
goLinter: _goLinter.output goLinter: _goLinter.output
_goLinter: docker.#Build & { _goLinter: docker.#Pull & {
steps: [
docker.#Pull & {
source: "index.docker.io/golangci/golangci-lint:v\(GolangCILintVersion)" source: "index.docker.io/golangci/golangci-lint:v\(GolangCILintVersion)"
},
]
} }
} }

View File

@ -8,13 +8,19 @@ import (
) )
engine.#Plan & { engine.#Plan & {
// FIXME: Ideally we would want to automatically set the platform's arch identical to the host
// to avoid the performance hit caused by qemu (linter goes from <3s to >3m when arch is x86)
platform: "linux/aarch64"
inputs: { inputs: {
params: { params: {
// FIXME: until we support a better way // FIXME: until we support a better way
os: string | *"darwin" os: string | *"darwin"
arch: string | *"amd64" arch: string | *"amd64"
// FIXME: implement condition actions using params // FIXME: implement condition actions using params until we have a
// better way to select specific actions
} }
directories: { directories: {
@ -29,20 +35,23 @@ engine.#Plan & {
} }
actions: { actions: {
goModCache: engine.#CacheDir & { _goModCache: "go mod cache": {
dest: "/gomodcache"
contents: engine.#CacheDir & {
id: "go mod cache" id: "go mod cache"
} }
}
baseImages: #Images _baseImages: #Images
source: "dagger source code": { _source: "dagger source code": {
contents: inputs.directories.source.contents contents: inputs.directories.source.contents
dest: "/usr/src/dagger" dest: "/usr/src/dagger"
} }
// FIXME: build only if the linter passed // FIXME: build only if the linter passed
build: bash.#Run & { build: bash.#Run & {
input: baseImages.goBuilder input: _baseImages.goBuilder
env: { env: {
GOMODCACHE: mounts["go mod cache"].dest GOMODCACHE: mounts["go mod cache"].dest
@ -59,27 +68,23 @@ engine.#Plan & {
./cmd/dagger/ ./cmd/dagger/
"""# """#
mounts: {
source
"go mod cache": {
dest: "/gomodcache"
contents: goModCache
}
}
workdir: mounts["dagger source code"].dest workdir: mounts["dagger source code"].dest
mounts: {
_source
_goModCache
}
export: directories: "/build": _ export: directories: "/build": _
} }
goLint: bash.#Run & { goLint: bash.#Run & {
input: baseImages.goLinter input: _baseImages.goLinter
// FIXME: the source volume is too slow, taking >3m on docker for mac (vs < 2sec on the host machine)
script: contents: "golangci-lint run -v --timeout 5m" script: contents: "golangci-lint run -v --timeout 5m"
workdir: mounts["dagger source code"].dest workdir: mounts["dagger source code"].dest
mounts: { mounts: {
source _source
_goModCache
} }
} }
} }