Compare commits

..

1 Commits

Author SHA1 Message Date
3ebc0de61f
ci: introduce 'drone-skip-pipeline' plugin
expectations:
  * speed-up
  * resource preservation (don't needlessly run (full) builds when
    nothing pertinent changed)

caveat: this does not (just yet) work with Gitea (a rewrite underway)

[skip ci]
2022-06-13 13:27:55 +02:00
5 changed files with 53 additions and 57 deletions

@ -7,11 +7,39 @@ def main(ctx):
"kind": "pipeline",
"type": "docker",
"name": "golangci-lint",
"clone": {"disable": True},
"environment": {
"GOPROXY": "direct"
},
"steps": [
{
"name": "skip-check",
"image": "docker.io/immawanderer/drone-skip-pipeline:linux-amd64",
"pull": "always",
"settings": {
"rules": [
"*.go",
"*.sum",
"*.mod",
".golangci.yml"
]
},
},
{
"name": "clone",
"image": "docker.io/alpine/git",
"pull": "always",
"depends_on": ["skip-check"],
"commands": [
"git clone ${DRONE_GIT_HTTP_URL} .",
"git checkout ${DRONE_COMMIT}"
]
},
{
"name": "golangci-lint",
"image": "docker.io/immawanderer/archlinux-go-fyne:linux-amd64",
"pull": "always",
"depends_on": ["clone"],
"commands": [
"curl -sSfL " +
"https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh"+
@ -30,6 +58,9 @@ def main(ctx):
"node": {
"r": "w"
},
"environment": {
"GOPROXY": "direct"
},
"steps": [
{
"name": "pull nix",
@ -276,6 +307,9 @@ def main(ctx):
"node": {
"r": "w"
},
"environment": {
"GOPROXY": "direct"
},
"steps": [
{
"name": "pull archlinux",
@ -353,6 +387,9 @@ def main(ctx):
"node": {
"r": "w"
},
"environment": {
"GOPROXY": "direct"
},
"steps": [
{
"name": "pull fedora",

@ -34,8 +34,10 @@ linters:
- ineffassign
# - ifshort
- misspell
# - prealloc # disable for now as it might be premature optimisation
- prealloc
- revive
- rowserrcheck
- sqlclosecheck
- unconvert
- unparam
- varcheck

@ -45,10 +45,13 @@ repos:
- repo: https://github.com/dnephin/pre-commit-golang
rev: v0.5.0
hooks:
- id: go-mod-tidy
- id: go-vet
- id: go-unit-tests
- id: go-cyclo
args: [-over=15]
- id: golangci-lint
- id: go-build
- id: go-mod-tidy
- repo: local
hooks:
- id: nix-build

@ -16,21 +16,6 @@
"type": "github"
}
},
"nix-filter": {
"locked": {
"lastModified": 1653590866,
"narHash": "sha256-E4yKIrt/S//WfW5D9IhQ1dVuaAy8RE7EiCMfnbrOC78=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "3e81a637cdf9f6e9b39aeb4d6e6394d1ad158e16",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nix-filter",
"type": "github"
}
},
"nixgl": {
"inputs": {
"nixpkgs": [
@ -70,7 +55,6 @@
"root": {
"inputs": {
"flake-compat": "flake-compat",
"nix-filter": "nix-filter",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs"
}

@ -10,17 +10,11 @@
flake = false;
inputs.nixpkgs.follows = "nixpkgs";
};
nix-filter = {
url = "github:numtide/nix-filter";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixgl, nix-filter, nixpkgs, ... }:
outputs = { self, nixgl, nixpkgs, ... }:
let
projname = "go-xkcdreader";
# to work with older version of flakes
lastModifiedDate =
self.lastModifiedDate or self.lastModified or "19700101";
@ -45,10 +39,6 @@
});
in
rec {
formatter = forAllSystems (system:
nixpkgsFor.${system}.nixpkgs-fmt
);
packages = forAllSystems (system:
let
pkgs = nixpkgsFor.${system};
@ -56,7 +46,7 @@
in
rec {
go-xkcdreader = with pkgs; buildGoModule rec {
pname = "${projname}";
pname = "go-xkcdreader";
buildInputs = [
gcc
libglvnd # instead of libGL
@ -77,7 +67,7 @@
nativeBuildInputs = [ pkgconfig ];
overrideModAttrs = _: {
# GOPROXY = "direct";
GOPROXY = "direct";
};
inherit version;
@ -93,35 +83,15 @@
modSha256 = lib.fakeSha256;
# dont't forget to update vendorSha256 whenever go.mod or go.sum change
vendorSha256 = "sha256-LvdcTbj8cFlaIBsq1VLfLF2Tu9HiZzGO8igD766nMLE=";
vendorSha256 = "sha256-gaIoacCs0PcvmFW8dQOFUb9KU1u6KUiFmGQ/ERcVwjc=";
# In 'nix develop', we don't need a copy of the source tree
# in the Nix store.
src = nix-filter.lib.filter {
root = lib.cleanSource ./.;
exclude = [
./flake.nix
./flake.lock
./default.nix
./shell.nix
./check-fmt
./README.md
./LICENSE
./.drone.starlark
./.envrc
./.example.vimrc
./.gitattributes
./.gitignore
./.golangci.yml
./.pre-commit-config.yaml
];
};
src = lib.cleanSource ./.;
meta = {
description = "an offline-capable xkcd webcomic reader written in Go";
homepage = "https://git.dotya.ml/wanderer/${projname}";
homepage = "https://git.dotya.ml/wanderer/go-xkcdreader";
license = lib.licenses.gpl3;
maintainers = [ "wanderer" ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
@ -135,7 +105,7 @@
go-xkcdreader = {
type = "app";
program =
"${self.packages.${system}.${projname}}/bin/${projname}";
"${self.packages.${system}.go-xkcdreader}/bin/go-xkcdreader";
};
default = go-xkcdreader;
});
@ -168,7 +138,7 @@
nix-store --query --references $(nix-instantiate shell.nix) | \
xargs nix-store --realise | \
xargs nix-store --query --requisites | \
cachix push ${projname}
cachix push go-xkcdreader
'';
add-license = pkgs.writeShellScriptBin "add-license" ''
go run github.com/google/addlicense@v1.0.0 -v \
@ -179,7 +149,7 @@
{
default = with pkgs; mkShell
{
name = "${projname}-" + version;
name = "go-xkcdreader-" + version;
GOFLAGS = "-buildmode=pie -trimpath -mod=readonly -modcacherw";
GOLDFLAGS = "-s -w -X cmd.version=${version}";