* Fix workflow for autogenerating docs (#592) * Use grep -c flag in check for changes step to fix case when more than 1 website file was modified * Implemented validation logic for the webhook - Created a single Validate() function to validate both updating and creating Jenkins CR. - Implemented the Validate function to fetch warnings from the API and do security check if being enabled. - Updated the helm charts and helm-e2e target to run the helm tests. * Configure bot for labelling new issues as needing triage (#597) * Configure bot for managing stale issues (#598) * Docs: explanation what is backed up and why (#599) * Explanation what's backed up and why * Auto-updated docs (#600) Co-authored-by: prryb <prryb@users.noreply.github.com> * Docs: clarification of description of get latest command in backup (#601) * Auto-updated docs (#602) Co-authored-by: Sig00rd <Sig00rd@users.noreply.github.com> * Bump seedjobs agent image version to 4.9-1 (#604) * Add GitLFS pull after checkout behaviour to SeedJob GroovyScript Template (#483) Add GitLFS pull after checkout behaviour to support also repositories which are relying on Git LFS Close #482 * Docs: minor fixes (#608) * Link to project's DockerHub in README's section on nightly builds, add paragraph about nightly builds in installation docs * Fix repositoryURL in sample seedJob configuration with SSH auth * Slightly expand on #348 * Fix formatting in docs on Jenkins' customization, update plugin versions * Add notes on Jenkins home Volume in Helm chart values.yaml and docs (#589) * Auto-updated docs (#610) Co-authored-by: Sig00rd <Sig00rd@users.noreply.github.com> * Reimplemented the validation logic with caching the security warnings - Reimplemented the validator interface - Updated manifests to allocate more resources * Add an issue template for documentation (#613) * Docs: add info on restricted volumeMounts other than jenkins-home(#612) * Update note in installation docs * Update Helm chart default values.yaml * Update schema * Auto-updated docs (#616) Co-authored-by: Sig00rd <Sig00rd@users.noreply.github.com> * Auto-updated docs (#617) Co-authored-by: Sig00rd <Sig00rd@users.noreply.github.com> * Updated Validation logic - Defined a security manager struct to cache all the plugin data - Added flag to make validating security warnings optional while deploying the operator * Helm Chart: Remove empty priorityClassName from Jenkins template (#618) Also bump Helm Chart version to v0.5.2 * Added unit test cases for webhook * Updated Helm Charts - Optimized the charts - Made the webhook optional - Added cert manager as dependency to be installed while running webhook * Updated unit tests, helm charts and validation logic * Completed helm e2e tests and updated helm charts - Completed helm tests for various scenarios - Disabled startupapi check for cert manager webhook, defined a secret and updated templates - Made the webhook completely optional * Code optimization and cleanup * Modified helm tests * code cleanup and optimization |
||
|---|---|---|
| .devbots | ||
| .github | ||
| api/v1alpha2 | ||
| assets | ||
| backup/pvc | ||
| chart | ||
| cicd | ||
| config | ||
| controllers | ||
| deploy | ||
| docs | ||
| hack | ||
| internal | ||
| pkg | ||
| test | ||
| version | ||
| webhook | ||
| website | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yml | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| LICENSE.md | ||
| Makefile | ||
| PROJECT | ||
| README.md | ||
| ROADMAP.md | ||
| SECURITY.md | ||
| SUPPORT.md | ||
| VERSION.txt | ||
| checkmake.ini | ||
| config.base.env | ||
| config.crc.env | ||
| config.minikube.env | ||
| config.openshift.env | ||
| gen-crd-api-config.json | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| variables.mk | ||
README.md
Jenkins Operator
What's the Jenkins Operator?
The Jenkins Operator is a Kubernetes Native Operator which manages operations for Jenkins on Kubernetes. It has been built with Immutability and declarative Configuration as Code in mind.
Preliminaries
Considering that this Operator is created for managing instances for Jenkins, it is important to understand what
- Jenkins Pipelines and
- CasC (Configuration as Code) are.
Jenkins Pipelines use Scripts written in Groovy which aid in the CasC aspect of Jenkins.
Jenkins uses plugins like CasC to extend it's solution space by carrying out Jobs of different kinds and providing a composable infrastructure for your CI/CD.
Out of the box it provides:
- Integration with Kubernetes (Jenkins kubernetes-plugin)
- Pipelines as Code (Jenkins pipelines)
- Extensibility via Groovy Scripts (similar to Jenkins script console) or (configuration as code plugin)
- Secure Defaults and Hardening (see the security section of the documentation)
Problem statement and goals
The main reason why we decided to implement the Jenkins Operator is the fact that we faced a lot of problems with standard Jenkins deployment. We want to make Jenkins more robust, suitable for dynamic and multi-tenant environments.
Some of the problems we want to solve:
- installing plugins with incompatible versions or security vulnerabilities
- better configuration as code
- security and hardening out of the box
- make errors more visible for end users
- orphaned jobs with no JNLP connection
- handle graceful shutdown properly
- proper end to end tests for Jenkins lifecycle
Documentation
Go to our documentation website for more information.
Selected content:
- How it works
- Getting Started
- Security
- Troubleshooting
- Developer Guide
- FAQ
- Jenkins Custom Resource Definition Schema
Common Issues and Workarounds
- Multibranch Pipelines and Backup Issues: https://github.com/jenkinsci/kubernetes-operator/issues/104#issuecomment-554289768
Community
Main channel of communication on topics related to Jenkins Operator is Jenkins Operator Category on Jenkins Community Discourse.
Here you can ask questions about the project, discuss best practices on using it, and talk to other users of the Operator, contributors and project's maintainers.
We also have a dedicated channel called #jenkins-operator on virtuslab-oss.slack.com.
Fill out (Invite form) and come say hi!
Snapshots between releases
We are trying our best to resolve issues quickly, but they have to wait to be released. If you can't wait for an official docker image release and acknowledge the risk, you can use our unofficial images, which are built nightly.
You can find the project's Docker Hub repository here.
Look for the images with tag "{git-hash}", where {git-hash} is the hash of the master commit that interests you.
Contribution
Feel free to file issues or pull requests, but please consult CONTRIBUTING document beforehand.
Before any big pull request please consult the maintainers to ensure a common direction.
Presentations
About the authors
This project was originally developed by VirtusLab and the following CONTRIBUTORS.
