Skip to content

Terraform modules for deploying and managing a GitHub repository.

License

Notifications You must be signed in to change notification settings

cncsc/terraform-github-repository

Cloud-Native Cybersecurity Collective Logo

terraform-github-repository

Continuous Integration Status Continuous Deployment Status Release License Maintained by Armor

This repository contains modules for deploying and managing GitHub repositories.

Requirements

Name Version
terraform >= 0.12.26
github >= 5.12.0

Providers

Name Version
github >= 5.12.0

Modules

Name Source Version
admin_teams team-repository n/a
admin_users repository-collaborator n/a
pull_teams team-repository n/a
pull_users repository-collaborator n/a
push_teams team-repository n/a
push_users repository-collaborator n/a

Resources

Name Type
github_branch_default.default resource
github_issue_label.labels resource
github_repository.repo resource

Inputs

Name Description Type Default Required
admin_teams A set of team IDs allowed to administer this repository. set(string) [] no
admin_users A set of GitHub users' IDs allowed to admin this repository. set(string) [] no
advanced_security_enabled Whether or not advanced security features are enabled on the repository. bool true no
allow_merge_commit Set to false to disable merge commits on the repository. bool true no
allow_rebase_merge Set to false to disable rebase merges on the repository. bool true no
allow_squash_merge Set to false to disable squash merges on the repository. bool true no
allow_update_branch Set to true to always suggest updating pull request branches. bool true no
archive_on_destroy Set to true to archive the repository instead of deleting on destroy. bool true no
archived Specifies if the repository should be archived. bool false no
auto_init Set to true to produce an initial commit in the repository. This is required in order to set the default branch on a new repository, but may be set to false on imported repositories. bool true no
default_branch The name of the default branch for the repository. string "main" no
delete_branch_on_merge Automatically delete head branch after a pull request is merged. bool true no
description A description of the repository. string n/a yes
has_downloads Set to true to enable the (deprecated) downloads features on the repository. bool false no
has_issues Set to true to enable the GitHub Issues features on the repository. bool false no
has_projects Set to true to enable the GitHub Projects features on the repository. bool false no
has_wiki Set to true to enable the GitHub Wiki features on the repository. bool false no
homepage_url URL of a page describing the project. string "" no
ignore_vulnerability_alerts_during_read Set to true to omit calling the vulnerability alerts endpoint so the resource can also be used without admin permissions during read. bool true no
is_template Whether or not this repository is a template repository. bool false no
labels A set of labels to configure for the repository.
set(object({
name = string,
description = string,
color = string
}))
[] no
merge_commit_message The default merge commit message. One of PR_BODY, PR_TITLE, or BLANK. string "PR_TITLE" no
merge_commit_title The default merge commit title. One of PR_TITLE or MERGE_MESSAGE. string "PR_TITLE" no
name The name of the repository. string n/a yes
pages_branch The repository branch used to publish the site's source files. string null no
pages_cname The custom domain for the repository. This can only be set after the repository has been created. string null no
pages_path The path from which the site publishes GitHub pages. string null no
pull_users A set of GitHub users' IDs allowed to read this repository. set(string) [] no
push_users A set of GitHub users' IDs allowed to write to this repository. set(string) [] no
read_teams A set of teams allowed to pull this repository. set(string) [] no
secret_scanning_enabled Whether or not secret scanning is enabled on the repository. bool true no
secret_scanning_push_protection_enabled Whether or not secret scanning push protection is enabled on the repository. bool true no
squash_merge_commit_message The default squash merge commit message. One of PR_BODY, COMMIT_MESSAGES, or BLANK. string "COMMIT_MESSAGES" no
squash_merge_commit_title The default squash merge commit title. One of PR_TITLE or COMMIT_OR_PR_TITLE. string "COMMIT_OR_PR_TITLE" no
template_owner The owner of the template repository. string null no
template_repository The name of the template repository. string null no
topics A list of topics for the repository. set(string) [] no
visibility Determines the visibility of the repository. One of private, public, or internal. Note that internal is only available for GitHub Enterprise tiers. string "private" no
vulnerability_alerts Whether or not security alerts for vulnerable dependencies are enabled on the repository. bool true no
write_teams A set of team IDs allowed to push to this repository. set(string) [] no

Outputs

Name Description
full_name The full name of the repository in the form org-name/repo-name.
git_clone_url The URL that can be provided to git clone to clone the repository anonymously via the git protocol.
http_clone_url The URL that can be provided to git clone to clone the repository via HTTPS.
id The ID of the repository.
node_id The Node ID of the repository.
ssh_clone_url The URL that can be provided to git clone to clone the repository via SSH.
svn_url The URL that can be provided to svn checkout to check out the repository via GitHub's Subversion protocol emulation.

About

Terraform modules for deploying and managing a GitHub repository.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages