refactor(nixery): Modernise structure of binaries
Nixery is going to gain a new binary (used for building images without a registry server); to prepare for this the server binary has moved to cmd/server and the Nix build logic has been updated to wrap this binary and set the required environment variables. Change-Id: I9b4f49f47872ae76430463e2fcb8f68114070f72 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5603 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
796ff086be
commit
f31edeec1b
3 changed files with 27 additions and 30 deletions
|
@ -28,7 +28,7 @@ in
|
|||
StateDirectory = "nixery";
|
||||
Restart = "always";
|
||||
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${storagePath}";
|
||||
ExecStart = "${depot.tools.nixery.nixery-bin}/bin/nixery";
|
||||
ExecStart = "${depot.tools.nixery.nixery}/bin/server";
|
||||
};
|
||||
|
||||
environment = {
|
||||
|
|
|
@ -25,23 +25,6 @@ let
|
|||
# through revision numbers.
|
||||
nixery-commit-hash = "depot";
|
||||
|
||||
# Go implementation of the Nixery server which implements the
|
||||
# container registry interface.
|
||||
#
|
||||
# Users should use the nixery-bin derivation below instead as it
|
||||
# provides the paths of files needed at runtime.
|
||||
nixery-server = buildGoModule rec {
|
||||
name = "nixery-server";
|
||||
src = ./.;
|
||||
doCheck = true;
|
||||
|
||||
# Needs to be updated after every modification of go.mod/go.sum
|
||||
vendorSha256 = "1xnmyz2a5s5sck0fzhcz51nds4s80p0jw82dhkf4v2c4yzga83yk";
|
||||
|
||||
buildFlagsArray = [
|
||||
"-ldflags=-s -w -X main.version=${nixery-commit-hash}"
|
||||
];
|
||||
};
|
||||
in
|
||||
depot.nix.readTree.drvTargets rec {
|
||||
# Implementation of the Nix image building logic
|
||||
|
@ -52,19 +35,33 @@ depot.nix.readTree.drvTargets rec {
|
|||
# nixery.dev.
|
||||
nixery-book = callPackage ./docs { };
|
||||
|
||||
# Wrapper script running the Nixery server with the above two data
|
||||
# dependencies configured.
|
||||
#
|
||||
# In most cases, this will be the derivation a user wants if they
|
||||
# are installing Nixery directly.
|
||||
nixery-bin = writeShellScriptBin "nixery" ''
|
||||
export WEB_DIR="${nixery-book}"
|
||||
export PATH="${nixery-prepare-image}/bin:$PATH"
|
||||
exec ${nixery-server}/bin/nixery
|
||||
'';
|
||||
|
||||
nixery-popcount = callPackage ./popcount { };
|
||||
|
||||
# Build Nixery's Go code, resulting in the binaries used for various
|
||||
# bits of functionality.
|
||||
#
|
||||
# The server binary is wrapped to ensure that required environment
|
||||
# variables are set at runtime.
|
||||
nixery = buildGoModule rec {
|
||||
name = "nixery";
|
||||
src = ./.;
|
||||
doCheck = true;
|
||||
|
||||
# Needs to be updated after every modification of go.mod/go.sum
|
||||
vendorSha256 = "1xnmyz2a5s5sck0fzhcz51nds4s80p0jw82dhkf4v2c4yzga83yk";
|
||||
|
||||
buildFlagsArray = [
|
||||
"-ldflags=-s -w -X main.version=${nixery-commit-hash}"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/server \
|
||||
--set WEB_DIR "${nixery-book}" \
|
||||
--prefix PATH : ${nixery-prepare-image}/bin
|
||||
'';
|
||||
};
|
||||
|
||||
# Container image containing Nixery and Nix itself. This image can
|
||||
# be run on Kubernetes, published on AppEngine or whatever else is
|
||||
# desired.
|
||||
|
@ -98,7 +95,7 @@ depot.nix.readTree.drvTargets rec {
|
|||
# This can be achieved by setting a 'preLaunch' script.
|
||||
${preLaunch}
|
||||
|
||||
exec ${nixery-bin}/bin/nixery
|
||||
exec ${nixery}/bin/server
|
||||
'';
|
||||
in
|
||||
dockerTools.buildLayeredImage {
|
||||
|
|
Loading…
Reference in a new issue