-
Notifications
You must be signed in to change notification settings - Fork 0
/
factory.go
79 lines (65 loc) · 2.28 KB
/
factory.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package task
import (
"fmt"
"github.com/Excoriate/stiletto/internal/common"
"github.com/Excoriate/stiletto/internal/filesystem"
"github.com/Excoriate/stiletto/pkg/job"
"github.com/Excoriate/stiletto/pkg/pipeline"
)
func NewTask(p *pipeline.Config, job *job.Job, actions []string,
init *InitOptions) *Task {
taskId := common.GetUUID()
taskName := common.NormaliseStringUpper(init.Task)
stackName := job.Stack
p.UXMessage.ShowInfo("TASK-INIT", fmt.Sprintf("Initialising task: %s with id: %s",
taskName, taskId))
envVars := filesystem.MergeEnvVars(job.EnvVarsToSet, job.EnvVarsAWSScanned,
job.EnvVarsCustomScanned, job.EnvVarsTerraformScanned)
if common.MapIsNulOrEmpty(envVars) {
infoMsg := fmt.Sprintf("No environment variables are passed from the Job instance, "+
"skipping the environment variable configuration step for task name: %s with id: %s", taskName, taskId)
p.UXMessage.ShowInfo("TASK-INIT", infoMsg)
} else {
p.UXMessage.ShowInfo("TASK-INIT",
fmt.Sprintf("Environment variables are passed from the Job instance, "+
"setting the environment variable configuration step for task name: %s with id: %s", taskName, taskId))
}
randomContainerName := common.GenerateRandomStringWithPrefix(3, false, true, false,
"rand-cont-")
t := &Task{
// Identifiers
Id: taskId,
Name: taskName,
Stack: stackName,
// Parent objects
PipelineCfg: p,
JobCfg: job,
EnvVarsInheritFromJob: envVars,
// Default inherited container runtime from the job instantiated.
ContainerImageDefault: job.ContainerImageURL,
ContainerDefault: job.ContainerDefault,
ContainerNameDefault: randomContainerName,
Dirs: Dirs{
RootDir: ".",
WorkDir: init.WorkDir,
MountDir: init.MountDir,
TargetDir: init.TargetDir,
RootDirDagger: job.RootDir,
WorkDirDagger: job.WorkDir,
MountDirDagger: job.MountDir,
TargetDirDagger: job.TargetDir,
},
PreReqs: PreRequisites{
Files: []string{"Dockerfile"},
},
Actions: Actions{
CustomCommands: actions,
DefaultCommands: []string{"docker", "build", "-t", randomContainerName, "."},
},
Ctx: job.Ctx,
}
p.UXMessage.ShowInfo("TASK-INIT",
fmt.Sprintf("Successfully initialised core task instance: %s with id: %s",
taskName, taskId))
return t
}