docs(ci): warn against redeploying an old controller app from the agent compose

ci/jenkins/docker-compose.yml used to define the Jenkins controller and now
defines only the agent. Redeploying an application that was set up from the
old file would replace the controller with an agent. Say so in the file, and
add an upgrade path to the README: move the controller to its own service on
the same data volume first, then deploy the agent as a new application.
This commit is contained in:
Alexa
2026-10-25 11:47:49 +02:00
parent 19402459a9
commit 29aca0e88c
2 changed files with 25 additions and 0 deletions
+19
View File
@@ -74,6 +74,25 @@ Jenkins runs as a Coolify service from a Compose file:
- **Run no builds on it:** **Manage Jenkins → Nodes → Built-In Node → - **Run no builds on it:** **Manage Jenkins → Nodes → Built-In Node →
Configure**, set **Number of executors** to `0`. Configure**, set **Number of executors** to `0`.
#### Upgrading from the old setup
`ci/jenkins/docker-compose.yml` used to define the Jenkins **controller**
(its `jenkins` service, built from `ci/jenkins/Dockerfile`, with the
`jenkins_home` volume). It now defines only the build agent. If your Jenkins
was deployed from that file, **don't redeploy that application** from this
version: it would replace the controller with an agent, and Jenkins stops
until you rebuild it. The data volume survives, but nothing serves it.
Instead:
1. Create a new service for the controller as above, on the stock Java 25
image, mounting the **same** data volume: reference the old volume by its
full name and mark it `external: true`, or Jenkins starts empty.
2. Stop the old application, start the new service, and check that your jobs
and credentials are there.
3. Deploy the agent (step 3) as a **new** application, then delete the old
one without deleting its volume.
### 2. The agent node ### 2. The agent node
**Manage Jenkins → Nodes → New Node**, a permanent agent: **Manage Jenkins → Nodes → New Node**, a permanent agent:
+6
View File
@@ -3,6 +3,12 @@
# /docker-compose.yml and "Connect to predefined network" on. It needs no domain: it dials out to # /docker-compose.yml and "Connect to predefined network" on. It needs no domain: it dials out to
# Jenkins over WebSocket on Docker's internal network. Set the variables in # Jenkins over WebSocket on Docker's internal network. Set the variables in
# the resource's Environment Variables; see ci/jenkins/README.md. # the resource's Environment Variables; see ci/jenkins/README.md.
#
# This file used to define the Jenkins controller itself. If your Jenkins was
# deployed from it, don't redeploy that application from this version: it
# would replace the controller with an agent. Move the controller to its own
# service first and deploy this as a NEW application (README: "Upgrading from
# the old setup").
services: services:
agent: agent:
build: build: