Use skopeo for deploy script
This commit is contained in:
@@ -15,13 +15,26 @@
|
|||||||
system: let
|
system: let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
deploy = pkgs.writeShellScriptBin "deploy" ''
|
deploy-script = pkgs.writeShellScriptBin "deploy" ''
|
||||||
set -e; set -o pipefail; set -x;
|
set -e; set -o pipefail; set -x;
|
||||||
|
|
||||||
|
# 1. Build the docker image
|
||||||
nix build .#docker
|
nix build .#docker
|
||||||
image=$((docker load < result) | sed -n '$s/^Loaded image: //p')
|
|
||||||
docker image tag "$image" harbor.julian-mutter.de/sheetless/sheetless-server:latest
|
# 2. Authenticate if CI environment variables are present
|
||||||
docker push harbor.julian-mutter.de/sheetless/sheetless-server:latest
|
if [ -n "''${REGISTRY_USERNAME:-}" ] && [ -n "''${REGISTRY_PASSWORD:-}" ]; then
|
||||||
|
echo "CI Environment detected: Logging in to Harbor."
|
||||||
|
${pkgs.skopeo}/bin/skopeo login gitlab.julian-mutter.de \
|
||||||
|
--username "''${HARBOR_USERNAME}" \
|
||||||
|
--password "''${HARBOR_PASSWORD}"
|
||||||
|
else
|
||||||
|
echo "Local Environment detected: Skipping login, relying on existing auth."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Upload to container registry
|
||||||
|
${pkgs.skopeo}/bin/skopeo copy \
|
||||||
|
docker-archive:result \
|
||||||
|
docker://gitlab.julian-mutter.de/julian/sheetless-server:latest
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
@@ -30,13 +43,15 @@
|
|||||||
gopls
|
gopls
|
||||||
go-tools
|
go-tools
|
||||||
|
|
||||||
deploy
|
deploy-script
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = rec {
|
packages = rec {
|
||||||
default = sheetless-server;
|
default = sheetless-server;
|
||||||
|
|
||||||
|
deploy = deploy-script;
|
||||||
|
|
||||||
sheetless-server = pkgs.buildGoModule {
|
sheetless-server = pkgs.buildGoModule {
|
||||||
pname = "sheetless-server";
|
pname = "sheetless-server";
|
||||||
version = "0.1.0";
|
version = "0.1.0";
|
||||||
@@ -44,11 +59,11 @@
|
|||||||
vendorHash = "sha256-jJe13G5zoUCY2SD9ZerN+6ahc/qOJ3oAhDXJgIhyuvw=";
|
vendorHash = "sha256-jJe13G5zoUCY2SD9ZerN+6ahc/qOJ3oAhDXJgIhyuvw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
docker = pkgs.dockerTools.buildImage {
|
docker = pkgs.dockerTools.buildLayeredImage {
|
||||||
name = "sheetless-server";
|
name = "sheetless-server";
|
||||||
tag = "latest";
|
tag = "latest";
|
||||||
|
|
||||||
copyToRoot = with pkgs; [
|
contents = with pkgs; [
|
||||||
dockerTools.usrBinEnv
|
dockerTools.usrBinEnv
|
||||||
dockerTools.binSh
|
dockerTools.binSh
|
||||||
dockerTools.caCertificates
|
dockerTools.caCertificates
|
||||||
|
|||||||
Reference in New Issue
Block a user