| page_title | forgejo_repository Resource - forgejo |
|---|---|
| subcategory | |
| description | Forgejo repository resource. Note: Managing user repositories requires administrative privileges! |
Forgejo repository resource.
Note: Managing user repositories requires administrative privileges!
terraform {
required_providers {
forgejo = {
source = "svalabs/forgejo"
}
}
}
variable "test_password" { sensitive = true }
variable "test_token" { sensitive = true }
provider "forgejo" {
host = "http://localhost:3000"
}
# Personal repository with default settings
# (owned by the authenticated user)
resource "forgejo_repository" "personal_defaults" {
name = "personal_test_repo_defaults"
}
# Personal repository with custom settings
resource "forgejo_repository" "personal_non_defaults" {
name = "personal_test_repo_non_defaults"
description = "Terraform Test Repo owned by user with non-default attributes"
website = "http://localhost:3000"
private = true
template = true
default_branch = "custom"
issue_labels = "Default"
auto_init = false
readme = "Default"
trust_model = "collaborator"
archived = true
external_tracker = {
external_tracker_url = "https://github.com/svalabs/terraform-provider-forgejo/issues"
external_tracker_format = "https://github.com/svalabs/terraform-provider-forgejo/issues/{index}"
external_tracker_style = "numeric"
}
}
# Organization
resource "forgejo_organization" "owner" {
name = "test_org"
}
# Organization repository with default settings
# (owned by an organization)
resource "forgejo_repository" "org_defaults" {
owner = forgejo_organization.owner.name
name = "org_test_repo_defaults"
}
# Organization repository with custom settings
resource "forgejo_repository" "org_non_defaults" {
owner = forgejo_organization.owner.name
name = "org_test_repo_non_defaults"
description = "Terraform Test Repo owned by org with non-default attributes"
website = "http://localhost:3000"
private = true
template = true
default_branch = "custom"
issue_labels = "Default"
auto_init = false
readme = "Default"
trust_model = "collaborator"
archived = true
external_tracker = {
external_tracker_url = "https://github.com/svalabs/terraform-provider-forgejo/issues"
external_tracker_format = "https://github.com/svalabs/terraform-provider-forgejo/issues/{index}"
external_tracker_style = "numeric"
}
}
# User
resource "forgejo_user" "owner" {
login = "test_user"
email = "test_user@localhost.localdomain"
password = var.test_password
}
# User repository with default settings
# (owned by a different user)
resource "forgejo_repository" "user_defaults" {
owner = forgejo_user.owner.login
name = "user_test_repo_defaults"
}
# User repository with custom settings
resource "forgejo_repository" "user_non_defaults" {
owner = forgejo_user.owner.login
name = "user_test_repo_non_defaults"
description = "Terraform Test Repo owned by user with non-default attributes"
website = "http://localhost:3000"
private = true
template = true
default_branch = "custom"
issue_labels = "Default"
auto_init = false
readme = "Default"
trust_model = "collaborator"
archived = true
external_tracker = {
external_tracker_url = "https://github.com/svalabs/terraform-provider-forgejo/issues"
external_tracker_format = "https://github.com/svalabs/terraform-provider-forgejo/issues/{index}"
external_tracker_style = "numeric"
}
}
# Clone repository
resource "forgejo_repository" "clone" {
name = "clone_test_repo"
clone_addr = "https://github.com/svalabs/terraform-provider-forgejo"
auth_token = var.test_token # optional
mirror = false
}
# Pull mirror repository
resource "forgejo_repository" "mirror" {
name = "mirror_test_repo"
clone_addr = "https://github.com/svalabs/terraform-provider-forgejo"
auth_token = var.test_token # optional
mirror = true
mirror_interval = "12h0m0s" # optional
}
# Import repository
resource "forgejo_repository" "imported" {
owner = forgejo_user.owner.login
name = "repository-to-be-imported"
# Other mandatory and optional attributes of the repository.
# Remember attributes have to match the actual repository configuration
# otherwise Terraform will try to apply changes to the actual repository
# during import.
}
import {
# The owner (or organization) of the repository / the repository's name.
id = "test_user/repository-to-be-imported"
to = forgejo_repository.imported
}name(String) Name of the repository.
allow_fast_forward_only_merge(Boolean) Allowed to fast-forward-only merge pull requests? Note: This setting is only effective ifhas_pull_requestsistrue.allow_manual_merge(Boolean) Allowed to manually merge pull requests? Note: This setting is only effective ifhas_pull_requestsistrue.allow_merge_commits(Boolean) Allowed to create merge commit? Note: This setting is only effective ifhas_pull_requestsistrue.allow_rebase(Boolean) Allowed to rebase then fast-forward? Note: This setting is only effective ifhas_pull_requestsistrue.allow_rebase_explicit(Boolean) Allowed to rebase then create merge commit? Note: This setting is only effective ifhas_pull_requestsistrue.allow_rebase_update(Boolean) Allowed to update pull request branch by rebase? Note: This setting is only effective ifhas_pull_requestsistrue.allow_squash_merge(Boolean) Allowed to create squash commit? Note: This setting is only effective ifhas_pull_requestsistrue.archive_on_destroy(Boolean) Archive the repo instead of delete?archived(Boolean) Is the repository archived?auth_token(String, Sensitive) API token for authenticating with migrate / clone URL. Note: This setting is only effective ifclone_addris set.auto_init(Boolean) Whether the repository should be auto-intialized? Changing this forces a new resource to be created.autodetect_manual_merge(Boolean) Auto-detect manual pull request merges? Note: This setting is only effective ifhas_pull_requestsistrue.clone_addr(String) Migrate / clone from URL. Changing this forces a new resource to be created.default_allow_maintainer_edit(Boolean) Allow maintainer edits on pull requests by default? Note: This setting is only effective ifhas_pull_requestsistrue.default_branch(String) Default branch of the repository.default_delete_branch_after_merge(Boolean) Delete pull request branch after merge by default? Note: This setting is only effective ifhas_pull_requestsistrue.default_merge_style(String) Default merge style of the repository. Note: This setting is only effective ifhas_pull_requestsistrue.default_update_style(String) Default pull request update style of the repository. Note: This setting is only effective ifhas_pull_requestsistrue.description(String) Description of the repository.enable_prune(Boolean) Remove obsolete remote-tracking references when mirroring? Note: This setting is only effective ifmirroristrue.external_tracker(Attributes) Settings for external issue tracker. Note: This setting is only effective ifhas_issuesistrue. (see below for nested schema)external_wiki(Attributes) Settings for external wiki. Note: This setting is only effective ifhas_wikiistrue. (see below for nested schema)gitignores(String) Gitignores to use. Changing this forces a new resource to be created.globally_editable_wiki(Boolean) Is the repository wiki globally editable? Note: This setting is only effective ifhas_wikiistrue.has_actions(Boolean) Are integrated CI/CD pipelines enabled?has_issues(Boolean) Is the repository issue tracker enabled?has_packages(Boolean) Is the repository package registry enabled?has_projects(Boolean) Are repository projects enabled?has_pull_requests(Boolean) Are repository pull requests enabled?has_releases(Boolean) Are repository releases enabled?has_wiki(Boolean) Is the repository wiki enabled?ignore_whitespace_conflicts(Boolean) Are whitespace conflicts ignored? Note: This setting is only effective ifhas_pull_requestsistrue.internal_tracker(Attributes) Settings for built-in issue tracker. Note: This setting is only effective ifhas_issuesistrue. (see below for nested schema)issue_labels(String) Issue Label set to use.labels(Boolean) Whether to migrate labels. Changing this forces a new resource to be created. Note: This setting is only effective ifclone_addris set.lfs(Boolean) Whether to migrate LFS files. Changing this forces a new resource to be created. Note: This setting is only effective ifclone_addris set.lfs_endpoint(String) LFS endpoint to use. Changing this forces a new resource to be created. Note: This setting is only effective iflfsistrue.license(String) License to use. Changing this forces a new resource to be created.milestones(Boolean) Whether to migrate milestones. Changing this forces a new resource to be created. Note: This setting is only effective ifclone_addris set.mirror(Boolean) Is the repository a mirror? Changing this forces a new resource to be created. Note: This setting is only effective ifclone_addris set.mirror_interval(String) Mirror interval of the repository. Note: This setting is only effective ifmirroristrue.owner(String) Owner of the repository (user or organization). Changing this forces a new resource to be created.private(Boolean) Is the repository private?readme(String) Readme of the repository to create. Changing this forces a new resource to be created.service(String) Service to migrate from. Changing this forces a new resource to be created. Note: This setting is only effective ifclone_addris set.template(Boolean) Is the repository a template?trust_model(String) TrustModel of the repository. Changing this forces a new resource to be created.website(String) Website of the repository.wiki_branch(String) Branch used for the repository wiki. Note: This setting is only effective ifhas_wikiistrue.
avatar_url(String) Avatar URL of the repository.clone_url(String) Clone URL of the repository.created_at(String) Time at which the repository was created.empty(Boolean) Is the repository empty?fork(Boolean) Is the repository a fork?forks_count(Number) Number of forks of the repository.full_name(String) Full name of the repository.html_url(String) HTML URL of the repository.id(Number) Numeric identifier of the repository.internal(Boolean) Is the repository internal?mirror_updated(String) Time at which the repository mirror was updated.open_issues_count(Number) Number of open issues of the repository.open_pr_counter(Number) Number of open pull requests of the repository.parent_id(Number) Numeric identifier of the parent repository.permissions(Attributes) Permissions of the repository. (see below for nested schema)release_counter(Number) Number of releases of the repository.size(Number) Size of the repository in KiB.ssh_url(String) SSH URL of the repository.stars_count(Number) Number of stars of the repository.updated_at(String) Time at which the repository was updated.watchers_count(Number) Number of watchers of the repository.
Required:
external_tracker_format(String) External issue tracker URL format. Use the placeholders{user},{repo}and{index}for the username, repository name and issue index.external_tracker_url(String) URL of external issue tracker.
Optional:
external_tracker_regexp_pattern(String) External issue tracker issue regular expression.external_tracker_style(String) External issue tracker number format.
Required:
external_wiki_url(String) URL of external wiki.
Optional:
allow_only_contributors_to_track_time(Boolean) Let only contributors track time?enable_issue_dependencies(Boolean) Enable dependencies for issues and pull requests?enable_time_tracker(Boolean) Enable time tracking?
Read-Only:
admin(Boolean) Allowed to administer?pull(Boolean) Allowed to pull?push(Boolean) Allowed to push?