From 66823a939a05f335f8a54c1892cbd202bc06487e Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Sat, 19 Sep 2026 15:47:32 +1000 Subject: [PATCH] Add pull-mirror support and a mirrors organisation Expose the non-secret gitea_repository mirror/migration attributes through the repository module and add the mirrors org for public upstream mirrors. --- config/git.unkin.net/mirrors/config.yaml | 3 ++ modules/gitea_instance/main.tf | 10 +++++ .../gitea_instance/modules/repository/main.tf | 10 +++++ .../modules/repository/variables.tf | 45 +++++++++++++++++++ modules/gitea_instance/variables.tf | 10 +++++ 5 files changed, 78 insertions(+) create mode 100644 config/git.unkin.net/mirrors/config.yaml diff --git a/config/git.unkin.net/mirrors/config.yaml b/config/git.unkin.net/mirrors/config.yaml new file mode 100644 index 0000000..fcb299b --- /dev/null +++ b/config/git.unkin.net/mirrors/config.yaml @@ -0,0 +1,3 @@ +description: "Pull mirrors of upstream repositories" +visibility: public +repo_admin_change_team_access: true diff --git a/modules/gitea_instance/main.tf b/modules/gitea_instance/main.tf index 5247cbc..dc84eff 100644 --- a/modules/gitea_instance/main.tf +++ b/modules/gitea_instance/main.tf @@ -35,6 +35,16 @@ module "repository" { website = each.value.website autodetect_manual_merge = each.value.autodetect_manual_merge + mirror = each.value.mirror + migration_clone_address = each.value.migration_clone_address + migration_service = each.value.migration_service + migration_mirror_interval = each.value.migration_mirror_interval + migration_lfs = each.value.migration_lfs + migration_lfs_endpoint = each.value.migration_lfs_endpoint + migration_issue_labels = each.value.migration_issue_labels + migration_milestones = each.value.migration_milestones + migration_releases = each.value.migration_releases + depends_on = [module.organisation] } diff --git a/modules/gitea_instance/modules/repository/main.tf b/modules/gitea_instance/modules/repository/main.tf index f0b6073..9949454 100644 --- a/modules/gitea_instance/modules/repository/main.tf +++ b/modules/gitea_instance/modules/repository/main.tf @@ -18,6 +18,16 @@ resource "gitea_repository" "this" { autodetect_manual_merge = var.autodetect_manual_merge archive_on_destroy = true + mirror = var.mirror + migration_clone_address = var.migration_clone_address + migration_service = var.migration_service + migration_mirror_interval = var.migration_mirror_interval + migration_lfs = var.migration_lfs + migration_lfs_endpoint = var.migration_lfs_endpoint + migration_issue_labels = var.migration_issue_labels + migration_milestones = var.migration_milestones + migration_releases = var.migration_releases + lifecycle { # migration_mirror_interval defaults to "8h0m0s" but Gitea returns an empty MirrorInterval for non-mirror repos, so the read-back never matches and plans a spurious update every run; it is a migration-only knob with no drift to track here. ignore_changes = [migration_mirror_interval] diff --git a/modules/gitea_instance/modules/repository/variables.tf b/modules/gitea_instance/modules/repository/variables.tf index d6479e1..7a91820 100644 --- a/modules/gitea_instance/modules/repository/variables.tf +++ b/modules/gitea_instance/modules/repository/variables.tf @@ -80,3 +80,48 @@ variable "autodetect_manual_merge" { type = bool default = null } + +variable "mirror" { + type = bool + default = null +} + +variable "migration_clone_address" { + type = string + default = null +} + +variable "migration_service" { + type = string + default = null +} + +variable "migration_mirror_interval" { + type = string + default = null +} + +variable "migration_lfs" { + type = bool + default = null +} + +variable "migration_lfs_endpoint" { + type = string + default = null +} + +variable "migration_issue_labels" { + type = bool + default = null +} + +variable "migration_milestones" { + type = bool + default = null +} + +variable "migration_releases" { + type = bool + default = null +} diff --git a/modules/gitea_instance/variables.tf b/modules/gitea_instance/variables.tf index 7ab9c2f..a67f810 100644 --- a/modules/gitea_instance/variables.tf +++ b/modules/gitea_instance/variables.tf @@ -32,6 +32,16 @@ variable "repository" { repo_template = optional(bool) website = optional(string) autodetect_manual_merge = optional(bool) + + mirror = optional(bool) + migration_clone_address = optional(string) + migration_service = optional(string) + migration_mirror_interval = optional(string) + migration_lfs = optional(bool) + migration_lfs_endpoint = optional(string) + migration_issue_labels = optional(bool) + migration_milestones = optional(bool) + migration_releases = optional(bool) })) default = {} } -- 2.47.3