@@ -26,6 +26,8 @@ import (
2626 "github.com/chainloop-dev/chainloop/app/controlplane/internal/biz"
2727 "github.com/chainloop-dev/chainloop/app/controlplane/internal/conf"
2828 "github.com/chainloop-dev/chainloop/app/controlplane/internal/server"
29+ "github.com/chainloop-dev/chainloop/app/controlplane/plugins"
30+ "github.com/chainloop-dev/chainloop/app/controlplane/plugins/sdk/v1"
2931 credsConfig "github.com/chainloop-dev/chainloop/internal/credentials/api/credentials/v1"
3032 "github.com/chainloop-dev/chainloop/internal/servicelogger"
3133
@@ -54,7 +56,7 @@ func init() {
5456 flag .StringVar (& flagconf , "conf" , "../configs" , "config path, eg: -conf config.yaml" )
5557}
5658
57- func newApp (logger log.Logger , gs * grpc.Server , hs * http.Server , ms * server.HTTPMetricsServer , expirer * biz.WorkflowRunExpirerUseCase ) * app {
59+ func newApp (logger log.Logger , gs * grpc.Server , hs * http.Server , ms * server.HTTPMetricsServer , expirer * biz.WorkflowRunExpirerUseCase , plugins sdk. AvailablePlugins ) * app {
5860 return & app {
5961 kratos .New (
6062 kratos .ID (id ),
@@ -63,7 +65,7 @@ func newApp(logger log.Logger, gs *grpc.Server, hs *http.Server, ms *server.HTTP
6365 kratos .Metadata (map [string ]string {}),
6466 kratos .Logger (logger ),
6567 kratos .Server (gs , hs , ms ),
66- ), expirer }
68+ ), expirer , plugins }
6769}
6870
6971func main () {
@@ -72,7 +74,7 @@ func main() {
7274 config .WithSource (
7375 file .NewSource (flagconf ),
7476 // Load environments variables prefixed with CP_
75- // NOTE: They get resolved withouth the prefix, i.e CP_DB_HOST -> DB_HOST
77+ // NOTE: They get resolved without the prefix, i.e CP_DB_HOST -> DB_HOST
7678 env .NewSource ("CP_" ),
7779 ),
7880 )
@@ -105,7 +107,15 @@ func main() {
105107 panic (err )
106108 }
107109
108- app , cleanup , err := wireApp (& bc , credsWriter , logger )
110+ // Load plugins
111+ availablePlugins , err := plugins .Load (bc .GetPluginsDir (), logger )
112+ if err != nil {
113+ panic (err )
114+ }
115+ // Kill plugins processes on exit
116+ defer availablePlugins .Cleanup ()
117+
118+ app , cleanup , err := wireApp (& bc , credsWriter , logger , availablePlugins )
109119 if err != nil {
110120 panic (err )
111121 }
@@ -127,7 +137,8 @@ func main() {
127137type app struct {
128138 * kratos.App
129139 // Periodic job that expires unfinished attestation processes older than a given threshold
130- runsExpirer * biz.WorkflowRunExpirerUseCase
140+ runsExpirer * biz.WorkflowRunExpirerUseCase
141+ availablePlugins sdk.AvailablePlugins
131142}
132143
133144func filterSensitiveArgs (_ log.Level , keyvals ... interface {}) bool {
0 commit comments