{"id":18500358,"url":"https://github.com/devtools-qe-incubator/eventmanager","last_synced_at":"2025-06-23T04:39:46.795Z","repository":{"id":38332791,"uuid":"360174982","full_name":"devtools-qe-incubator/eventmanager","owner":"devtools-qe-incubator","description":"Event handler to integrate corporate messaging mechanism with CI/CD ","archived":false,"fork":false,"pushed_at":"2025-03-03T12:01:24.000Z","size":10032,"stargazers_count":9,"open_issues_count":36,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T11:03:46.630Z","etag":null,"topics":["amqp","ci-cd","github-api","messaging","openshift-v4","tekton-pipelines"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devtools-qe-incubator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-21T13:10:19.000Z","updated_at":"2025-03-03T12:01:56.000Z","dependencies_parsed_at":"2024-02-19T08:30:16.405Z","dependency_job_id":"e8674e6e-cbae-4602-bae7-3aa03204183a","html_url":"https://github.com/devtools-qe-incubator/eventmanager","commit_stats":null,"previous_names":["devtools-qe-incubator/eventmanager","adrianriobo/qe-eventmanager"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devtools-qe-incubator%2Feventmanager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devtools-qe-incubator%2Feventmanager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devtools-qe-incubator%2Feventmanager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devtools-qe-incubator%2Feventmanager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devtools-qe-incubator","download_url":"https://codeload.github.com/devtools-qe-incubator/eventmanager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247956613,"owners_count":21024580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amqp","ci-cd","github-api","messaging","openshift-v4","tekton-pipelines"],"created_at":"2024-11-06T13:49:31.649Z","updated_at":"2025-04-09T01:31:52.301Z","avatar_url":"https://github.com/devtools-qe-incubator.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qe-eventmanager\n\n![avatar](docs/diagrams/eventmanager.svg)\n\n[![Container Repository on Quay](https://quay.io/repository/ariobolo/qe-eventmanager/status \"Container Repository on Quay\")](https://quay.io/repository/ariobolo/qe-eventmanager)\n\n## Roles\n\nThe app can act as a manager handling integrations based on flow definitions, or it can act as a tool to interact within the providers configured.\n\n### Actioner\n\nAs an actioner the cli allows to run single actions:\n\n* Send an UMB menssage\n\n```bash\n./qe-eventmanager umb send -p providers.yaml \\\n                           -m message.json \\\n                           -d VirtualTopic.sample\n```\n\n* Create / update a repository status on github\n\n```bash\n./qe-eventmanager github status -p providers.yaml \\\n                           -s success \\\n                           -o sample-owner \\\n                           --repo sample-repo \\\n                           --ref SHA_COMMIT \n```\n\n### Manager\n\nAs a manager integrate providers based on flow definitnions:\n\n```bash\n./qe-eventmanager start -p providers.yaml \\\n                        -f flow1.yaml,flow2.yaml\n```\n\nA simple overview on an umb-tekton integration\n\n![Overview](docs/diagrams/highlevel-arch.jpg?raw=true)\n\n## Configuration\n\nThe eventmanager requires a set of information around the `providers` on which it can act upon  \nand a set or `flows` defining the integrations and the actions to be executed.  \n\n### Providers\n\n```yaml\numb:\n  consumerID: foo\n  driver: amqp\n  brokers: broker1:5556,broker2:5556\n  userCertificate: XXXXXXX # encoded as base64\n  userKey: XXXXX # encoded as base64\n  certificateAuthority: XXXXXX # encoded as base64\ntekton:\n  namespace: myNamespace\n  workspaces:\n  - name: workspace1\n    pvc: pvc1\n  - name: workspace2\n    pvc: pvc2\n  kubeconfig: XXXXXX # encoded as base64. This value is optional is used to connect to remote cluster\n                     # Otherwise eventmanager can rely on RBAC when running inside the cluster\ngithub: # Can be configured to auth based on pat or as a github app, bot require read public repos and read-write status rights \n  token: github_pat_token \n  appID: 1 \n  appInstallationID: 99\n  appKey: XXXXXX # encoded as base64\n```\n\n### Flows  \n\n```yaml\nname:  sample-flow\ninput:\n  umb:\n    topic: topic-to-consume\n    filters:\n      - $.node1.node2[?(@.field1=='value1')].field1\n      - $.node1.node2[?(@.field2=='value2')].field1\n  ack:\n    github:\n      status:\n        ref: $.node1.node2.sha\n        owner: sample-owner\n        repo: sample-repo # Configured github providers require rights on this repo\n        status: pending\naction:\n  tektonPipeline:\n    name: XXX\n    params:\n    - name: foo\n      value: $.node1.node2[(@.field=='foo')].id # $. jsonpath expression function\n    - name: bar\n      value: bar # constant string \n  success:\n    umb:\n      topic: topic-to-produce\n      eventSchema: message-schema-to-send\n      eventFields:\n      - name: foo\n        value: $(pipeline.results.result1) # Pick value from pipeline results result1 \n      - name: bar\n        value: bar # constant string\n  error:\n    github:\n      status:\n        ref: $.node1.node2.sha\n        owner: sample-owner\n        repo: sample-repo # Configured github providers require rights on this repo\n        status: error\n```\n\n## Build\n\n### Cli\n\n```bash\nmake clean\nmake build\n```\n\n### Container\n\n```bash\nmake container-build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevtools-qe-incubator%2Feventmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevtools-qe-incubator%2Feventmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevtools-qe-incubator%2Feventmanager/lists"}