GitLab Continuous Integration (GitLab CI)
The benefits of Continuous Integration are huge when automation plays an integral part of your workflow. GitLab comes with built-in Continuous Integration, Continuous Deployment, and Continuous Delivery support to build, test, and deploy your application.
Here's some info we've gathered to get you started.
Getting started
The first steps towards your GitLab CI journey.
- Getting started with GitLab CI
- Pipelines and jobs
- Configure a Runner, the application that runs your jobs
- Articles:
- Videos:
- Third-party videos:
Reference guides
Once you get familiar with the getting started guides, you'll find yourself digging into specific reference guides.
-
.gitlab-ci.yml
reference - Learn all about the ins and outs of.gitlab-ci.yml
definitions -
CI Variables - Learn how to use variables defined in
your
.gitlab-ci.yml
or secured ones defined in your project's settings - The permissions model - Learn about the access levels a user can have for performing certain CI actions
Auto DevOps
GitLab CI + Docker
Leverage the power of Docker to run your CI pipelines.
- Use Docker images with GitLab Runner
- Use CI to build Docker images
- CI services (linked Docker containers)
- Articles:
Advanced use
Once you get familiar with the basics of GitLab CI, it's time to dive in and learn how to leverage its potential even more.
- Environments and deployments - Separate your jobs into environments and use them for different purposes like testing, building and deploying
- Job artifacts
- Git submodules - How to run your CI jobs when Git submodules are involved
- Auto deploy
- Use SSH keys in your build environment and status of each CI environment running on Kubernetes
- Trigger pipelines through the GitLab API
- Trigger pipelines on a schedule
- Deploy Boards - Check the current health
- Kubernetes clusters - Integrate one or more Kubernetes clusters to your project
Review Apps
GitLab CI for GitLab Pages
See the topic on GitLab Pages.
Special configuration
You can change the default behavior of GitLab CI in your whole GitLab instance as well as in each project.
- Project specific
- Affecting the whole GitLab instance
Examples
Note: A collection of
.gitlab-ci.yml
files is maintained at the GitLab CI Yml project. If your favorite programming language or framework is missing we would love your help by sending a merge request with a.gitlab-ci.yml
.
Here is an collection of tutorials and guides on setting up your CI pipeline.
- GitLab CI examples for the following languages and frameworks:
-
Articles
- How to test and deploy Laravel/PHP applications with GitLab CI/CD and Envoy
- How to deploy Maven projects to Artifactory with GitLab CI/CD
- Automated Debian packaging
- Spring boot application with GitLab CI and Kubernetes
- Setting up GitLab CI for iOS projects
- Setting up GitLab CI for Android projects
- Building a new GitLab Docs site with Nanoc, GitLab CI, and GitLab Pages
- CI/CD with GitLab in action
- Building an Elixir Release into a Docker image using GitLab CI
- Miscellaneous
Integrations
- Articles:
Why GitLab CI?
- Articles:
Breaking changes
- CI variables renaming for GitLab 9.0 Read about the deprecated CI variables and what you should use for GitLab 9.0+.
- New CI job permissions model Read about what changed in GitLab 8.12 and how that affects your jobs. There's a new way to access your Git submodules and LFS objects in jobs.