1.8 KiB
1.8 KiB
owning-stage | description |
---|---|
~devops::verify | GitLab CI Events Proposal 4: Creating events via CI files |
GitLab CI Events Proposal 4: Creating events via CI files
Each project can have its own event configuration file. Let's call it .gitlab-ci-event.yml
for now.
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
is updated. - Create EventStore subscriptions to handle the events.
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"