runCachixDeploy
runCachixDeploy :: AttrSet → Effect
Pushes a deploy.json to Cachix Deploy, which is a pull-based deployment service. It mediates two programs: cachix deploy activate which updates the store paths to be pulled and run by cachix deploy agent.
runCachixDeploy is a convenience function to invoke cachix deploy activate.
The cachix push <store-path> part is taken care of by configuring a cachix build cache in binary-caches.json.
Example:
runCachixDeploy {
deploy.agents."machine1" = (pkgs.nixos ./configuration.nix).toplevel;
async = true;
}
secrets.json:
"default-cachix-activate": {
"kind": "Secret",
"data": {
"cachixActivateToken": "....."
}
},
As Cachix Deploy is a new feature, make sure to use a cachix package that includes it. You can set it in an overlay or pass the package as the cachix parameter.
|
Parameters
deploy
The deploy.json contents as a Nix attribute set.
Example:
runCachixDeploy {
deploy.agents = {
"machine1" = (pkgs.nixos { ... }).toplevel;
"machine2" = (lib.nixosSystem { ... }).config.system.build.toplevel;
};
}
Make sure to set the correct system parameter when creating pkgs or invoking lib.nixosSystem.
|
secretsMap.activate
Default: "default-cachix-activate"
Name of a secret containing the cachixActivateToken field.
For example:
runCachixDeploy {
# ...
secretsMap.activate = "default-cachix-activate";
}
Get a Cachix Deploy activation token and replace ACTIVATION-TOKEN with it.
cd myproject
hci secret add default-cachix-activate --string cachixActivateToken ACTIVATION-TOKEN
And then copy the secret over to your Hercules CI agent secrets.json.
"default-cachix-activate": {
"kind": "Secret",
"data": {
"cachixActivateToken": "ACTIVATION-TOKEN"
}
},
You can generate a value for ACTIVATION-TOKEN by navigating to Cachix Deploy, creating a workspace if you haven’t already done so and clicking Start Deployment.
async
Default: false
Whether to exit immediately instead of waiting for all deployments to finish. This is useful if you are deploying to a system that might be offline, for example, a laptop.
When true, the effect will exit immediately and the deployment will continue in the background.
When false, the effect will wait for the deployment to finish before exiting. The log will be available in the Hercules CI dashboard.
If the effect will redeploy the hercules-ci-agent that runs the effect, async must be set to true.
|
deployJsonFile
(Advanced use case)
The path to a deploy.json file, in case the shape of the file is not known during evaluation. Usually, deploy will suffice.
… — remaining arguments
Other attributes are passed to mkEffect, which passes its remaining arguments to mkDerivation.
Return value
An effect that activates the configured Cachix Deploy agents.