Forgejo

Git forge and CI/CD platform. Primary source of truth for blumeops (mirrored to GitHub).

Quick Reference

PropertyValue
URLhttps://forge.ops.eblu.me
SSHssh://forgejo@forge.ops.eblu.me:2222
Local Ports3001 (HTTP), 2200 (SSH)
Configansible/roles/forgejo/templates/app.ini.j2

Repositories

RepoDescription
eblume/blumeopsInfrastructure as code (primary)
eblume/alloyGrafana Alloy fork (CGO build)
eblume/tesla_authTesla OAuth helper
Helm chart mirrorscloudnative-pg-charts, grafana-helm-charts

CI/CD (Forgejo Actions)

Runner: Kubernetes pod with Docker-in-Docker sidecar

  • Namespace: forgejo-runner
  • Labels: k8s
  • ArgoCD app: forgejo-runner

Workflows: .forgejo/workflows/

  • build-container.yaml - Container image builds on tag
  • build-blumeops.yaml - Documentation builds and releases

Secrets (Forgejo Config)

Server configuration secrets managed via 1Password → Ansible:

  • lfs-jwt-secret, internal-token, oauth2-jwt-secret - Forgejo server tokens
  • runner_reg - Runner registration token (also in k8s via external-secrets)

Forgejo Actions Secrets

Repository-level secrets for CI/CD workflows, synced from 1Password via Ansible.

Secret1Password FieldUsed ByPurpose
ARGOCD_AUTH_TOKENargocd_tokenbuild-blumeops.yamlSync docs app after release

These secrets are injected as ${{ secrets.SECRET_NAME }} in workflow files.

IaC: The forgejo_actions_secrets Ansible role syncs these secrets from 1Password to Forgejo via the Forgejo API. Run with:

mise run provision-indri -- --tags forgejo_actions_secrets

API Token Setup (Manual, One-Time)

The Ansible role authenticates to the Forgejo API using a Personal Access Token (PAT). This PAT must be created manually:

  1. Go to https://forge.ops.eblu.me/user/settings/applications
  2. Create a new token with write:repository scope
  3. Store it in 1Password → “Forgejo Secrets” item → api-token field

This is a bootstrapping requirement - the PAT enables IaC for all other secrets.

  • argocd - Uses Forgejo as git source
  • zot - Container registry for built images