Skip to content

Latest commit

 

History

History
83 lines (59 loc) · 2.72 KB

File metadata and controls

83 lines (59 loc) · 2.72 KB
myst
html_meta
description lang=en keywords
Continuous Integration with GitHub Actions and a binary cache
CI, Continuous Integration, GitHub Actions, Binary Cache, Nix

(github-actions)=

Continuous integration with GitHub Actions

:authors: domenkozar

Set up GitHub Actions as your continuous integration (CI) workflow for commits and pull requests.

Nix lets CI build and cache developer environments for every project on every branch using binary caches.

Build time is a key CI metric. Cachix (below) is the most straightforward caching option.

Caching builds using Cachix

Using Cachix you'll never have to waste time building a derivation twice, and you'll share built derivations with all your developers.

After each job, just-built derivations are pushed to your binary cache.

Before each job, derivations to be built are first substituted (if they exist) from your binary cache.

1. Creating your first binary cache

It's recommended to have different binary caches per team, depending on who will have write/read access to it.

Fill out the form on the create binary cache page.

On your freshly created binary cache, follow the Push binaries tab instructions.

2. Setting up secrets

On your GitHub repository or organization (for use across all repositories):

  1. Click on Settings.
  2. Click on Secrets.
  3. Add your previously generated secrets (CACHIX_SIGNING_KEY and/or CACHIX_AUTH_TOKEN).

3. Setting up GitHub Actions

Create .github/workflows/test.yml with:

name: "Test"
on:
  pull_request:
  push:
jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: cachix/install-nix-action@v25
      with:
        nix_path: nixpkgs=channel:nixos-unstable
    - uses: cachix/cachix-action@v14
      with:
        name: mycache
        # If you chose signing key for write access
        signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
        # If you chose API tokens for write access OR if you have a private cache
        authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
    - run: nix-build
    - run: nix-shell --run "echo OK"

Once you commit and push to your GitHub repository, you should see status checks appearing on commits and PRs.

Next steps