diff --git a/model/environ.go b/model/environ.go index 67f665fec6..3e3e00b5b6 100644 --- a/model/environ.go +++ b/model/environ.go @@ -2,7 +2,6 @@ package model import ( "errors" - "path/filepath" ) var ( @@ -23,24 +22,9 @@ type EnvironStore interface { // Environ represents an environment variable. // swagger:model environ type Environ struct { - ID int64 `json:"id" meddler:"env_id,pk"` - Name string `json:"name" meddler:"env_name"` - Value string `json:"value,omitempty" meddler:"env_value"` - Images []string `json:"image" meddler:"env_images,json"` - Events []string `json:"event" meddler:"env_events,json"` -} - -// Match returns true if an image and event match the restricted list. -func (e *Environ) Match(event string) bool { - if len(e.Events) == 0 { - return true - } - for _, pattern := range e.Events { - if match, _ := filepath.Match(pattern, event); match { - return true - } - } - return false + ID int64 `json:"id" meddler:"env_id,pk"` + Name string `json:"name" meddler:"env_name"` + Value string `json:"value,omitempty" meddler:"env_value"` } // Validate validates the required fields and formats. @@ -58,9 +42,7 @@ func (e *Environ) Validate() error { // Copy makes a copy of the environment variable without the value. func (e *Environ) Copy() *Environ { return &Environ{ - ID: e.ID, - Name: e.Name, - Images: e.Images, - Events: e.Events, + ID: e.ID, + Name: e.Name, } } diff --git a/server/build.go b/server/build.go index 44fbf95d67..f709245a28 100644 --- a/server/build.go +++ b/server/build.go @@ -205,6 +205,13 @@ func PostApproval(c *gin.Context) { if err != nil { logrus.Debugf("Error getting registry credentials for %s#%d. %s", repo.FullName, build.Number, err) } + envs := map[string]string{} + if Config.Services.Environ != nil { + globals, _ := Config.Services.Environ.EnvironList(repo) + for _, global := range globals { + envs[global.Name] = global.Value + } + } defer func() { uri := fmt.Sprintf("%s/%s/%d", httputil.GetURL(c.Request), repo.FullName, build.Number) @@ -223,6 +230,7 @@ func PostApproval(c *gin.Context) { Regs: regs, Link: httputil.GetURL(c.Request), Yaml: conf.Data, + Envs: envs, } items, err := b.Build() if err != nil { @@ -484,6 +492,12 @@ func PostBuild(c *gin.Context) { if err != nil { logrus.Debugf("Error getting registry credentials for %s#%d. %s", repo.FullName, build.Number, err) } + if Config.Services.Environ != nil { + globals, _ := Config.Services.Environ.EnvironList(repo) + for _, global := range globals { + buildParams[global.Name] = global.Value + } + } b := builder{ Repo: repo, diff --git a/server/hook.go b/server/hook.go index e8b21efcbd..c427d176d4 100644 --- a/server/hook.go +++ b/server/hook.go @@ -201,6 +201,14 @@ func PostHook(c *gin.Context) { return } + envs := map[string]string{} + if Config.Services.Environ != nil { + globals, _ := Config.Services.Environ.EnvironList(repo) + for _, global := range globals { + envs[global.Name] = global.Value + } + } + secs, err := Config.Services.Secrets.SecretListBuild(repo, build) if err != nil { logrus.Debugf("Error getting secrets for %s#%d. %s", repo.FullName, build.Number, err) @@ -234,6 +242,7 @@ func PostHook(c *gin.Context) { Netrc: netrc, Secs: secs, Regs: regs, + Envs: envs, Link: httputil.GetURL(c.Request), Yaml: conf.Data, } diff --git a/server/rpc.go b/server/rpc.go index 099bcfccbf..6fceca4229 100644 --- a/server/rpc.go +++ b/server/rpc.go @@ -35,6 +35,7 @@ var Config = struct { Senders model.SenderService Secrets model.SecretService Registries model.RegistryService + Environ model.EnvironService } Storage struct { // Users model.UserStore