Ability to split automation across multiple pipeline
Trigger pipelines through the API
Fire and forget
Launch pipeline in separate project
Load stages and jobs from a file using include
trigger/.gitlab-ci.yml
to root of new projectcurl
snippetmain
trigger
curl
snippet in script
blockTOKEN
as unprotected but masked CI variable
REF_NAME
with branch name (main
)See new .gitlab-ci.yml
:
git checkout origin/160_gitlab_ci/110_triggers/curl -- '*'
Users sees only their own tokens
Tokens of other users are hidden
Trigger owner must be able to either…
script
with trigger
keywordSpecify project and branch:
job_name:
trigger:
project: foo/bar
branch: main
parent-child/child.yml
to root of first projectReplace project
and branch
under trigger
with include
job_name:
trigger:
include: child.yml
Child pipeline can be made from multiple files
include
supports local
for files in the same repository
Use project
/ref
/file
for files in other repositories
Included file can also be generated before job start
Downstream pipelines inherit some variables
Job variables are passed on unless:
job_name:
inherit:
variables: false
Predefined variables must be redefined as job variables:
job_name:
variables:
my_var: ${CI_COMMIT_REF_NAME}
trigger:
#...
Do not redefined masked variables - they will not be masked
Upstream pipeline only waits for successful trigger
Wait for successul downstream pipeline using strategy
job_name:
trigger:
include: child.ymal
strategy: depend
Include can be generated on-demand:
generate:
script:
- |
cat <<EOF >child.yaml
test:
script:
- printenv
EOF
artifacts:
paths:
- child.yaml
use:
trigger:
include:
- artifact: child.yaml
job: generate
Generate artifact and trigger child pipeline:
build_artifacts:
stage: build
script: echo "This is a test artifact!" >> artifact.txt
artifacts:
paths:
- artifact.txt
deploy:
stage: deploy
trigger:
include:
- local: path/to/child-pipeline.yml
variables:
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
Fetch artifact from parent pipeline
test:
stage: test
script: cat artifact.txt
needs:
- pipeline: $PARENT_PIPELINE_ID
job: build_artifacts
Only allow job variables to be passed to downstream pipelines:
variables:
GLOBAL_VAR: value
trigger-job:
inherit:
variables: false
variables:
JOB_VAR: value
trigger:
include:
- local: path/to/child-pipeline.yml