This GitHub repository contains Dockerfiles for running a set of Continuous Integration Tools with a single command. The diagram contains all tools used in the Docker containers.
A fast and friendly git client for Mac and Windows. Download Fork for Mac. OS X 10.11+ Free. Download Fork for Windows. Windows 7+ Free. Open recent repositories quickly. Tabs allow you to quickly navigate to your repositories and organize your workflow efficiently. Open the repository website in browser. Now, you have to set up GitLab CI service and connect your Mac server to GitLab portal. If this program is rather new for you, learn more about it here. It does not matter if you use GitLab for corporate accounts or personal use, the following steps will do for both.
Blog article on the CI Docker Container, https://blog.codecentric.de/en/2015/10/continuous-integration-platform-using-docker-container-jenkins-sonarqube-nexus-gitlab
I use this repository for workshops. This is not production ready.For production I use a configuration management tool like Ansible to provision all docker containers and store passwords and keys in ansible vault.See https://www.slideshare.net/MarcelBirkner/continuous-delivery-in-enterprise-environments-using-docker-ansible-and-jenkins
You can watch a short video that shows most features of this demo, without having to install docker.
With Docker Toolbox (incl. VirtualBox)
see README-LEGACY.md
With Docker Mac Native
If you want to use new Docker Mac Native implementation without VirtualBox and Docker Toolbox, follow these steps:
Step 0 - Install Docker Mac Native
Install Docker Mac Native (https://docs.docker.com/docker-for-mac/)[https://docs.docker.com/docker-for-mac/] and if you had Toolbox before, make sure to follow these steps here https://docs.docker.com/docker-for-mac/docker-toolbox/
or install via brew update & brew cask install docker --force .
If everything went fine, docker --version should give something like this (or a higher version number):
If there´s also docker-machine on your machine, don´t forget to do the mentioned steps here to remove it.
Step 1 - Create needed osxfs mountpoints
Create folders (see Issue 26)
Create a folder in the root directory '/' (Macintosh HD) and name it as opt
Procedure:
- First $ cd / into the root directory '/'
- Second $ sudo mkdir /opt
Then create the sub folders jenkins, postgres, gitlab in the 'opt' folder.
- /opt/jenkins via sudo mkdir /opt/jenkins
- /opt/postgres via sudo mkdir /opt/postgres
- /opt/gitlab via sudo mkdir /opt/gitlab
Change the owning user to your account, e.g. via sudo chown yourUserName gitlab/
Then configure these folders in Docker / Preferences / File Sharing:
Step 2 - Configure correct path to docker binary
Clone Repository

To get all docker containers up and running, in docker-ci-tool-stack use:
Automatically
Please run docker-compose.yml.native-docker-fix.sh before executing docker-compose up.This will fix the Docker binary PATH, see Issue 24.This script patches the docker-compose.yml.
Manually
Please alter Line 23 in docker-compose.yml under jenkins / volumes from
- /usr/local/bin/docker:/usr/bin/docker
Snippet Tool For Mac
to
Screenshot Tool For Mac

- /usr/bin/docker:/usr/bin/docker
This is because '/usr/bin/docker' is the docker binary, see Issue 24.
You have start the selenium grid with a separate command, since the selenium container arenot part of the default docker-compose.yml.
Access Tools
With docker machine
| Tool | Link | Credentials |
|---|---|---|
| Jenkins | http://${docker-machine ip default}:18080/ | no login required |
| SonarQube | http://${docker-machine ip default}:19000/ | admin/admin |
| Nexus | http://${docker-machine ip default}:18081/nexus | admin/admin123 |
| GitLab | http://${docker-machine ip default}/ | root/5iveL!fe |
| Selenium Grid | http://${docker-machine ip default}:4444/grid/console | no login required |
| Conference App | http://${docker-machine ip default}:48080/currentSessions | no login required |
With Docker Mac Native
| Tool | Link | Credentials |
|---|---|---|
| Jenkins | http://localhost:18080/ | no login required |
| SonarQube | http://localhost:19000/ | admin/admin |
| Nexus | http://localhost:18081/ | admin/admin123 |
| GitLab | http://localhost | root/5iveL!fe |
| Selenium Grid | http://localhost:4444/grid/console | no login required |
| Conference App | http://localhost:48080/currentSessions | no login required |
Screenshots
Here is an overview of all tools:
- GitLab is used for storing the Source Code
- Jenkins contains build job and is triggered once projects in GitLab are updated
- As part of the CI build, Jenkins triggers a static code analysis and the results are stored in SonarQube
- The Maven build uses Nexus as a Proxy Repository for all 3rd party libs. The build artifacts are deployed to the Nexus Release Repository
- The Selenium Grid contains Docker containers running Chrome and Firefox and is used for UI tests
Jenkins Jobs
There are several jobs preconfigured in Jenkins.The Jobs cover the following tasks:
- Continuous Integration Build with Maven
- Unit Tests
- Static Source Analysis results are stored in SonarQube
- JaCoCo Test Coverage
- Deployment to Nexus
- Jenkins Job DSL examples
- Selenium UI Test
SonarQube Dashboard
Nexus Repository
Selenium Grid
Testing Upgrades
In order to test new versions, I prefer starting out with a blank VirtualBox image.That eliminates any side effects. Afterwards you can throw away the image.
Older releases are available and the Git source repository is on GitHub.
Latest source Release
2.23.0 Release Notes (2019-08-16)GUI Clients
Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific experience.
Logos
Various Git logos in PNG (bitmap) and EPS (vector) formats are available for use in online and print projects.
Git via Git
Gitlab Tutorial
If you already have Git installed, you can get the latest development version via Git itself:
Chrome Cleanup Tool For Mac
git clone https://github.com/git/git Adware Removal Tool For Mac
You can also always browse the current contents of the git repository using the web interface.