generate release matrix

This commit is contained in:
Robin Appelman 2023-06-11 15:37:48 +02:00
commit ed4cad0874
2 changed files with 28 additions and 20 deletions

View file

@ -6,26 +6,21 @@ on:
jobs: jobs:
matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v20
- id: set-matrix
run: echo "matrix=$(nix eval --json ".#releaseMatrix.x86_64-linux")" | tee $GITHUB_OUTPUT
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: matrix
strategy: strategy:
matrix: matrix: ${{fromJson(needs.matrix.outputs.matrix)}}
include:
- target: x86_64-pc-windows-gnu
artifact_name: palantir.exe
asset_name: palantir-x86_64-windows.exe
- target: x86_64-unknown-linux-musl
artifact_name: palantir
asset_name: palantir-x86_64-linux
- target: i686-unknown-linux-musl
artifact_name: palantir
asset_name: palantir-i686-linux
- target: armv7-unknown-linux-musleabihf
artifact_name: palantir
asset_name: palantir-armv7-linux
- target: aarch64-unknown-linux-musl
artifact_name: palantir
asset_name: palantir-aarch64-linux
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: cachix/install-nix-action@v20 - uses: cachix/install-nix-action@v20

View file

@ -30,16 +30,22 @@
inherit system overlays; inherit system overlays;
}; };
hostTarget = pkgs.hostPlatform.config;
targets = [ targets = [
"x86_64-unknown-linux-gnu" hostTarget
"x86_64-pc-windows-gnu" "x86_64-pc-windows-gnu"
"x86_64-unknown-linux-musl" "x86_64-unknown-linux-musl"
"i686-unknown-linux-musl" "i686-unknown-linux-musl"
"armv7-unknown-linux-musleabihf" "armv7-unknown-linux-musleabihf"
"aarch64-unknown-linux-musl" "aarch64-unknown-linux-musl"
]; ];
releaseTargets = lib.lists.remove hostTarget targets;
toolchain = (pkgs.rust-bin.stable.latest.default.override { inherit targets; }); toolchain = (pkgs.rust-bin.stable.latest.default.override { inherit targets; });
execSufficForTarget = target: if lib.strings.hasInfix "windows" target then ".exe" else "";
artifactForTarget = target: "palantir${execSufficForTarget target}";
assetNameForTarget = target: "palantir-${builtins.replaceStrings ["-unknown" "-gnu" "-musl" "abihf" "-pc"] ["" "" "" "" ""] target}${execSufficForTarget target}";
crossArgs = { crossArgs = {
"armv7-unknown-linux-musleabihf" = { "armv7-unknown-linux-musleabihf" = {
@ -97,7 +103,7 @@
postInstall = addUdev; postInstall = addUdev;
CARGO_BUILD_TARGET = target; CARGO_BUILD_TARGET = target;
} // (if (pkgs.hostPlatform.config != target) then (crossArgs.${target} or {}) else {})); } // (if (hostTarget != target) then (crossArgs.${target} or {}) else {}));
buildAny = target: if (nixpkgs.lib.strings.hasInfix "windows" target) then (buildWindows target) else (buildLinux target); buildAny = target: if (nixpkgs.lib.strings.hasInfix "windows" target) then (buildWindows target) else (buildLinux target);
in rec { in rec {
# `nix build` # `nix build`
@ -120,6 +126,13 @@
defaultApp = apps.palantir; defaultApp = apps.palantir;
inherit targets; inherit targets;
releaseMatrix = {
include = builtins.map (target: {
inherit target;
artifact_name = artifactForTarget target;
asset_name = assetNameForTarget target;
}) releaseTargets;
};
# `nix develop` # `nix develop`
devShells.default = pkgs.mkShell { devShells.default = pkgs.mkShell {