blissful-infra jenkins
blissful-infra jenkins manages the shared Jenkins CI/CD server and your project pipelines. Jenkins is a shared service — one instance runs on your machine and all your blissful-infra projects register jobs with it.
Subcommands
Section titled “Subcommands”| Subcommand | Description |
|---|---|
jenkins start | Start the Jenkins server |
jenkins stop | Stop the Jenkins server |
jenkins status | Show Jenkins server status and running jobs |
jenkins add-project <name> | Register a project with Jenkins |
jenkins build <name> | Trigger a pipeline build for a project |
jenkins list | List all registered projects and their build status |
jenkins start
Section titled “jenkins start”blissful-infra jenkins start [--build] [--reset]Starts the Jenkins server if it is not already running.
Jenkins is a custom Docker image (blissful-jenkins:latest) built with all required plugins pre-installed. On first run the image is built automatically — this takes about 2 minutes and only happens once. Subsequent starts take a few seconds.
Jenkins data (jobs, build history, configuration) is persisted in ~/.blissful-infra/jenkins/ so it survives restarts.
Options
Section titled “Options”| Flag | Description |
|---|---|
--build | Force a rebuild of the Jenkins Docker image. Use this after plugin updates. |
--reset | Wipe the Jenkins Docker volumes and rebuild from scratch. Deletes all job history. |
What starts
Section titled “What starts”- Jenkins at
http://localhost:8081(admin/admin) - Docker registry at
localhost:5050— a local image registry for CI-built images
Jenkins is configured via JCasC (Jenkins Configuration as Code) so there is no manual setup wizard. All plugins, security settings, and the blissful-projects folder are provisioned automatically.
Waiting for readiness
Section titled “Waiting for readiness”The CLI waits up to 120 seconds for Jenkins to respond at /login before returning. If Jenkins does not become ready in time, the command fails with an error suggesting you check docker logs blissful-jenkins.
jenkins stop
Section titled “jenkins stop”blissful-infra jenkins stopStops the Jenkins containers with docker compose down. Data is preserved in the Docker volumes — the next jenkins start will restore the previous state.
jenkins status
Section titled “jenkins status”blissful-infra jenkins statusPrints whether Jenkins is running and, if so, the URL and credentials. Also checks whether the Docker registry container is up.
jenkins add-project
Section titled “jenkins add-project”blissful-infra jenkins add-project <name>Registers an existing blissful-infra project with Jenkins by creating a pipeline job.
Prerequisites
Section titled “Prerequisites”- Jenkins must be running (
blissful-infra jenkins startorblissful-infra dashboard) - The project directory must exist in the current working directory with a
blissful-infra.yaml - The project must have a
Jenkinsfileat eitherJenkinsfile(root) orbackend/Jenkinsfile
The Spring Boot template generates backend/Jenkinsfile automatically when you run blissful-infra start. If you used a different backend template, check whether it includes a Jenkinsfile.
What it does
Section titled “What it does”- Reads the Jenkinsfile location (
Jenkinsfileorbackend/Jenkinsfile) - Generates a Jenkins pipeline job XML that points to your project directory as the SCM source (using the local filesystem path as a Git remote — Jenkins polls the local repo)
- POSTs the job XML to
http://localhost:8081/job/blissful-projects/createItem?name=<name>with CSRF crumb injection - Falls back to the Jenkins root if the
blissful-projectsfolder does not exist
After registration, the job is visible at:
http://localhost:8081/job/blissful-projects/job/<name>
blissful-infra startcallsadd-projectautomatically after booting the stack. You only need to call it manually if start skipped it (e.g. Jenkins was down at the time) or if you created the project withblissful-infra create.- The job is idempotent — running
add-projectfor an already-registered project is a no-op.
jenkins build
Section titled “jenkins build”blissful-infra jenkins build <name>Triggers a new pipeline build for the named project. Equivalent to clicking “Build Now” in the Jenkins UI.
The CLI posts to http://localhost:8081/job/blissful-projects/job/<name>/build with a CSRF crumb. It does not wait for the build to complete — use blissful-infra pipeline <name> or open the Jenkins UI to monitor progress.
jenkins list
Section titled “jenkins list”blissful-infra jenkins listLists all jobs registered with Jenkins, their current status (success, failed, building, not built), and the timestamp of the last build.
Example output:
Name Status Last Build───────────────────────────────────────────────────────my-app success #3 (3/25/2026, 10:14:22 AM)fraud-detector failed #1 (3/24/2026, 4:02:11 PM)content-recommender not built -The Jenkinsfile
Section titled “The Jenkinsfile”Every Spring Boot project generated by blissful-infra includes a backend/Jenkinsfile. The pipeline stages are:
- Checkout — fetches the source from the local path configured in the job
- Build — runs
./gradlew buildinside the backend directory - Test — runs
./gradlew testand publishes JUnit results - Docker build — builds the backend Docker image and tags it with the build number
- Push — pushes the image to the local registry at
localhost:5050
The pipeline uses Docker-in-Docker so the Gradle build runs in an isolated container and the resulting image is pushed to your local registry.
Jenkins credentials reference
Section titled “Jenkins credentials reference”| Field | Value |
|---|---|
| URL | http://localhost:8081 |
| Username | admin |
| Password | admin |
| Registry | localhost:5050 |
| Data directory | ~/.blissful-infra/jenkins/ |