aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2023-05-18 11:56:10 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2023-05-18 11:56:10 +0200
commit115dd077ca8d50e92f898d604e731be04ed2e1be (patch)
tree3ea701d033456689695a906df3353c8573a1f7f4
parent24fed41288531bf3bf69657eaf3287ff545d0254 (diff)
downloadaerogramme-115dd077ca8d50e92f898d604e731be04ed2e1be.tar.gz
aerogramme-115dd077ca8d50e92f898d604e731be04ed2e1be.zip
add build scripts with alba
-rwxr-xr-x.albatros19
-rw-r--r--flake.lock87
-rw-r--r--flake.nix68
3 files changed, 152 insertions, 22 deletions
diff --git a/.albatros b/.albatros
index 6439de6..e190d1e 100755
--- a/.albatros
+++ b/.albatros
@@ -2,3 +2,22 @@
set -euxo pipefail
nix build --print-build-logs .#packages.x86_64-unknown-linux-musl.debug
+
+if [[ ! -z $TAG && ! -z $DOCKER_AUTH ]]; then
+
+# Configure Docker Auth
+mkdir .docker
+cat > .docker/config.json <<EOF
+{"auths":{"https://index.docker.io/v1/":{"auth":"${DOCKER_AUTH}"}}}
+EOF
+export DOCKER_CONFIG=`pwd`/.docker/
+
+# Hack to circumvent "initializing source docker-archive:docker/linux.386.tar.gz: creating temporary file: open /var/tmp/docker-tar1213702538: no such file or directory"
+mkdir -p /var/tmp/
+
+# Release
+nix run .#publish-static
+nix run .#publish-garage
+nix run .#publish-docker-hub
+
+fi
diff --git a/flake.lock b/flake.lock
index 39f5848..617681b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,10 +1,30 @@
{
"nodes": {
+ "albatros": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ },
+ "locked": {
+ "lastModified": 1684318881,
+ "narHash": "sha256-Yk9GjcXd5hXkRWlAlxzHFpEKfEDSb15+Ptp/ldY468w=",
+ "ref": "main",
+ "rev": "373c1f8d76b11a5638b2a4aa753417c67f0c2e13",
+ "revCount": 78,
+ "type": "git",
+ "url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros.git"
+ },
+ "original": {
+ "ref": "main",
+ "type": "git",
+ "url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros.git"
+ }
+ },
"cargo2nix": {
"inputs": {
"flake-compat": "flake-compat",
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs",
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
},
"locked": {
@@ -24,7 +44,7 @@
},
"fenix": {
"inputs": {
- "nixpkgs": "nixpkgs_2",
+ "nixpkgs": "nixpkgs_3",
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
@@ -59,6 +79,24 @@
}
},
"flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1681202837,
+ "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
@@ -73,9 +111,9 @@
"type": "github"
}
},
- "flake-utils_2": {
+ "flake-utils_3": {
"inputs": {
- "systems": "systems"
+ "systems": "systems_2"
},
"locked": {
"lastModified": 1681202837,
@@ -93,6 +131,21 @@
},
"nixpkgs": {
"locked": {
+ "lastModified": 1678964307,
+ "narHash": "sha256-POV15raLJzwns6U84W4aWNSeSJRXTz7xWQW6IcrWQns=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "fd4f7832961053e6095af8de8d6a57b5ad402f19",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
"lastModified": 1682600000,
"narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=",
"owner": "nixos",
@@ -107,7 +160,7 @@
"type": "github"
}
},
- "nixpkgs_2": {
+ "nixpkgs_3": {
"locked": {
"lastModified": 1683408522,
"narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
@@ -123,7 +176,7 @@
"type": "github"
}
},
- "nixpkgs_3": {
+ "nixpkgs_4": {
"locked": {
"lastModified": 1683631309,
"narHash": "sha256-1cNXXM98+9NyH8TV3TYSESFjZ+MZGbFbNO4AtM6um3I=",
@@ -141,10 +194,11 @@
},
"root": {
"inputs": {
+ "albatros": "albatros",
"cargo2nix": "cargo2nix",
"fenix": "fenix",
- "flake-utils": "flake-utils_2",
- "nixpkgs": "nixpkgs_3"
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_4"
}
},
"rust-analyzer-src": {
@@ -203,6 +257,21 @@
"repo": "default",
"type": "github"
}
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
index 3bf91b2..d75395d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,10 +15,13 @@
# use rust project builds
fenix.url = "github:nix-community/fenix/monthly";
+
+ # import alba releasing tool
+ albatros.url = "git+https://git.deuxfleurs.fr/Deuxfleurs/albatros.git?ref=main";
};
- outputs = { self, nixpkgs, cargo2nix, flake-utils, fenix }:
- flake-utils.lib.eachSystem [
+ outputs = { self, nixpkgs, cargo2nix, flake-utils, fenix, albatros }:
+ let platformSpecific = flake-utils.lib.eachSystem [
"x86_64-unknown-linux-musl"
"aarch64-unknown-linux-musl"
"armv6l-unknown-linux-musleabihf"
@@ -51,12 +54,6 @@
];
};
- shell = pkgs.mkShell {
- buildInputs = [
- cargo2nix.packages.x86_64-linux.default
- ];
- };
-
rustTarget = if targetHost == "armv6l-unknown-linux-musleabihf" then "arm-unknown-linux-musleabihf" else targetHost;
# release builds
@@ -135,10 +132,55 @@
};
in {
- devShells.default = shell;
- packages.debug = (rustDebug.workspace.aerogramme {}).bin;
- packages.aerogramme = bin;
- packages.container = container;
- packages.default = self.packages.${targetHost}.aerogramme;
+ packages = {
+ debug = (rustDebug.workspace.aerogramme {}).bin;
+ aerogramme = bin;
+ container = container;
+ default = self.packages.${targetHost}.aerogramme;
+ };
});
+
+ gpkgs = import nixpkgs {
+ system = "x86_64-linux"; # hardcoded as we will cross compile
+ };
+ alba = albatros.alba;
+
+ build-static = gpkgs.writeScriptBin "aerogramme-build-static" ''
+ nix build --print-build-logs .#packages.x86_64-unknown-linux-musl.aerogramme -o static/linux/amd64/aerogramme
+ nix build --print-build-logs .#packages.aarch64-unknown-linux-musl.aerogramme -o static/linux/arm64/aerogramme
+ nix build --print-build-logs .#packages.armv6l-unknown-linux-musleabihf.aerogramme -o static/linux/arm/aerogramme
+ '';
+
+ publish-static = gpkgs.writeScriptBin "aerogramme-push-static" ''
+ RTAG=''${TAG:-$COMMIT}
+ echo "selected release tag is $RTAG"
+ ${alba} static push -t aerogramme:$RTAG static/ 's3://download.deuxfleurs.org?endpoint=garage.deuxfleurs.fr&s3ForcePathStyle=true&region=garage' 1>&2
+ '';
+
+ build-container = gpkgs.writeScriptBin "aerogramme-build-container" ''
+ nix build --print-build-logs .#packages.x86_64-unknown-linux-musl.container -o docker/linux.amd64.tar.gz
+ nix build --print-build-logs .#packages.armv6l-unknown-linux-musl.container -o docker/linux.arm.tar.gz
+ nix build --print-build-logs .#packages.aarch64-unknown-linux-musleabihf.container -o docker/linux.arm64.tar.gz
+ '';
+
+ publish-garage = gpkgs.writeScriptBin "aerogramme-publish-garage" ''
+ RTAG=''${TAG:-$COMMIT}
+ echo "selected release tag is $RTAG"
+ ${alba} container push -t aerogramme:$RTAG docker/ 's3://registry.deuxfleurs.org?endpoint=garage.deuxfleurs.fr&s3ForcePathStyle=true&region=garage' 1>&2
+ '';
+
+ publish-docker-hub = gpkgs.writeScriptBin "aerogramme-publish-dockerhub" ''
+ RTAG=''${TAG:-$COMMIT}
+ echo "selected release tag is $RTAG"
+ ${alba} container push -t aerogramme:$RTAG docker/ "docker://docker.io/dxflrs/aerogramme:$RTAG" 1>&2
+ '';
+
+ in
+ {
+ packages = {
+ x86_64-linux = {
+ inherit build-static publish-static build-container publish-garage publish-docker-hub;
+ };
+ } // platformSpecific.packages;
+ };
}