Skip to content
Snippets Groups Projects
ci.yml 8.41 KiB
name: CI and Artifacts

on:
  pull_request:
  push:
    branches:
      - main

env:
  # Required to make some things output color
  TERM: ansi

jobs:
  ci:
    name: CI and Artifacts

    runs-on: ubuntu-latest

    steps:
      - name: Sync repository
        uses: actions/checkout@v4

      - name: Install Nix (with flakes and nix-command enabled)
        uses: cachix/install-nix-action@v25
        with:
          nix_path: nixpkgs=channel:nixos-unstable

          # Add the `nix-community` cachix to speed up things that leverage it
          extra_nix_config: |
            experimental-features = nix-command flakes
            extra-substituters = https://nix-community.cachix.org
            extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
            extra-substituters = https://crane.cachix.org
            extra-trusted-public-keys = crane.cachix.org-1:8Scfpmn9w+hGdXH/Q9tTLiYAE/2dnJYRJP7kl80GuRk=
            extra-substituters = https://nix.computer.surgery/conduit
            extra-trusted-public-keys = conduit:ZGAf6P6LhNvnoJJ3Me3PRg7tlLSrPxcQ2RiE5LIppjo=

      - name: Pop/push Magic Nix Cache
        uses: DeterminateSystems/magic-nix-cache-action@main

      - name: Configure `nix-direnv`
        run: |
          echo 'source $HOME/.nix-profile/share/nix-direnv/direnvrc' > "$HOME/.direnvrc"

      - name: Install `direnv` and `nix-direnv`
        run: nix-env -f "<nixpkgs>" -iA direnv -iA nix-direnv

      - name: Pop/push downloaded crate cache
        uses: actions/cache@v4
        with:
          key: downloaded-crates
          path: ~/.cargo

      - name: Pop/push compiled crate cache
        uses: actions/cache@v4
        with:
          key: compiled-crates-${{runner.os}}
          path: target

      # Do this to shorten the logs for the real CI step
      - name: Populate `/nix/store`
        run: nix develop --command true

      - name: Perform continuous integration
        run: |
          direnv allow
          direnv exec . engage

      - name: Build static-x86_64-unknown-linux-musl
        run: |