This page contains information related to upcoming products, features, and functionality.
It is important to note that the information presented is for informational purposes only.
Please do not rely on this information for purchasing or planning purposes.
As with all projects, the items mentioned on this page are subject to change or delay.
The development, release, and timing of any products, features, or functionality remain at the
sole discretion of GitLab Inc.
Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | devops verify | - |
GitLab CI Events Proposal 4: Defining subscriptions in a dedicated configuration file
Each project can have its own configuration file for defining subscriptions to
events. For example, .gitlab-ci-event.yml
. In this file, we can define events
in the following format:
events:
- package/published
- issue/created
When this file is changed in the project repository, it is parsed and the events are created, updated, or deleted. This is highly similar to Proposal 1 except that we don’t need to track pipeline creations every time.
- Upsert events to the database when
.gitlab-ci-event.yml
gets updated. - Create inline reactions to events in code to trigger pipelines.
Filtering jobs
We can filter jobs by using the rules
keyword. For example:
test_package_published:
script: echo testing published package
rules:
- events: ["package/published"]
test_package_removed:
script: echo testing removed package
rules:
- events: ["package/removed"]
Otherwise, we can make it work either a CI variable;
test_package_published:
script: echo testing published package
rules:
- if: $CI_EVENT == "package/published"
test_package_removed:
script: echo testing removed package
rules:
- if: $CI_EVENT == "package/removed"
or an input like in the Proposal 3:
spec:
inputs:
event:
default: push
---
test_package_published:
script: echo testing published package
rules:
- if: $[[ inputs.event ]] == "package/published"
test_package_removed:
script: echo testing removed package
rules:
- if: $[[ inputs.event ]] == "package/removed"
Challenges
- This will not work on GitLab.com scale.