Skip to content

Latest commit

 

History

History
288 lines (241 loc) · 13.1 KB

File metadata and controls

288 lines (241 loc) · 13.1 KB
page_title forgejo_repository Resource - forgejo
subcategory
description Forgejo repository resource. Note: Managing user repositories requires administrative privileges!

forgejo_repository (Resource)

Forgejo repository resource.

Note: Managing user repositories requires administrative privileges!

Example Usage

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
}

Schema

Required

  • name (String) Name of the repository.

Optional

  • allow_fast_forward_only_merge (Boolean) Allowed to fast-forward-only merge pull requests? Note: This setting is only effective if has_pull_requests is true.
  • allow_manual_merge (Boolean) Allowed to manually merge pull requests? Note: This setting is only effective if has_pull_requests is true.
  • allow_merge_commits (Boolean) Allowed to create merge commit? Note: This setting is only effective if has_pull_requests is true.
  • allow_rebase (Boolean) Allowed to rebase then fast-forward? Note: This setting is only effective if has_pull_requests is true.
  • allow_rebase_explicit (Boolean) Allowed to rebase then create merge commit? Note: This setting is only effective if has_pull_requests is true.
  • allow_rebase_update (Boolean) Allowed to update pull request branch by rebase? Note: This setting is only effective if has_pull_requests is true.
  • allow_squash_merge (Boolean) Allowed to create squash commit? Note: This setting is only effective if has_pull_requests is true.
  • 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 if clone_addr is 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 if has_pull_requests is true.
  • 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 if has_pull_requests is true.
  • 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 if has_pull_requests is true.
  • default_merge_style (String) Default merge style of the repository. Note: This setting is only effective if has_pull_requests is true.
  • default_update_style (String) Default pull request update style of the repository. Note: This setting is only effective if has_pull_requests is true.
  • description (String) Description of the repository.
  • enable_prune (Boolean) Remove obsolete remote-tracking references when mirroring? Note: This setting is only effective if mirror is true.
  • external_tracker (Attributes) Settings for external issue tracker. Note: This setting is only effective if has_issues is true. (see below for nested schema)
  • external_wiki (Attributes) Settings for external wiki. Note: This setting is only effective if has_wiki is true. (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 if has_wiki is true.
  • 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 if has_pull_requests is true.
  • internal_tracker (Attributes) Settings for built-in issue tracker. Note: This setting is only effective if has_issues is true. (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 if clone_addr is set.
  • lfs (Boolean) Whether to migrate LFS files. Changing this forces a new resource to be created. Note: This setting is only effective if clone_addr is set.
  • lfs_endpoint (String) LFS endpoint to use. Changing this forces a new resource to be created. Note: This setting is only effective if lfs is true.
  • 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 if clone_addr is set.
  • mirror (Boolean) Is the repository a mirror? Changing this forces a new resource to be created. Note: This setting is only effective if clone_addr is set.
  • mirror_interval (String) Mirror interval of the repository. Note: This setting is only effective if mirror is true.
  • 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 if clone_addr is 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 if has_wiki is true.

Read-Only

  • 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.

Nested Schema for external_tracker

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.

Nested Schema for external_wiki

Required:

  • external_wiki_url (String) URL of external wiki.

Nested Schema for internal_tracker

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?

Nested Schema for permissions

Read-Only:

  • admin (Boolean) Allowed to administer?
  • pull (Boolean) Allowed to pull?
  • push (Boolean) Allowed to push?