# Copyright 2022 wanderer # SPDX-License-Identifier: GPL-3.0-or-later # vim: ft=bzl.starlark noexpandtab tw=4 ts=4 def main(ctx): return [ { "kind": "pipeline", "type": "docker", "name": "nix", "node": { "r": "w" }, "steps": [ { "name": "pull nix", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "always", "depends_on": ["clone"], "volumes": [ { "name": "nix", "path": "/nix" } ], "commands": [ "uname -r", "nix --version" ] }, { "name": "enable flakes", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["pull nix"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "cat /etc/nix/nix.conf", "echo 'experimental-features = nix-command flakes' >> /etc/nix/nix.conf", "cat /etc/nix/nix.conf" ] }, { "name": "enable sandbox", "image": "docker.io/library/busybox", "pull": "always", "depends_on": ["enable flakes"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "cat /etc/nix/nix.conf", "sed -i 's/^sandbox = false/sandbox = true/' /etc/nix/nix.conf", "cat /etc/nix/nix.conf" ] }, { "name": "nixpkgs-fmt", "image": "docker.io/immawanderer/nix-nixpkgs-fmt:linux-amd64", "pull": "always", "depends_on": ["pull nix"], "commands": [ "nixpkgs-fmt --version || true", "nixpkgs-fmt --check . || (echo 'run `nixpkgs-fmt .` to fix it' && exit 1)" ] }, { "name": "statix", "image": "docker.io/immawanderer/nix-statix:linux-amd64", "pull": "if-not-exists", "depends_on": ["enable flakes"], "commands": [ "statix --version", "statix check ." ] }, { "name": "nix flake check", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", # "depends_on": ["nixpkgs-fmt", "statix"], "depends_on": ["nixpkgs-fmt", "statix", "enable sandbox"], "volumes": [ { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "NIXPKGS_ALLOW_BROKEN=1 nix flake check --impure" ] }, { "name": "nix flake show", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["nix flake check"], "volumes": [ { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "nix flake show" ] }, { "name": "nix flake metadata", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["nix flake check"], "volumes": [ { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "nix flake metadata" ] }, { "name": "go vet|test", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["enable sandbox"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" }, { "name": "gopath", "path": "/root/go" } ], "commands": [ "nix develop --command go vet ./...", "nix develop --command go test -cover ./..." ] }, { "name": "pre-build", "image": "docker.io/immawanderer/nix-cachix-glibc", "pull": "if-not-exists", # "depends_on": ["nixpkgs-fmt", "statix"], "depends_on": ["nixpkgs-fmt", "statix", "enable sandbox"], "volumes": [ { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "cachix use go-xkcdreader" ] }, { "name": "nix build", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", # "depends_on": ["nix flake check", "statix", "pre-build"], "depends_on": ["nix flake check", "pre-build"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "nix build .#go-xkcdreader" ] }, { "name": "go-xkcdreader version", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["nix build"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "./result/bin/go-xkcdreader version" ] }, { "name": "ldd", "image": "docker.io/nixos/nix:2.8.0-amd64", "pull": "if-not-exists", "depends_on": ["nix build"], "volumes": [ { "name": "nix", "path": "/nix" }, { "name": "nixconf", "path": "/etc/nix" } ], "commands": [ "nix develop --command ldd result/bin/go-xkcdreader" ] } ], "volumes": [ { "name": "nix", "temp": {} }, { "name": "nixconf", "temp": {} }, { "name": "gopath", "temp": {} } ] }, { "kind": "pipeline", "type": "docker", "name": "archlinux", "node": { "r": "w" }, "steps": [ { "name": "pull archlinux", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["clone"], "commands": [ "uname -r", "cat /etc/os-release" ] }, { "name": "go env", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull archlinux"], "commands": [ "go env", ] }, { "name": "vet", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull archlinux"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go vet ./..." ] }, { "name": "test", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull archlinux"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go test -cover ./..." ] }, { "name": "build", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull archlinux"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go version", "gcc --version", "go build -v ." ] }, { "name": "ldd", "image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64", "pull": "always", "depends_on": ["build"], "commands": [ "ldd --version", "ldd go-xkcdreader" ] } ], "volumes": [ { "name": "gopath", "temp": {} } ] }, { "kind": "pipeline", "type": "docker", "name": "fedora", "node": { "r": "w" }, "steps": [ { "name": "pull fedora", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["clone"], "commands": [ "uname -r", "cat /etc/os-release" ] }, { "name": "go env", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull fedora"], "commands": [ "go env", ] }, { "name": "vet", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull fedora"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go vet ./..." ] }, { "name": "test", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull fedora"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go test -cover ./..." ] }, { "name": "build", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["pull fedora"], "volumes": [ { "name": "gopath", "path": "/root/go" } ], "commands": [ "go version", "gcc --version", "go build -v ." ] }, { "name": "ldd", "image": "docker.io/immawanderer/fedora-go-fyne:linux-amd64", "pull": "always", "depends_on": ["build"], "commands": [ "ldd --version", "ldd go-xkcdreader" ] } ], "volumes": [ { "name": "gopath", "temp": {} } ] } ]