Skip to content

Commit

Permalink
netlifyDeploy: add flake-module
Browse files Browse the repository at this point in the history
  • Loading branch information
Kranzes committed Nov 10, 2022
1 parent 692309d commit d381f41
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
69 changes: 69 additions & 0 deletions effects/netlify/flake-module.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{ config, lib, hci-effects, ... }:
let
inherit (lib) mkOption types optionalAttrs;
cfg = config.netlify-deploy;
in
{
options.netlify-deploy = {
enable = lib.mkEnableOption "On-push deployment to Netlify";

siteId = mkOption {
type = (types.nullOr types.str);
default = null;
description = lib.mdDoc ''
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.nullOr types.str);
default = null;
description = lib.mdDoc ''
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 `${cfg.secretField}` field, ith a string value that is a Netlify personal access token.
'';
};

secretField = mkOption {
type = types.str;
default = "token";
description = lib.mdDoc "The name of the field inside the `${cfg.secretName}` secret which holds the Netlify personal access token.";
};

content = mkOption {
type = (types.nullOr types.str);
default = null;
description = lib.mdDoc ''
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.

This comment has been minimized.

Copy link
@roberth

roberth Nov 10, 2022

I wrote a mutable one the other day, for docs.hercules-ci.com. It can be a relative path to something built in a previous phase or hook. (Note to self: hercules-ci#88)

This comment has been minimized.

Copy link
@Kranzes

Kranzes Nov 10, 2022

Author Owner

I'll add that as an option once hercules-ci#88 is done

'';
};

productionDeployment = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc "Whether this should be production deployment.";
};

extraDeployArgs = mkOption {
type = (types.listOf types.str);
default = [ ];
description = lib.mdDoc "Extra arguments to pass to the netlify deploy invocation.";
};
};

config = {
herculesCI = optionalAttrs (cfg.enable) {
onPush.default.outputs.effects.netlify-deploy = hci-effects.netlifyDeploy {
};
};

assertions = [
{ assertion = (cfg.siteId != null); message = "`siteId` must be set."; }
{ assertion = (cfg.secretName != null); message = "`secretName` must be set."; }
{ assertion = (cfg.content != null); message = "`content` must be set."; }
];
};
}
1 change: 1 addition & 0 deletions flake-module.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
./flake-modules/herculesCI-attribute.nix
./flake-modules/herculesCI-helpers.nix
./effects/flake-update/flake-module.nix
./effects/netlify/flake-module.nix
];
}

0 comments on commit d381f41

Please sign in to comment.