From 6bda04bd87d5e7874deffea4af42897995f38c0d Mon Sep 17 00:00:00 2001 From: 06kellyjac Date: Fri, 20 Aug 2021 14:23:30 +0100 Subject: [PATCH] ko: general improvements * exclude cmd/ko so the correct entrypoint is built * add ldflags for smaller builds and version * suppress GOROOT warnings during tests * add completion * add changelog * add long description --- pkgs/development/tools/ko/default.nix | 28 +++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/ko/default.nix b/pkgs/development/tools/ko/default.nix index 4754a32db825..614b5d4c9df4 100644 --- a/pkgs/development/tools/ko/default.nix +++ b/pkgs/development/tools/ko/default.nix @@ -2,6 +2,7 @@ , buildGoModule , fetchFromGitHub , git +, installShellFiles }: buildGoModule rec { @@ -14,18 +15,37 @@ buildGoModule rec { rev = "v${version}"; sha256 = "sha256-LoOXZY4uF7GSS3Dh/ozCsLJTxgmPmZZuEisJ4ShjCBc="; }; - vendorSha256 = null; - excludedPackages = "test"; + # Don't build the legacy main.go or test dir + excludedPackages = "\\(cmd/ko\\|test\\)"; + nativeBuildInputs = [ installShellFiles ]; + + ldflags = [ "-s" "-w" "-X github.com/google/ko/pkg/commands.Version=${version}" ]; + checkInputs = [ git ]; preCheck = '' + # resolves some complaints from ko + export GOROOT="$(go env GOROOT)" git init ''; + postInstall = '' + installShellCompletion --cmd ko \ + --bash <($out/bin/ko completion) \ + --zsh <($out/bin/ko completion --zsh) + ''; + meta = with lib; { - description = "A simple, fast container image builder for Go applications."; homepage = "https://github.com/google/ko"; + changelog = "https://github.com/google/ko/releases/tag/v${version}"; + description = "Build and deploy Go applications on Kubernetes"; + longDescription = '' + ko is a simple, fast container image builder for Go applications. + It's ideal for use cases where your image contains a single Go application without any/many dependencies on the OS base image (e.g. no cgo, no OS package dependencies). + ko builds images by effectively executing go build on your local machine, and as such doesn't require docker to be installed. This can make it a good fit for lightweight CI/CD use cases. + ko also includes support for simple YAML templating which makes it a powerful tool for Kubernetes applications. + ''; license = licenses.asl20; - maintainers = with maintainers; [ nickcao ]; + maintainers = with maintainers; [ nickcao jk ]; }; }