mirror of
https://github.com/zhaofengli/attic.git
synced 2024-12-14 11:57:30 +00:00
.github: Naively dogfood Attic
This commit is contained in:
parent
50e8e482d0
commit
d93a0f587c
4 changed files with 119 additions and 7 deletions
69
.github/install-attic-ci.sh
vendored
Executable file
69
.github/install-attic-ci.sh
vendored
Executable file
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
expr=$(mktemp)
|
||||
|
||||
cleanup() {
|
||||
rm -f "$expr"
|
||||
}
|
||||
|
||||
cat >"$expr" <<'EOF'
|
||||
{ system ? builtins.currentSystem }:
|
||||
let
|
||||
maybeStorePath = if builtins ? langVersion && builtins.lessThan 1 builtins.langVersion
|
||||
then builtins.storePath
|
||||
else x: x;
|
||||
mkFakeDerivation = attrs: outputs:
|
||||
let
|
||||
outputNames = builtins.attrNames outputs;
|
||||
common = attrs // outputsSet //
|
||||
{ type = "derivation";
|
||||
outputs = outputNames;
|
||||
all = outputsList;
|
||||
};
|
||||
outputToAttrListElement = outputName:
|
||||
{ name = outputName;
|
||||
value = common // {
|
||||
inherit outputName;
|
||||
outPath = maybeStorePath (builtins.getAttr outputName outputs);
|
||||
drvPath = maybeStorePath (builtins.getAttr outputName outputs);
|
||||
};
|
||||
};
|
||||
outputsList = map outputToAttrListElement outputNames;
|
||||
outputsSet = builtins.listToAttrs outputsList;
|
||||
in outputsSet;
|
||||
in
|
||||
|
||||
{
|
||||
"x86_64-linux" = (mkFakeDerivation {
|
||||
name = "attic-0.1.0";
|
||||
system = "x86_64-linux";
|
||||
} {
|
||||
out = "/nix/store/jxw24xfq64f0bhlfyfi7wh2mvc9dvvip-attic-0.1.0";
|
||||
}).out;
|
||||
|
||||
"aarch64-linux" = (mkFakeDerivation {
|
||||
name = "attic-0.1.0";
|
||||
system = "aarch64-linux";
|
||||
} {
|
||||
out = "/nix/store/f2i2xz39dzq9d4c1vhhykqmpf05ijwi6-attic-0.1.0";
|
||||
}).out;
|
||||
|
||||
"x86_64-darwin" = (mkFakeDerivation {
|
||||
name = "attic-0.1.0";
|
||||
system = "x86_64-darwin";
|
||||
} {
|
||||
out = "/nix/store/3pa4w4ajqvq5dj8pzq8hkhs0ryp0zj55-attic-0.1.0";
|
||||
}).out;
|
||||
|
||||
"aarch64-darwin" = (mkFakeDerivation {
|
||||
name = "attic-0.1.0";
|
||||
system = "aarch64-darwin";
|
||||
} {
|
||||
out = "/nix/store/ja9khkssgsdx8293j3ayjl6kbhi5xzix-attic-0.1.0";
|
||||
}).out;
|
||||
|
||||
}.${system}
|
||||
|
||||
EOF
|
||||
|
||||
nix-env --substituters "https://staging.attic.rs/attic-ci https://cache.nixos.org" --trusted-public-keys "attic-ci:U5Sey4mUxwBXM3iFapmP0/ogODXywKLRNgRPQpEXxbo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" -if "$expr"
|
23
.github/workflows/book.yml
vendored
23
.github/workflows/book.yml
vendored
|
@ -26,10 +26,17 @@ jobs:
|
|||
with:
|
||||
extra-conf: |
|
||||
trusted-users = root ${{ env.ACTION_USER }}
|
||||
substituters = https://staging.attic.rs/attic-ci https://cache.nixos.org
|
||||
trusted-public-keys = attic-ci:U5Sey4mUxwBXM3iFapmP0/ogODXywKLRNgRPQpEXxbo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||
|
||||
# == Manual
|
||||
- name: Install Attic
|
||||
run: ./.github/install-attic-ci.sh
|
||||
|
||||
- name: Configure Attic
|
||||
run: |
|
||||
attic login staging https://staging.attic.rs/ "$ATTIC_TOKEN"
|
||||
attic use attic-ci
|
||||
env:
|
||||
ATTIC_TOKEN: ${{ secrets.ATTIC_TOKEN }}
|
||||
|
||||
- name: Build book
|
||||
run: nix build .#book -L
|
||||
|
||||
|
@ -44,3 +51,13 @@ jobs:
|
|||
|
||||
- name: Deploy book
|
||||
uses: actions/deploy-pages@v1.2.3
|
||||
|
||||
# TODO: Just take a diff of the list of store paths, also abstract all of this out
|
||||
- name: Push build artifacts
|
||||
run: |
|
||||
if [ -n "$ATTIC_TOKEN" ]; then
|
||||
nix build .#book --no-link --print-out-paths -L | \
|
||||
xargs attic push attic-ci
|
||||
fi
|
||||
env:
|
||||
ATTIC_TOKEN: ${{ secrets.ATTIC_TOKEN }}
|
||||
|
|
28
.github/workflows/build.yml
vendored
28
.github/workflows/build.yml
vendored
|
@ -21,10 +21,32 @@ jobs:
|
|||
with:
|
||||
extra-conf: |
|
||||
trusted-users = root ${{ env.ACTION_USER }}
|
||||
substituters = https://staging.attic.rs/attic-ci https://cache.nixos.org
|
||||
trusted-public-keys = attic-ci:U5Sey4mUxwBXM3iFapmP0/ogODXywKLRNgRPQpEXxbo= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||
|
||||
- name: Install Attic
|
||||
run: ./.github/install-attic-ci.sh
|
||||
|
||||
- name: Configure Attic
|
||||
run: |
|
||||
export PATH=$HOME/.nix-profile/bin:$PATH # FIXME
|
||||
attic login staging https://staging.attic.rs/ "$ATTIC_TOKEN"
|
||||
attic use attic-ci
|
||||
env:
|
||||
ATTIC_TOKEN: ${{ secrets.ATTIC_TOKEN }}
|
||||
|
||||
- name: Build and run tests
|
||||
run: |
|
||||
tests=$(nix build .#attic-tests --no-link --print-out-paths -L)
|
||||
system=$(nix-instantiate --eval -E 'builtins.currentSystem')
|
||||
echo system=$system >>$GITHUB_ENV
|
||||
tests=$(nix build .#internal."$system".attic-tests --no-link --print-out-paths -L)
|
||||
find "$tests/bin" -exec {} \;
|
||||
|
||||
# TODO: Just take a diff of the list of store paths, also abstract all of this out
|
||||
- name: Push build artifacts
|
||||
run: |
|
||||
export PATH=$HOME/.nix-profile/bin:$PATH # FIXME
|
||||
if [ -n "$ATTIC_TOKEN" ]; then
|
||||
nix build .#internal."$system".attic-tests .#internal."$system".cargoArtifacts --no-link --print-out-paths -L | \
|
||||
xargs attic push attic-ci
|
||||
fi
|
||||
env:
|
||||
ATTIC_TOKEN: ${{ secrets.ATTIC_TOKEN }}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
packages = {
|
||||
default = packages.attic;
|
||||
|
||||
inherit (cranePkgs) attic attic-client attic-server attic-tests;
|
||||
inherit (cranePkgs) attic attic-client attic-server;
|
||||
|
||||
attic-nixpkgs = pkgs.callPackage ./package.nix { };
|
||||
|
||||
|
@ -61,6 +61,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
internal = {
|
||||
inherit (cranePkgs) attic-tests cargoArtifacts;
|
||||
};
|
||||
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
inputsFrom = with packages; [ attic book ];
|
||||
|
|
Loading…
Reference in a new issue