(ctx context.Context, baseSourceDir *dagger.Directory)
| 152 | } |
| 153 | |
| 154 | func (env *Environment) buildBase(ctx context.Context, baseSourceDir *dagger.Directory) (*dagger.Container, error) { |
| 155 | container := env.dag. |
| 156 | Container(). |
| 157 | From(env.State.Config.BaseImage). |
| 158 | WithWorkdir(env.State.Config.Workdir) |
| 159 | |
| 160 | container, err := containerWithEnvAndSecrets(env.dag, container, env.State.Config.Env, env.State.Config.Secrets) |
| 161 | if err != nil { |
| 162 | return nil, err |
| 163 | } |
| 164 | |
| 165 | runCommands := func(commands []string) error { |
| 166 | for _, command := range commands { |
| 167 | var err error |
| 168 | |
| 169 | container = container.WithExec([]string{"sh", "-c", command}) |
| 170 | |
| 171 | exitCode, err := container.ExitCode(ctx) |
| 172 | if err != nil { |
| 173 | var exitErr *dagger.ExecError |
| 174 | if errors.As(err, &exitErr) { |
| 175 | env.Notes.AddCommand(command, exitErr.ExitCode, exitErr.Stdout, exitErr.Stderr) |
| 176 | return fmt.Errorf("exit code %d.\nstdout: %s\nstderr: %s\n%w", exitErr.ExitCode, exitErr.Stdout, exitErr.Stderr, err) |
| 177 | } |
| 178 | |
| 179 | return err |
| 180 | } |
| 181 | stdout, err := container.Stdout(ctx) |
| 182 | if err != nil { |
| 183 | return fmt.Errorf("failed to get stdout: %w", err) |
| 184 | } |
| 185 | |
| 186 | stderr, err := container.Stderr(ctx) |
| 187 | if err != nil { |
| 188 | return fmt.Errorf("failed to get stderr: %w", err) |
| 189 | } |
| 190 | |
| 191 | env.Notes.AddCommand(command, exitCode, stdout, stderr) |
| 192 | } |
| 193 | |
| 194 | return nil |
| 195 | } |
| 196 | |
| 197 | // Run setup commands without the source directory for caching purposes |
| 198 | if err := runCommands(env.State.Config.SetupCommands); err != nil { |
| 199 | return nil, fmt.Errorf("setup command failed: %w", err) |
| 200 | } |
| 201 | |
| 202 | env.Services, err = env.startServices(ctx) |
| 203 | if err != nil { |
| 204 | return nil, fmt.Errorf("failed to start services: %w", err) |
| 205 | } |
| 206 | for _, service := range env.Services { |
| 207 | container = container.WithServiceBinding(service.Config.Name, service.svc) |
| 208 | } |
| 209 | |
| 210 | container = container.WithDirectory(".", baseSourceDir) |
| 211 |
no test coverage detected