GRPC/Container Based Render Plugin supports #12271

Open
opened 2025-11-02 10:04:04 -06:00 by GiteaMirror · 2 comments
Owner

Originally created by @lunny on GitHub (Dec 30, 2023).

Feature Description

Original Implementation Drawbacks

Gitea support render plugin based on OS process for many years. The render plugin system has some drawbacks.

  • The third-party software has to be installed on the same machine, so users have to create their own Dockerfile based on the official one.
  • It's not out-of-box, users need to configure it themselves and restart Gitea after the configuration.
  • It's difficult to be shared.

The New Implementation

This proposal introduce a new type render plugins which based on GRPC/WebSocket and container. Every plugin is a conatiner image which is also a RGPC client. It will connect to Gitea Server and registered as a special format render. It can register one or more extend names, like .md, .mdx and etc. After registered, it will be blocked to wait render task. If it got a render task, it will render the given special format content and return the HTML.

There are two different possible resultions.

  • Run the render plugin as actions services on some container runner
  • It will not depend on actions but have a standalone system, then it will have a default running container type. It could be docker, k8s.
    For the plugins, it can be running on local docker or remote k8s. Then when installing a plugin from the marketplace, using different method to download the image and run it and configure it.

TBC

Originally created by @lunny on GitHub (Dec 30, 2023). # Feature Description ## Original Implementation Drawbacks Gitea support render plugin based on OS process for many years. The render plugin system has some drawbacks. - The third-party software has to be installed on the same machine, so users have to create their own Dockerfile based on the official one. - It's not out-of-box, users need to configure it themselves and restart Gitea after the configuration. - It's difficult to be shared. ## The New Implementation This proposal introduce a new type render plugins which based on GRPC/WebSocket and container. Every plugin is a conatiner image which is also a RGPC client. It will connect to Gitea Server and registered as a special format render. It can register one or more extend names, like `.md`, `.mdx` and etc. After registered, it will be blocked to wait render task. If it got a render task, it will render the given special format content and return the HTML. There are two different possible resultions. - Run the render plugin as actions services on some container runner - It will not depend on actions but have a standalone system, then it will have a default running container type. It could be `docker`, `k8s`. For the plugins, it can be running on local `docker` or remote `k8s`. Then when installing a plugin from the marketplace, using different method to download the image and run it and configure it. TBC
GiteaMirror added the type/proposal label 2025-11-02 10:04:04 -06:00
Author
Owner

@delvh commented on GitHub (Dec 30, 2023):

Duplicate of #20126?

@delvh commented on GitHub (Dec 30, 2023): Duplicate of #20126?
Author
Owner

@lunny commented on GitHub (Dec 30, 2023):

Common Plugin is a big topic which is not easy to implement. This is only for a renderer plugin based on container and GRPC.

@lunny commented on GitHub (Dec 30, 2023): Common Plugin is a big topic which is not easy to implement. This is only for a renderer plugin based on container and GRPC.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#12271