Skip to content

Commit c285829

Browse files
authored
Merge pull request semaphoreui#2288 from ShaneMcC/fix-bash-vars
Fix passing arguments and variables to shell apps.
2 parents cde8515 + c7191b0 commit c285829

File tree

1 file changed

+44
-16
lines changed

1 file changed

+44
-16
lines changed

services/tasks/LocalJob.go

+44-16
Original file line numberDiff line numberDiff line change
@@ -173,26 +173,54 @@ func (t *LocalJob) getEnvironmentENV() (res []string, err error) {
173173

174174
// nolint: gocyclo
175175
func (t *LocalJob) getShellArgs(username string, incomingVersion *string) (args []string, err error) {
176-
//extraVars, err := t.getEnvironmentExtraVars(username, incomingVersion)
176+
extraVars, err := t.getEnvironmentExtraVars(username, incomingVersion)
177+
178+
if err != nil {
179+
t.Log(err.Error())
180+
t.Log("Error getting environment extra vars")
181+
return
182+
}
183+
184+
var templateExtraArgs []string
185+
if t.Template.Arguments != nil {
186+
err = json.Unmarshal([]byte(*t.Template.Arguments), &templateExtraArgs)
187+
if err != nil {
188+
t.Log("Invalid format of the template extra arguments, must be valid JSON")
189+
return
190+
}
191+
}
177192

193+
var taskExtraArgs []string
194+
if t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {
195+
err = json.Unmarshal([]byte(*t.Task.Arguments), &taskExtraArgs)
196+
if err != nil {
197+
t.Log("Invalid format of the TaskRunner extra arguments, must be valid JSON")
198+
return
199+
}
200+
}
201+
202+
// Script to run
178203
args = append(args, t.Template.Playbook)
179204

180-
//if err != nil {
181-
// t.Log(err.Error())
182-
// t.Log("Could not remove command environment, if existant it will be passed to --extra-vars. This is not fatal but be aware of side effects")
183-
// return
184-
//}
205+
// Include Environment Secret Vars
206+
for _, secret := range t.Environment.Secrets {
207+
if secret.Type == db.EnvironmentSecretVar {
208+
args = append(args, fmt.Sprintf("%s=%s", secret.Name, secret.Secret))
209+
}
210+
}
185211

186-
//for name, value := range extraVars {
187-
// if name == "semaphore_vars" {
188-
// continue
189-
// }
190-
// args = append(args, fmt.Sprintf("%s=%s", name, value))
191-
//}
192-
//
193-
//for _, secret := range t.Environment.Secrets {
194-
// args = append(args, fmt.Sprintf("%s=%s", secret.Name, secret.Secret))
195-
//}
212+
// Include extra args from template
213+
args = append(args, templateExtraArgs...)
214+
215+
// Include ExtraVars and Survey Vars
216+
for name, value := range extraVars {
217+
if name != "semaphore_vars" {
218+
args = append(args, fmt.Sprintf("%s=%s", name, value))
219+
}
220+
}
221+
222+
// Include extra args from task
223+
args = append(args, taskExtraArgs...)
196224

197225
return
198226
}

0 commit comments

Comments
 (0)