in internal/task/run.go [100:161]
func (tr *taskRunner) Run(ctx context.Context) error {
var (
secretsToCreate []*k8scorev1.Secret
configMapsToCreate []*k8scorev1.ConfigMap
jobsToCreate []*k8sbatchv1.Job
)
if len(tr.taskConfig.Configs) > 0 {
configs, err := tr.resolveConfigs(ctx, tr.taskConfig.Configs)
if err != nil {
return fmt.Errorf("failed to resolve configs: %w", err)
}
configsSecretObject, err := tr.buildConfigSecretObject(ctx, configs)
if err != nil {
return fmt.Errorf("failed to build config secret object: %w", err)
}
secretsToCreate = append(secretsToCreate, configsSecretObject)
}
if len(tr.taskConfig.Files) > 0 {
scriptsConfigMapObject, err := tr.buildScriptsConfigMapObject(ctx)
if err != nil {
return fmt.Errorf("failed to build scripts config map object: %w", err)
}
configMapsToCreate = append(configMapsToCreate, scriptsConfigMapObject)
}
jobObject, err := tr.buildJobObject()
if err != nil {
return err
}
jobsToCreate = append(jobsToCreate, jobObject)
secretsClient := tr.kubeClient.CoreV1().Secrets(tr.objectNamespace())
configMapsClient := tr.kubeClient.CoreV1().ConfigMaps(tr.objectNamespace())
jobsClient := tr.kubeClient.BatchV1().Jobs(tr.objectNamespace())
for _, secret := range secretsToCreate {
_, err := createOrUpdateObject(ctx, secretsClient, secret)
if err != nil {
return fmt.Errorf("failed to create secret %q: %w", secret.Name, err)
}
}
for _, configMap := range configMapsToCreate {
_, err := createOrUpdateObject(ctx, configMapsClient, configMap)
if err != nil {
return fmt.Errorf("failed to create config map %q: %w", configMap.Name, err)
}
}
for _, job := range jobsToCreate {
_, err := createOrUpdateObject(ctx, jobsClient, job)
if err != nil {
return fmt.Errorf("failed to create job %q: %w", job.Name, err)
}
}
if tr.followLogs {
return tr.followJobLogs(ctx, jobObject)
}
return nil
}