diff --git a/products/forgejo/actions-runner/forgejo-runner.tf b/products/forgejo/actions-runner/forgejo-runner.tf index 676eaa5..6e826c3 100644 --- a/products/forgejo/actions-runner/forgejo-runner.tf +++ b/products/forgejo/actions-runner/forgejo-runner.tf @@ -8,52 +8,62 @@ module "forgejo_actions_runner" { parallelism = var.parallelism converge_enable = false environment_variables = { - forgejo_INSTANCE_URL = var.forgejo_instance_url - forgejo_RUNNER_NAME = var.forgejo_runner_name - forgejo_RUNNER_LABELS = join(",", var.forgejo_runner_labels) - forgejo_RUNNER_REGISTRATION_TOKEN = var.forgejo_token - CONFIG_FILE = "/config.yaml" + # forgejo_INSTANCE_URL = var.forgejo_instance_url + # forgejo_RUNNER_NAME = var.forgejo_runner_name + # forgejo_RUNNER_LABELS = join(",", var.forgejo_runner_labels) + # forgejo_RUNNER_REGISTRATION_TOKEN = var.forgejo_token + # CONFIG_FILE = "/config.yaml" + #DOCKER_HOST = module.docker_socket_proxy.endpoint } - mounts = { "/var/run/docker.sock" = "/var/run/docker.sock" } + mounts = { + "/var/run/docker.sock" = "/var/run/docker.sock" + } + networks = var.networks + command = ["/bin/bash", "/entrypoint.sh"] + restart_delay = "1m" configs = { - forgejo-config = yamlencode({ - name_prefix = ["forgejo-config", var.stack_name, var.service_name] - path = "/config.yaml" - contents = yamlencode({ - log = { - level = "info" - } - runner = { - file = ".runner" - capacity = 2 - env_file = ".env" - timeout = "3h" - insecure = false - fetch_timeout = "5s" - fetch_interval = "2s" - labels = var.forgejo_runner_labels - } - cache = { - enabled = true - dir = "" - host = "" - port = 0 - external_server = "" - } - container = { - network = null - privileged = false - options = null - workdir_parent = null - valid_volumes = [] - docker_host = "" - force_pull = true - force_rebuild = false - } - host = { - workdir_parent : null - } - }) + "/entrypoint.sh" = <<EOF +#!/bin/bash +set -xe +echo "Configuring runner..." +/bin/forgejo-runner --config /config.yaml register --no-interactive --instance "${var.forgejo_instance_url}" --name ${var.forgejo_runner_name} --token ${var.forgejo_token} +echo "Starting runner..." +exec /bin/forgejo-runner --config /config.yaml daemon +EOF + "/config.yaml" = yamlencode({ + log = { + level = "info" + } + runner = { + file = ".runner" + capacity = 2 + env_file = ".env" + timeout = "3h" + insecure = false + fetch_timeout = "5s" + fetch_interval = "2s" + labels = var.forgejo_runner_labels + } + cache = { + enabled = true + dir = "" + host = "" + port = 0 + external_server = "" + } + container = { + network = null + privileged = false + options = null + workdir_parent = null + valid_volumes = [] + docker_host = "" + force_pull = true + force_rebuild = false + } + host = { + workdir_parent : null + } }) } } \ No newline at end of file diff --git a/products/forgejo/actions-runner/inputs.tf b/products/forgejo/actions-runner/inputs.tf index 9a59151..5aba0ca 100644 --- a/products/forgejo/actions-runner/inputs.tf +++ b/products/forgejo/actions-runner/inputs.tf @@ -9,10 +9,18 @@ variable "forgejo_actions_runner_image" { description = "The docker image to use for the forgejo runner service." } variable "forgejo_actions_runner_version" { - default = "latest" + default = "6" type = string description = "The version of the docker image to use for the forgejo runner service." } +variable "networks" { + type = list(object({ + name = string + id = string + })) + default = [] + description = "A list of network names to attach the service to." +} variable "parallelism" { description = "The number of instances of the runner to run" type = number @@ -52,6 +60,7 @@ variable "service_name" { variable "stack_name" { type = string description = "The name of the stack to deploy the service to." + default = "forgejo" } variable "placement_constraints" { default = [] diff --git a/products/forgejo/forgejo/database.tf b/products/forgejo/forgejo/database.tf index 722d588..f78b86d 100644 --- a/products/forgejo/forgejo/database.tf +++ b/products/forgejo/forgejo/database.tf @@ -2,8 +2,7 @@ module "postgres" { source = "../../../products/postgres" stack_name = var.stack_name placement_constraints = var.placement_constraints - postgres_version = "15" - networks = [module.forgejo_network] + networks = [module.network] data_persist_path = var.database_storage_path ports = [ { diff --git a/products/forgejo/forgejo/forgejo.tf b/products/forgejo/forgejo/forgejo.tf index 0e7ee77..46d4856 100644 --- a/products/forgejo/forgejo/forgejo.tf +++ b/products/forgejo/forgejo/forgejo.tf @@ -5,7 +5,7 @@ module "forgejo" { stack_name = var.stack_name service_name = "forgejo" placement_constraints = var.placement_constraints - networks = concat(var.networks, [module.forgejo_network]) + networks = concat(var.networks, [module.network]) configs = { "/data/gitea/conf/app.ini" = templatefile("${path.module}/app.ini.tpl", merge({ name = var.forgejo_name diff --git a/products/forgejo/forgejo/networks.tf b/products/forgejo/forgejo/networks.tf index 5d4fa1a..02df49e 100644 --- a/products/forgejo/forgejo/networks.tf +++ b/products/forgejo/forgejo/networks.tf @@ -1,4 +1,4 @@ -module "forgejo_network" { +module "network" { source = "../../../docker/network" stack_name = var.stack_name network_name = "forgejo" diff --git a/products/forgejo/forgejo/outputs.tf b/products/forgejo/forgejo/outputs.tf index a5e69c9..13427a5 100644 --- a/products/forgejo/forgejo/outputs.tf +++ b/products/forgejo/forgejo/outputs.tf @@ -4,10 +4,9 @@ output "docker_service" { output "postgres" { value = module.postgres } - output "endpoint" { value = module.forgejo.endpoint } output "network" { - value = module.forgejo_network.network + value = module.network.network } \ No newline at end of file