Commit Graph

110 Commits

Author SHA1 Message Date
S
64e7fd1bff feat: switch phase1 to macvlan networking
Replace host port vars with macvlan vars in require_vars. Add Step 2
to create the macvlan gitea_net network on Unraid. Update
docker-compose rendering to use GITEA_CONTAINER_IP and
DB_CONTAINER_IP instead of port mapping. Renumber steps accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:23:17 -05:00
S
54eab1bf89 feat: switch docker-compose template from port mapping to macvlan
Remove ports: section (no more host port mapping). Add networks:
with static ipv4_address for gitea and db containers. Reference
external gitea_net network (macvlan created by phase scripts).
Add DB_CONTAINER_IP for database service networking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:22:02 -05:00
S
6ed1cff3f6 feat: update validation arrays for macvlan networking in common.sh
Remove UNRAID_GITEA_PORT, UNRAID_GITEA_SSH_PORT, FEDORA_GITEA_PORT,
FEDORA_GITEA_SSH_PORT from required validation. Add macvlan vars
(parent, subnet, gateway, ip_range, gitea_ip, caddy_ip) for both
hosts. Add UNRAID_DB_IP and FEDORA_DB_IP as optional validated vars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:21:39 -05:00
S
927ba37661 feat: add macvlan networking vars, remove host port mapping from .env.example
Remove UNRAID_GITEA_PORT, UNRAID_GITEA_SSH_PORT, FEDORA_GITEA_PORT,
FEDORA_GITEA_SSH_PORT — containers now use their own LAN IPs on
standard ports. Add DOCKER NETWORKING section with macvlan config
(parent interface, subnet, gateway, IP range) and per-container
static IPs (gitea, db, caddy) for both hosts. Update internal URL
comments to reference container IPs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:21:06 -05:00
S
2a89c49733 docs: update README database section for multi-DB support
Replace single-DB rationale with description of all four supported
backends (sqlite3, mysql, postgres, mssql) and how the toolkit
handles each.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:20:03 -05:00
S
ba1a373ec9 feat: add conditional DB vars check to preflight.sh
When GITEA_DB_TYPE is not sqlite3, validate that GITEA_DB_HOST,
GITEA_DB_PORT, GITEA_DB_NAME, GITEA_DB_USER, and GITEA_DB_PASSWD
are set in the required vars check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:19:45 -05:00
S
a44b49283b feat: add external database import to restore_to_primary.sh
After extracting the archive, import gitea-db.sql into the running
DB container for postgres/mysql/mssql. Each DB type uses its native
CLI tool inside the container. SQLite restores remain unchanged.
Add GITEA_DB_TYPE to require_vars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:19:22 -05:00
S
f098abbe55 feat: add conditional database prompts to configure_env.sh wizard
Add db_type validation case. After GITEA_DB_TYPE prompt, conditionally
show 5 database connection prompts (host, port, name, user, passwd)
when DB type is not sqlite3. Auto-suggest default port per DB type
(mysql=3306, postgres=5432, mssql=1433). Update TOTAL_PROMPTS
dynamically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:18:52 -05:00
S
b4b0d1b056 feat: add database support to phase2_gitea_fedora.sh
Mirror phase1 DB support: add _set_db_vars() and _strip_block()
helpers, conditional require_vars for DB connection, DB data directory
creation, and conditional template rendering for docker-compose and
app.ini based on GITEA_DB_TYPE.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:18:27 -05:00
S
2c900b7e4f feat: add database support to phase1_gitea_unraid.sh
Add _set_db_vars() helper to configure DB-specific docker-compose
vars (image, env, healthcheck, data dir) for postgres/mysql/mssql.
Add _strip_block() to remove conditional template markers. Update
docker-compose and app.ini rendering to strip/populate DB blocks
based on GITEA_DB_TYPE. Conditionally require DB connection vars.
Create DB data directory for external databases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:17:37 -05:00
S
35aeb504c4 feat: add DB service block to docker-compose-gitea template
Add DB_SERVICE_START/END markers for the database container and
DB_DEPENDS_START/END for the gitea service depends_on. Phase scripts
strip these blocks for sqlite3 and populate DB-specific vars
(image, env, healthcheck, data dir) for mysql/postgres/mssql.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:16:37 -05:00
S
5be95ff98a feat: add conditional SQLITE/EXTDB blocks to app.ini template
Phase scripts strip the irrelevant block after render_template:
sqlite3 removes EXTDB_BLOCK, external DBs remove SQLITE_BLOCK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:16:05 -05:00
S
02ffddf072 feat: add conditional database connection vars to .env.example
Add GITEA_DB_HOST, GITEA_DB_PORT, GITEA_DB_NAME, GITEA_DB_USER, and
GITEA_DB_PASSWD. These are only required when GITEA_DB_TYPE is not
sqlite3. Update DB_TYPE comment to list all valid options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:15:53 -05:00
S
5cc8d14a29 feat: add database type validation and conditional DB vars to common.sh
Add validate_db_type() accepting sqlite3/mysql/postgres/mssql. Update
GITEA_DB_TYPE validator from nonempty to db_type. Add conditional DB
validation arrays (host, port, name, user, passwd) required when DB
type is not sqlite3. Rename SSL conditional arrays for clarity.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:15:35 -05:00
S
b32f5dc999 docs: update runners.conf.example for renamed vars and smart defaults
- data_path default: RUNNER_DATA_BASE_PATH/name
- capacity default: 2 (server), 1 (macOS) — no longer from .env

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:12:10 -05:00
S
18b9264343 refactor: remove RUNNER_DEFAULT_CAPACITY reference from manage_runner.sh
Capacity is now always set per-runner in runners.conf (smart defaults
applied during configure_runners.sh wizard).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:11:48 -05:00
S
74fdd3df8e refactor: update runner var names in preflight.sh required vars
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:11:33 -05:00
S
c68c387091 feat: smart capacity defaults and per-runner data paths in runner wizard
- Capacity defaults: Unraid=2, Fedora=2, macOS=1 (based on host type)
- Data path appends runner name to base path to prevent collisions
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:11:16 -05:00
S
567f507d05 refactor: update runner var names in configure_env.sh wizard
- Remove RUNNER_DEFAULT_CAPACITY prompt (smart defaults in runner wizard)
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH
- TOTAL_PROMPTS 53 → 52

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:10:41 -05:00
S
7ce562bc1c refactor: update runner var names in env validation arrays
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH
- Remove RUNNER_DEFAULT_CAPACITY from validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:10:20 -05:00
S
5b11af955c refactor: rename runner data path vars, remove RUNNER_DEFAULT_CAPACITY
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH (clarify it's a host path)
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH
- Remove RUNNER_DEFAULT_CAPACITY (now smart defaults per host type in wizard)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:09:56 -05:00
S
768701004d docs: update PLAN.md for REPO_NAMES
Replace REPO_1/2/3_NAME references with REPO_NAMES.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:09:20 -05:00
S
3d0532ca40 docs: update README.md for dynamic repo list
Replace "hardcoded 3-repo limit" section with dynamic REPO_NAMES docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:08:42 -05:00
S
6c193eb4b5 feat: dynamic repo count in configure_env.sh wizard
Replace 3 hardcoded REPO_N_NAME prompts with:
- "How many repos?" prompt
- Loop for each repo name
- Saves as space-delimited REPO_NAMES in .env
TOTAL_PROMPTS computed dynamically after repo count is known.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:08:28 -05:00
S
e564a99937 refactor: use REPO_NAMES in configure_runners.sh
- Update validate_runner_repos() to check against words in REPO_NAMES
- Update repos hint builder to iterate REPO_NAMES

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:06:48 -05:00
S
93aff03b19 refactor: use REPO_NAMES in preflight.sh
- Replace REPO_1/2/3_NAME in required vars with REPO_NAMES
- Update GitHub repos existence check to iterate REPO_NAMES
- Update runner repos validation to check against REPO_NAMES words

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:06:24 -05:00
S
a4e20ab4f1 refactor: use REPO_NAMES in phase9_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
2ba32d4bc8 refactor: use REPO_NAMES in phase9_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
6d4c34eb8a refactor: use REPO_NAMES in phase9_security.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
077ab55018 refactor: use REPO_NAMES in phase8_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
d25a2075d4 refactor: use REPO_NAMES in phase8_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
71025f21fb refactor: use REPO_NAMES in phase8_cutover.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
2903dffc5a refactor: use REPO_NAMES in phase7_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
922f3b6dd2 refactor: use REPO_NAMES in phase7_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
e511947267 refactor: use REPO_NAMES in phase7_branch_protection.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
ce77fab000 refactor: use REPO_NAMES in phase6_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
b0a3b07f0b refactor: use REPO_NAMES in phase6_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
971580630d refactor: use REPO_NAMES in phase6_github_mirrors.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
9aaf7b13d1 refactor: use REPO_NAMES in phase5_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
2fca8300a1 refactor: use REPO_NAMES in phase5_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
9cccd5196d refactor: use REPO_NAMES in phase5_migrate_pipelines.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
49268a4674 refactor: use REPO_NAMES in phase4_teardown.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
60686d681e refactor: use REPO_NAMES in phase4_post_check.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
8aad4299ca refactor: use REPO_NAMES in phase4_migrate_repos.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:45 -05:00
S
46881bd8fa feat: replace REPO_1/2/3_NAME with space-delimited REPO_NAMES in .env.example
Supports any number of repos instead of hardcoded 3.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:05:10 -05:00
S
87fefe28a1 feat: add get_repo_list() and replace REPO_N_NAME with REPO_NAMES in validation
- Add get_repo_list() helper to split space-delimited REPO_NAMES
- Replace REPO_1_NAME/REPO_2_NAME/REPO_3_NAME with single REPO_NAMES in
  _ENV_VAR_NAMES and _ENV_VAR_TYPES validation arrays

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:04:57 -05:00
S
4895d24a2d docs: update PLAN.md for single GitHub token
Replace GITHUB_MIRROR_TOKEN references with GITHUB_TOKEN.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:03:18 -05:00
S
93355ee143 docs: update USAGE_GUIDE.md for single GitHub token
Consolidated two tokens into one GITHUB_TOKEN with repo scope.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:02:35 -05:00
S
017ab098f1 fix: remove GITEA_INSTANCE_NAME from phase2 require_vars
Phase 2 (backup instance) does not use GITEA_INSTANCE_NAME.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:02:01 -05:00
S
e9c165e350 fix: update configure_env.sh versions, descriptions, consolidate tokens
- GITEA_VERSION default 1.23 → 1.25, ACT_RUNNER_VERSION 0.2.11 → 0.3.0
- GITHUB_TOKEN description: "repo read" → "repo scope (read+write)"
- BACKUP_STORAGE_PATH description: "Absolute path on Fedora for backup archives"
- Remove GITHUB MIRROR section, move GITHUB_MIRROR_INTERVAL to REPOSITORIES
- TOTAL_PROMPTS 57 → 56

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:01:47 -05:00