Jenkins Configuration as Code, JCasC, Job DSL, Pipeline, Shared library
Branch: master
Clone or download
Latest commit 0c83b37 Feb 9, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Fresh start Feb 10, 2019
gitlab-docker Fresh start Feb 10, 2019
jenkins-docker
jobs Fresh start Feb 10, 2019
src/se/bjurr/jenkinssandbox Fresh start Feb 10, 2019
vars Fresh start Feb 10, 2019
.gitignore Fresh start Feb 10, 2019
LICENSE Fresh start Feb 10, 2019
README.md Fresh start Feb 10, 2019
build-and-run-gitlab.sh Fresh start Feb 10, 2019
build-and-run-jenkins.sh Fresh start Feb 10, 2019
docker-clean.sh Fresh start Feb 10, 2019
docker-stop.sh Fresh start Feb 10, 2019
setup-gitlab.sh Fresh start Feb 10, 2019

README.md

Jenkins Configuration as Code Sandbox

This is an example of Jenkins Configuration as Code with GitLab.

This is a fully working CI/CD setup with Jenkins and GitLab where everything is put under version control:

This allows for you to:

  • Do local development of the CI/CD setup. Giving self confidence to do refactorings and keep all the scripts clean.
  • Allow code review of changes to the installation. Enable anyone to contribute to an innovative build CI/CD process.
  • Manage different installations in different branches. Push to the branch of installation X and X will automatically be re-configured.

It also demonstrates a pattern where a "contract" is established between application repositories and the infrastructure. A jenkins-settings.json-file is created in the application repositories to tweak the build process. This means:

  • The pipeline code can be developed generically. Pipelines are not created to take care of a specific repo. Generic features are created, and documented, and the application developers chooses what features that should apply to thir repo. By editing /jenkins-settings.json in their repo. A default set of settings are derived and applied if no properties found in the repo.
  • The solution becomes scalable and can handle a vast amount of application repositories. With low effort needed for support.

Usage

1. Start GitLab

Start GitLab and keep it running in one terminal:

./build-and-run-gitlab.sh

GitLab now available at http://localhost/ and you can login with credentials found here.

2. Setup GitLab

This script will import some projects into Gitlab and create a personal access token to use in Jenkins.

./setup-gitlab.sh

3. Start Jenkins

./build-and-run-jenkins.sh

Jenkins now available on: http://localhost:8080/

JobDSL docs available at: http://localhost:8080/plugin/job-dsl/api-viewer/index.html