Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
594a8e6d
Commit
594a8e6d
authored
Jan 26, 2022
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add runner custom provider plugin system design principles
parent
8257fde2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
0 deletions
+27
-0
doc/architecture/blueprints/runner_scaling/index.md
doc/architecture/blueprints/runner_scaling/index.md
+27
-0
No files found.
doc/architecture/blueprints/runner_scaling/index.md
View file @
594a8e6d
...
...
@@ -204,6 +204,33 @@ document, define requirements and score the solution accordingly. This will
allow us to choose a solution that will work best for us and the wider
community.
### Plugin system design principles
We want to design a new plugin system interface that will be simple for the
wider community team members to consume. Because we can not build plugins for
all the cloud platforms, we want the barrier for building one as low as
possible for everyone. We want to allow everyone to contribute.
In order to achieve this goal we want to follow a few design principles, that
are here to guide our development process for the new plugin system
abstraction:
General high-level principles:
1.
Make the entry barrier for writing a new plugin low.
1.
Find a proper balance between the plugin system simplicity and flexibility.
These are not mutually exclusive.
1.
Abstract away as many technical details as possible but do not hide them completely.
1.
Build an abstraction that serves our community well but allows us to ship it quickly.
1.
Invest in a flexible solution, avoid one-way-door decisions, foster iteration.
1.
When in doubts err on the side of making things more simple for the wider community.
A few most important technical details:
1.
Favor gRPC communication between a plugin and GitLab Runner.
1.
Make it possible to version communication interface and support many versions.
1.
Make Go a primary language for writing plugins but accept other languages too.
## Status
Status: RFC.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment