@@ -25,32 +25,43 @@ func NewCommandExecutor(secrets secret.Store) CommandExecutor {
2525// Subscribe implements executor.Executor
2626func (e * CommandExecutor ) Subscribe (bus chan task.ExecutionTask ) {
2727 for t := range bus {
28- if err := e .execute (t .Target , t .Path , t .Shutdown ); err != nil {
28+ if err := e .execute (t .Target , t .Path , t .Shutdown , t . Env ); err != nil {
2929 zap .L ().Error ("executor task unsuccessful" ,
3030 zap .String ("target" , t .Target .Name ),
3131 zap .Bool ("shutdown" , t .Shutdown ),
3232 zap .Error (err ))
3333 }
3434 }
35- return
3635}
3736
3837func (e * CommandExecutor ) execute (
3938 target task.Target ,
4039 path string ,
4140 shutdown bool ,
41+ execEnv map [string ]string ,
4242) (err error ) {
43- env , err := e .secrets .GetSecretsForTarget (target .Name )
43+ secrets , err := e .secrets .GetSecretsForTarget (target .Name )
4444 if err != nil {
4545 return errors .Wrap (err , "failed to get secrets for target" )
4646 }
4747
48+ env := make (map [string ]string )
49+
50+ // merge execution environment with secrets
51+ for k , v := range execEnv {
52+ env [k ] = v
53+ }
54+ for k , v := range secrets {
55+ env [k ] = v
56+ }
57+
4858 zap .L ().Debug ("executing with secrets" ,
4959 zap .String ("target" , target .Name ),
5060 zap .Strings ("cmd" , target .Up ),
5161 zap .String ("url" , target .RepoURL ),
5262 zap .String ("dir" , path ),
53- zap .Int ("secrets" , len (env )))
63+ zap .Int ("env" , len (env )),
64+ zap .Int ("secrets" , len (secrets )))
5465
5566 return target .Execute (path , env , shutdown )
5667}
0 commit comments