The benefits of Continuous Integration (CI), Continuous Delivery and -Deployment (CDs) are huge when automation plays an integral part of your workflow.
The benefits of Continuous Integration (CI), Continuous Delivery/Deployment (CD) are huge when automation plays an integral part of your workflow.
Each Git commit or push can trigger a CI/CDs pipeline, if you add a [.gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/README.html) file to the root directory of your repository and configure your GitLab project to use a [GitLab Runner](https://docs.gitlab.com/runner/).
Each Git commit or push can trigger a CI/CD pipeline, if you add a [.gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/README.html) file to the root directory of your repository and configure your GitLab project to use a [GitLab Runner](https://docs.gitlab.com/runner/).
This wiki page is about GitLab CI/CDs on the concrete example of this project showing all scripts and details you need, but requires a reasonable understanding of version control with [Git](https://git-scm.com/doc).
This wiki page is about GitLab CI/CD on the concrete example of this project showing all scripts and details you need, but requires a reasonable understanding of version control with [Git](https://git-scm.com/doc).
|**Note:** This wiki is **not** intended to be a general discussion on GitLab CI/CDs, **but** explains the use of GitLab CI/CDs on a concrete example, which is this toy project.|
|**Note:** This wiki is **not** intended to be a general discussion on GitLab CI/CD, **but** explains the use of GitLab CI/CD on a concrete example, which is this toy project.|
*[GitLab Continuous Integration (GitLab CI/CDs) > Getting started with GitLab CI/CDs](https://docs.gitlab.com/ee/ci/quick_start/README.html)
*[GitLab Continuous Integration (GitLab CI/CD) > Getting started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/README.html)
*[Demo: CI/CDs with GitLab in action](https://about.gitlab.com/2017/03/13/ci-cd-demo/)
*[Demo: CI/CD with GitLab in action](https://about.gitlab.com/2017/03/13/ci-cd-demo/)
* ....
* ....
Anyway, we will introduce a few keywords and concepts in the beginning, which are required to understand the intention of the scripts and settings of our example.
Anyway, we will introduce a few keywords and concepts in the beginning, which are required to understand the intention of the scripts and settings of our example.
...
@@ -29,7 +29,7 @@ That way you can prevent bugs not only in your software, but in the deployment p
...
@@ -29,7 +29,7 @@ That way you can prevent bugs not only in your software, but in the deployment p
The process from code development to shipping the software can be defined in a workflow with the major parts of
The process from code development to shipping the software can be defined in a workflow with the major parts of
***Continuous Integration (CI) pipeline**
***Continuous Integration (CI) pipeline**
***Continuous Delivery and -Deployment (CDs) pipeline**.
How to use Git to accomplish this work in a consistent and productive manner can be described by a [Git Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows). It encourage users to leverage Git effectively and consistently.
How to use Git to accomplish this work in a consistent and productive manner can be described by a [Git Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows). It encourage users to leverage Git effectively and consistently.
...
@@ -76,10 +76,10 @@ Actually, you do not want to think about it at all and get these checks done ful
...
@@ -76,10 +76,10 @@ Actually, you do not want to think about it at all and get these checks done ful
## GitLab Runner
## GitLab Runner
[GitLab Runners](https://docs.gitlab.com/runner/) are used to run all your checks and even more. It will do what you tell it to do in the [projects .gitlab-ci.yml](https://gitlab.version.fz-juelich.de/vis/jusense-cicd/blob/master/.gitlab-ci.yml) file.
[GitLab Runners](https://docs.gitlab.com/runner/) are used to run all your checks and even more. It will do what you tell it to do in the [projects .gitlab-ci.yml](https://gitlab.version.fz-juelich.de/vis/jusense-cicd/blob/master/.gitlab-ci.yml) file.
A GitLab runner is a program, which runs on a certain machine waiting for a CI/CDs Pipeline to execute. A project can connect to multiple GitLab Runners on different machines to run the CI/CDs Pipeline. It only has to know the runner´s URL and its token to connect and authorize.
A GitLab runner is a program, which runs on a certain machine waiting for a CI/CD Pipeline to execute. A project can connect to multiple GitLab Runners on different machines to run the CI/CD Pipeline. It only has to know the runner´s URL and its token to connect and authorize.
You can also setup a Docker image, which is started by your GitLab Runner for each run of your CI/CDs Pipeline.
You can also setup a Docker image, which is started by your GitLab Runner for each run of your CI/CD Pipeline.
In this project we make use of this Docker support inside the GitLab Runner. This way we ensure to have an always working environment to run the CI/CDs Pipeline of the project with all the needed tools installed.
In this project we make use of this Docker support inside the GitLab Runner. This way we ensure to have an always working environment to run the CI/CD Pipeline of the project with all the needed tools installed.
| **Note:** Check the Dockerfile of this project [HERE](https://gitlab.version.fz-juelich.de/vis/jusense-cicd/blob/master/ci/env-testing/ci_docker_centos7/Dockerfile).
| **Note:** Check the Dockerfile of this project [HERE](https://gitlab.version.fz-juelich.de/vis/jusense-cicd/blob/master/ci/env-testing/ci_docker_centos7/Dockerfile).
# Continuous Delivery and -Deployment (CDs) Pipeline
# Continuous Delivery/Deployment (CD) Pipeline
| **Note:** GitLab's Continuous Delivery and -Deloyment (CDs) Pipeline can do any automatic delivery and deployment for you defined in [.gitlab-ci.yml.](https://docs.gitlab.com/ee/ci/yaml/README.html).
| **Note:** GitLab's Continuous Delivery/Deloyment (CD) Pipeline can do any delivery or even automatic deployment for you defined in [.gitlab-ci.yml.](https://docs.gitlab.com/ee/ci/yaml/README.html).