GitLab does not offer a visual pipeline editor
Pipelines are described in YAML
Pipelines are stored in .gitlab-ci.yml
Minimal job:
job_name:
script: pwd
script
can be a string but is mostly an array:
job_name:
script:
- pwd
- whoami
Jobs fail if any command fails (exit code > 0)
script
supports all herestring variants of YAML
Literal multiline block:
job_name:
script:
- |
multi
line
Shell here documents:
job_name:
script:
- |
tr a-z A-Z <<EOF
lower case to be converted to upper case
EOF
–
Script blocks can be testing using a container based on alpine
:
docker run -it --rm -v $PWD:/src -w /src alpine sh
Jobs represent isolated steps in a pipeline
Stages are executed sequentially
Jobs in the same stage are executed in parallel
Special stages .pre
and .post
See main.go
Initialize dependency information: go mod init
Update dependency information: go mod tidy
Build command: go build -o hello .
Use docker to play:
docker run --interactive --tty --rm \
--volume ${PWD}:/project --workdir /project \
golang bash
Add files to root of project:
git checkout origin/160_gitlab_ci/010_jobs_and_stages/build -- '*'
Add lint/.gitlab-ci.yml
to root of project:
git checkout origin/160_gitlab_ci/010_jobs_and_stages/lint -- '*'
Check pipeline
Add parallel/.gitlab-ci.yml
to root of project:
git checkout origin/160_gitlab_ci/010_jobs_and_stages/parallel -- '*'
Check pipeline
Sometimes a pipeline run is not desirable
Skip pipeline by prefixing the commit message:
[skip ci] My awesome commit message
Leave commit message untouched
Provide a push option:
git push -o ci.skip