使用GitHub Actions构建 cachix 缓存

文档continuous-integration-github-actions

主要步骤

  • 创建cache缓存仓库,并获取 CACHIX_AUTH_TOKEN

  • 使用模板[Use this template]

# https://github.com/nix-dot-dev/getting-started-nix-template
  • 在创建的仓库里面配置「Settings」「Secrets」CACHIX_AUTH_TOKEN和CACHIX_SIGNING_KEY,在下面生成CACHIX_SIGNING_KEY

  • 创建 signingKey,丢了就完犊子了: 以 jcleng-dev 为例子

# 对 jcleng-dev 创建 signingKey
cachix generate-keypair jcleng-dev
Written to /Users/jcleng/.config/cachix/cachix.dhall

$ export CACHIX_SIGNING_KEY=8Ij5qEgmO+5n1inGQzCd/gidKKXTyBVGue1KAyi6aVPP0A1aQNwNl9tQYrXaizE5pfi7gD2SaGdEq7c6Hk5Bxw==
$ nix-build | cachix push jcleng-dev

# 或者进入result目录
cachix push jcleng-dev ./

# 或者在对应cache仓库Danger Zone把CACHIX_SIGNING_KEY转换为统一CACHIX_AUTH_TOKEN使用
set -x CACHIX_AUTH_TOKEN eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJmZDIxNjhmOC0zYmU5LTQ1OTEtODg5MS0yN2MyMGMzM2JiNmMiLCJzY29wZXMiOiJ0eCJ9.EGaTS6YC4XbEirfVpMipE-hg_yK7I2GGAIMvuiHhCFc
  • 测试构建是否从仓库直接下载二进制文件

# 使用缓存仓库
cachix use jcleng-dev
# 构建
nix-build
  • /Users/jcleng/.config/cachix/cachix.dhall 原文

{ authToken =
    "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJmZDIxNjhmOC0zYmU5LTQ1OTEtODg5MS0yN2MyMGMzM2JiNmMiLCJzY29wZXMiOiJ0eCJ9.EGaTS6YC4XbEirfVpMipE-hg_yK7I2GGAIMvuiHhCFc"
, binaryCaches =
  [ { name = "jcleng-dev"
    , secretKey =
        "8Ij5qEgmO+5n1inGQzCd/gidKKXTyBVGue1KAyi6aVPP0A1aQNwNl9tQYrXaizE5pfi7gD2SaGdEq7c6Hk5Bxw=="
    }
  ]
}