Contributions to the CI/CD environment are welcome — whether you’re fixing a bug, adding a new service, improving documentation, or enhancing the Jenkins pipeline configuration. This guide explains how to report issues, set up a development environment, follow the project’s code style, and submit a pull request.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/infra-neo/CICD/llms.txt
Use this file to discover all available pages before exploring further.
Reporting Issues
Before opening a new issue, search the existing tracker to avoid duplicates. When creating an issue, include:- A clear description of the problem
- Steps to reproduce the issue
- Expected vs. actual behavior
- Your OS and Docker version (
docker --version,docker compose version) - Any relevant log output from
docker compose logs <service-name>
Setting Up a Development Environment
Create a feature branch
feature/add-harbor-registry or fix/sonarqube-health-check).Making Changes
Keep contributions focused and testable:- Always run
./validate.shbefore submitting — it checks that all containers are running, services are reachable, volumes exist, and configuration files are valid. - Update relevant documentation — if your change affects behaviour described in
README.md,QUICKSTART.md,CONFIGURATION.md, orTROUBLESHOOTING.md, update those files too. - Keep changes simple and focused — avoid bundling unrelated fixes in a single pull request.
Adding a New Service
Add the service to docker-compose.yml
Follow the existing service definitions. Every service must declare a
container_name, image, restart policy, ports, volumes, and networks:Update setup.sh to wait for the new service
Add a readiness check that polls the service’s health endpoint before the script exits, matching the pattern used for the existing services.
Update validate.sh to health-check the new service
Add a
test_result call in validate.sh that verifies the container is running and the service is reachable from the host, following the existing test functions.Adding Jenkins Plugins
Editjenkins/init.groovy.d/02-install-plugins.groovy and add the plugin ID to the list:
Adding Jenkins Configuration
Create a new numbered Groovy script injenkins/init.groovy.d/. Scripts are executed in lexicographic order, so choose a prefix that places your script after any dependencies:
Code Style
- Shell Scripts
- Groovy
- YAML
- Always include
set -eat the top - Use meaningful variable names in
UPPER_SNAKE_CASE - Extract repeated logic into functions
- Comment any non-obvious behaviour
Testing Checklist
Before submitting a pull request, work through the following checks:Full PR testing checklist
Full PR testing checklist
- All services start successfully (
docker compose up -d) - All services are accessible (Jenkins, SonarQube, Nexus, WildFly, JBoss)
- The example project builds without errors (
cd examples/webapp-sample && mvn clean install) - A pipeline runs to completion in Jenkins
-
./validate.shpasses with zero failures - No unexpected errors appear in
docker compose logs - All relevant documentation files are updated
Commit Message Guidelines
Write commit messages that explain what changed and why, not just what files were touched.Contribution Areas
Not sure where to start? Here are some ideas grouped by difficulty:| Difficulty | Examples |
|---|---|
| Easy | Fix typos in documentation, improve error messages in scripts, add FAQ entries to TROUBLESHOOTING.md, enhance example projects |
| Medium | Add Jenkins plugins to the init script, improve Groovy configuration scripts, add health checks, create additional backup/restore scripts |
| Advanced | Add new services (e.g. GitLab, Harbor), implement HTTPS/TLS, add clustering support, create Kubernetes manifests |
By contributing, you agree that your contributions will be licensed under the same license as the project.
