-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
68 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
{ config, lib, withSystem, ... }: | ||
let | ||
inherit (lib) mkOption types optionalAttrs mapAttrs; | ||
cfg = config.netlify-deploy; | ||
in | ||
{ | ||
options.netlify-deploy = mkOption { | ||
type = (types.attrsOf types.submodule { | ||
options = { | ||
enable = lib.mkEnableOption "On-push deployment to Netlify"; | ||
|
||
siteId = mkOption { | ||
type = types.str; | ||
description = '' | ||
An opaque identifier assigned by Netlify to the website you wish to deploy. | ||
See [docs.hercules-ci.com](https://docs.hercules-ci.com/hercules-ci-effects/reference/nix-functions/netlifydeploy/#param-name) on how to get the right siteId for your website from Netlify. | ||
''; | ||
}; | ||
|
||
secretName = mkOption { | ||
type = types.str; | ||
description = '' | ||
The secret that will be looked up in [secrets.json](https://docs.hercules-ci.com/hercules-ci-agent/secrets-json). | ||
This secret must hold the `secretField` field, ith a string value that is a Netlify personal access token. | ||
''; | ||
}; | ||
|
||
secretField = mkOption { | ||
type = types.str; | ||
default = "token"; | ||
description = "The name of the field inside the `secretName` secret which holds the Netlify personal access token."; | ||
}; | ||
|
||
content = mkOption { | ||
type = types.str; | ||
description = '' | ||
Path to the site content, also known as the Publish directory. | ||
This includes files such as netlify.toml, _redirects, and all web resources, like index.html, style sheets, etc. | ||
You will typically put a derivation here. | ||
''; | ||
}; | ||
|
||
productionDeployment = mkOption { | ||
type = types.bool; | ||
default = false; | ||
description = "Whether this should be production deployment."; | ||
}; | ||
|
||
extraDeployArgs = mkOption { | ||
type = (types.listOf types.str); | ||
default = [ ]; | ||
description = "Extra arguments to pass to the netlify deploy invocation."; | ||
}; | ||
}; | ||
}); | ||
}; | ||
|
||
config = { | ||
herculesCI.onPush.default.outputs.effects = { | ||
netlify-deploy = mapAttrs | ||
(name: siteCfg: optionalAttrs (siteCfg.enable) withSystem config.defaultEffectSystem ({ hci-effects, ... }: | ||
hci-effects.netlifyDeploy { inherit (siteCfg) siteId secretName secretField content productionDeployment extraDeployArgs; } | ||
)) | ||
cfg; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters