@@ -25,32 +25,43 @@ func NewCommandExecutor(secrets secret.Store) CommandExecutor {
25
25
// Subscribe implements executor.Executor
26
26
func (e * CommandExecutor ) Subscribe (bus chan task.ExecutionTask ) {
27
27
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 {
29
29
zap .L ().Error ("executor task unsuccessful" ,
30
30
zap .String ("target" , t .Target .Name ),
31
31
zap .Bool ("shutdown" , t .Shutdown ),
32
32
zap .Error (err ))
33
33
}
34
34
}
35
- return
36
35
}
37
36
38
37
func (e * CommandExecutor ) execute (
39
38
target task.Target ,
40
39
path string ,
41
40
shutdown bool ,
41
+ execEnv map [string ]string ,
42
42
) (err error ) {
43
- env , err := e .secrets .GetSecretsForTarget (target .Name )
43
+ secrets , err := e .secrets .GetSecretsForTarget (target .Name )
44
44
if err != nil {
45
45
return errors .Wrap (err , "failed to get secrets for target" )
46
46
}
47
47
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
+
48
58
zap .L ().Debug ("executing with secrets" ,
49
59
zap .String ("target" , target .Name ),
50
60
zap .Strings ("cmd" , target .Up ),
51
61
zap .String ("url" , target .RepoURL ),
52
62
zap .String ("dir" , path ),
53
- zap .Int ("secrets" , len (env )))
63
+ zap .Int ("env" , len (env )),
64
+ zap .Int ("secrets" , len (secrets )))
54
65
55
66
return target .Execute (path , env , shutdown )
56
67
}
0 commit comments