-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add support for pipeline plugins #722
Conversation
5750ddf
to
7d6ef4c
Compare
55f02ec
to
e234733
Compare
7d6ef4c
to
0bf0074
Compare
0bf0074
to
63652fa
Compare
c1f6680
to
a6c075e
Compare
443fcc7
to
f0a1f34
Compare
0e3ccf0
to
7e06bdc
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #722 +/- ##
==========================================
- Coverage 72.50% 65.73% -6.78%
==========================================
Files 162 178 +16
Lines 5289 5633 +344
Branches 592 604 +12
==========================================
- Hits 3835 3703 -132
- Misses 1322 1826 +504
+ Partials 132 104 -28
☔ View full report in Codecov by Sentry. |
9d90888
to
e898489
Compare
ec89338
to
6b7125c
Compare
The System engineering toolchain team for Digitale Schiene is offering several model modifiers and model derivative jobs. Example for model modifiers are: - ID injection bot (inject IDs into model elements) Example for model derivates: - Model complexity badge generation - Diagram cache generation - Automatic documentation generation Synchronisation between TeamForCapella and Git is also considered as job, somewhere in between. Currently, all "jobs" are run in the Gitlab CI. There is no UI for the setup of these jobs. Each job repository provides a Gitlab CI templates, which can be easily integrated in project repositories. However, this approach is not intuitive for external people, leading to operation support effort for operation teams, which have to take care of the creation and updates of jobs. Another disadavantage of the current approach is the Gitlab dependency. Not all environments have a Gitlab instance available. Getting it running on other platforms is even more effort. This commit adds a plugin/job store to the Capella Colloration Manager. A plugin/job is still developed in a Git repository. Plugins have to define a `mbse-works-plugin.yml`, providing metadata, input, output, trigger and job information. The JSON schema can be fetched via `GET /api/v1.0/plugins-schema` (backend). A human-readable documentation is available via `/docs/plugin-schema` (backend). With this information, registered plugins can be easily integrated into projects. The integration should be intuitive for project leads. The steps are: - Create a new pipeline - Select a supported plugin from the store - Configure the plugin: Supported types for the beginning are: - git (Select a linked git model from the project, so that the job can access the Git repository information) - t4c (Select a linked T4C repository/project from the project). The job gets the connection information + a session token. - yml (Most flexible option, the yml configuration file is mounted into the job container, validation via yml schema) - environment (Key/value pairs, which are used as environment variable for the job) - Confirm the creation As part of this commit, there are only two options: - Run the pipeline manually - Run it as 3am during the night. Co-authored-by: ewuerger <[email protected]> Co-authored-by: Paula-Kli <[email protected]>
6b7125c
to
576fb32
Compare
SonarCloud Quality Gate failed. 2 Bugs No Coverage information Catch issues before they fail your Quality Gate with our IDE extension SonarLint |
Due to the number of conflicts and the state of the PR, I'll close it. It can still be used as inspiration for future implementations. |
Our Systems engineering toolchain team offers several model modifiers and model derivative jobs.
Example for model modifiers are:
Example for model derivates:
Synchronisation between TeamForCapella and Git is also considered as job, somewhere in between.
Currently, all "jobs" run in the Gitlab CI. There is no UI for the setup of these jobs. Each job repository provides a Gitlab CI templates, which can be easily integrated in project repositories. However, this approach is not intuitive for users / system architects, leading to operational support effort for operation teams, which have to take care of the creation and updates of jobs.
Another disadavantage of the current approach is the Gitlab dependency. Not all environments have a Gitlab instance available. Getting it running on other platforms maintaining templates for different CI/CD platforms is a lot of effort.
This commit adds a plugin/job store to the Capella Colloration Manager. A plugin/job is still developed in a Git repository. Plugins have to define a
mbse-works-plugin.yml
, providing metadata, input, output, trigger and job information.With this information, registered plugins can be easily integrated into projects. The integration should be intuitive for project leads.
The steps are:
As part of this commit, there are only two options:
Currently, there is no locking and pipeline/job dependency support. Triggering pipelines via webhooks is planned as this would provide a integration with most Git repository servers.
TODO: