/
publish_ecr.go
56 lines (46 loc) · 1.19 KB
/
publish_ecr.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
package launchpad
import (
"context"
"regexp"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/pkg/errors"
"go.jetpack.io/launchpad/pkg/jetcloud/jetaws"
)
func getAuthenticatedEcrRegistryWithDefaultConfig(
ctx context.Context,
imageRegistryUri string,
) (*ImageRegistry, error) {
awsCfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
dockerCredentials, err := jetaws.DockerCredentials(
ctx,
awsCfg,
)
if err != nil {
return nil, errors.WithStack(err)
}
registry := &ImageRegistry{
awsCfg: &awsCfg,
dockerCredentials: dockerCredentials,
host: awsRegistryHost,
uri: imageRegistryUri,
}
return registry, nil
}
var accountRegex = regexp.MustCompile(`[0-9]+`)
func createEcrRepository(ctx context.Context, p *PublishPlan) error {
if p.registry.awsCfg == nil {
return errAwsConfigIsNilForUserSpecifiedRegistry
}
if err := jetaws.EnsureECRRepositoryExists(ctx, *p.registry.awsCfg, p.imageRepository()); err != nil {
return errors.WithStack(err)
}
return jetaws.EnsureECRLifecyclePolicy(
ctx,
*p.registry.awsCfg,
p.imageRepository(),
accountRegex.FindString(p.registry.uri),
)
}