func()

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
}