debian-mirror-gitlab/doc/architecture/blueprints/gitlab_ci_events/proposal-4-creating-events-via-ci-files.md
2023-07-09 08:55:56 +05:30

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.

  1. Upsert events to the database when .gitlab-ci-event.yml is updated.
  2. 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"