Use an isolated network per Gitea Actions job #694
Merged
raucao
merged 1 commits from 2026-11-03 16:48:05 +00:00
fix/gitea-actions-network into chore/cinc
No Reviewers
Labels
Clear labels
monitoring
bug
design
dev environment
docs
duplicate
enhancement
feature
good first issue
idea
invalid
kredits-1
kredits-2
kredits-3
on hold
ops
question
security
ui/ux
wontfix
Infrastructure metrics, alerts, notifications, etc.
service
discourse
Kosmos Community Forums
service
accounts
Kosmos Accounts
service
drone-ci
Kosmos Drone CI
service
email
mail.kosmos.org
service
garage
S3-compatible object storage
service
gitea
Kosmos Gitea
service
ipfs
Kosmos IPFS
service
lightning
Lightning address, lndhub, etc.
service
mastodon
kosmos.social
service
nostr
Relays, Blossom server, etc.
service
postgres
Database cluster
service
remotestorage
Portable data storage for the Web
service
wiki
Kosmos Wiki
service
xmpp
Kosmos Chat
Something is not working
Graphic/visual design
Config, builds, CI, deployment, etc.
Documentation
This issue or pull request already exists
Improving existing functionality
New functionality
Dive in, and start contributing
Something to consider
Not a bug
Small contribution
Medium contribution
Large contribution
Currently not actionable
Manual IT ops activities
Looking for an answer
All your base are belong to us
User interface, process design, etc.
This won't be fixed
release
major
release
minor
release
patch
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: kosmos/chef#694
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Job containers were pinned to a single shared
gitea-actionsbridge network, added with the Actions cache to give service containers DNS resolution and a fixed gateway (172.20.0.1) for the built-in cache server. Because every job of every run attached to that one network, concurrent jobs' service containers collided on hostnames: two simultaneous jobs that both expose aredisservice meant either could resolve the other's container, producing intermittent cross-job CI failures that disappeared when runs did not overlap.This sets
container.networkback to empty so the runner auto-creates an isolated user-defined network per job. Embedded DNS still works on each per-job network, so service containers remain reachable by name, but jobs can no longer resolve each other's containers.cache.hostis left empty for auto-detection. The runner is a host binary (systemd), not containerized, so the detected address is reachable from job containers and the cache port stays fixed per runner. The cache firewall rule now allows Docker's default address pool (172.16.0.0/12) because per-job subnets are dynamic, and the now-unusedgitea-actionsnetwork is removed on converge once idle.Converged and verified on gitea-2: all three runner configs use an empty network/host, the
gitea-actionsnetwork was removed, and the firewall shows172.16.0.0/12. Still to validate with real jobs: two overlapping jobs that both use aredisservice, andactions/cache(if a job logsgetCacheEntry failed: connect ETIMEDOUT, setcache.hostexplicitly to the host's reachable IP).