settings section. It runs on schedule, workflow_dispatch and push events, and is enabled by a settings section.
Merging
mergeCommit, squash and rebase choose the allowed merge methods. autoMerge, updateBranch, deleteBranchOnMerge and webCommitSignoff switch those repository options. squashTitle is PR_TITLE or COMMIT_OR_PR_TITLE, and squashMessage is COMMIT_MESSAGES, PR_BODY or BLANK.
Features
wiki, discussions and sponsorships turn those repository features on or off.
Security
dependabotAlerts turns on the dependency graph with Dependabot alerts, and dependabotSecurityUpdates lets Dependabot open pull requests that fix them. Security updates need alerts, so turn both on together.
Secret scanning is only changed on public repositories; on a private one it needs a paid Advanced Security licence, so smartcloud leaves it to the organisation and records a notice. Private vulnerability reporting is likewise only changed on public repositories, as GitHub does not offer it on private ones; a notice says so. Code scanning fails when the repository has no language CodeQL supports, and secret scanning can fail too; both are reported as warnings rather than errors.
Ruleset
ruleset manages one ruleset on the default branch, matched by name (default house: default branch), so each run updates it in place.
The ruleset is written whole: a switch left out, or false, means that rule is not enforced.
On a private repository, rulesets need a paid plan, so a failure there is a warning.
Environments
environments.names lists deployment environments to create. Without it, projectType picks a set:
Environments that ship to users deploy only from the default branch and from release tags matching
v*. smartcloud sets them to use custom deployment branch policies and creates a branch policy for the default branch and a tag policy for v* when they are missing; policies you added yourself are kept. It does not rely on GitHub’s “protected branches” option, because that counts only classic branch protection, and with none (this feature writes a ruleset instead) every branch could deploy. Staging, development, dev, preview and any name ending in “Beta” accept any branch.
Actions
GitHub needs
enabled whenever the others in the first group are sent, so setting allowedActions or shaPinningRequired alone keeps Actions on.
The access level only exists for private and internal repositories: any repository can already use the actions and reusable workflows of a public one. On a public repository it is left alone and a notice says so. Keep it at organization on a private repository whose reusable workflows the others call, such as a private .github repository; at none, every workflow that calls them fails before it starts.
Set workflowPermissions: read only when every workflow declares the permissions it needs. A workflow that relies on the default write access breaks.
Collaborators and teams
collaborators maps a GitHub login to a role: read, triage, write, maintain or admin. Someone who is not yet a collaborator is invited. none removes the collaborator.
teams maps a team slug in the repository’s organisation to a role from the same list. A team that has no access yet is added. Teams can only be given access, not removed; remove one by hand.
Only the logins and teams you list are changed. Everyone else keeps their access.
Webhooks
webhooks maps a name of your choosing to a webhook, matched on GitHub by url:
smartcloud never sets or changes a webhook secret: add one by hand in the repository’s webhook settings, and later runs keep it. Plans and reports name only the URL’s host, but the config itself is readable by everyone who can read the repository, so keep tokens out of the URL on a public repository.
Pages
A missing site is created (built from a workflow unless a branch, path or
legacy build type is set), then updated with the custom domain and HTTPS setting. An existing site is updated with what the config sets.
Variables
variables maps each Actions variable the repository must have to what it is for. smartcloud only checks the names exist; values are never read, written or kept in the config. A missing variable is a warning that names it and its purpose, so a maintainer can set it by hand in Settings, Secrets and variables, Actions, Variables. Names compare ignoring case, as GitHub stores them in upper case, and names starting with GITHUB_ are reserved by GitHub and rejected.