Jenkins je mocný, ale pro menší projekty je to kanón na vrabce. GitLab CI je součástí GitLabu — CI/CD pipeline definovaný v .gitlab-ci.yml přímo v repozitáři. Žádný externí server, žádná Jenkins administrace.
.gitlab-ci.yml¶
stages:
- build
- test
- deploy
build:
stage: build
image: maven:3.3-jdk-8
script:
- mvn compile
artifacts:
paths:
- target/
test:
stage: test
image: maven:3.3-jdk-8
script:
- mvn test
artifacts:
reports:
junit: target/surefire-reports/*.xml
deploy_staging:
stage: deploy
script:
- ./deploy.sh staging
only:
- develop
environment:
name: staging
GitLab Runners¶
Runner je agent, který spouští joby. Shared runners (GitLab.com poskytuje zdarma) nebo vlastní runners. Docker executor — každý job v čistém kontejneru. Registrace runneru na jednom řádku.
GitLab CI vs. Jenkins¶
GitLab CI: Jednoduchost, integrace s GitLab (merge requests, environments), zero maintenance pro hosted GitLab. Jenkins: Flexibilnější, víc pluginů, lepší pro komplexní enterprise pipeline. Oba mají místo — GitLab CI pro menší projekty, Jenkins pro velké enterprise.
CI/CD pro každý projekt¶
GitLab CI snižuje bariéru pro CI/CD. Každý projekt by měl mít automatický build a testy — GitLab CI to dělá triviálním.