From d7e80d53c167430f40c33a351b9f11b44ec9be0d Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:52:21 +0100 Subject: [PATCH] releaser: read config from files instead of variables Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- _releaser/Dockerfile | 8 ++++---- _releaser/aws.go | 22 ++++++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/_releaser/Dockerfile b/_releaser/Dockerfile index 5b945dd596..09898bcaf5 100644 --- a/_releaser/Dockerfile +++ b/_releaser/Dockerfile @@ -5,7 +5,7 @@ ARG GO_VERSION=1.19 FROM scratch AS sitedir FROM golang:${GO_VERSION}-alpine AS base -RUN apk add --no-cache jq openssl +RUN apk add --no-cache openssl ENV CGO_ENABLED=0 WORKDIR /src COPY go.mod go.sum ./ @@ -42,13 +42,13 @@ FROM base AS aws-cloudfront-update ARG AWS_REGION ARG AWS_LAMBDA_FUNCTION ARG AWS_CLOUDFRONT_ID +ARG AWS_LAMBDA_FUNCTION_FILE="cloudfront-lambda-redirects.js" +ARG REDIRECTS_FILE="/site/redirects.json" +ARG REDIRECTS_PREFIXES_FILE="redirects-prefixes.json" RUN --mount=type=bind,target=. \ --mount=type=bind,from=sitedir,target=/site \ --mount=type=bind,from=releaser,source=/out/releaser,target=/usr/bin/releaser \ --mount=type=secret,id=AWS_ACCESS_KEY_ID \ --mount=type=secret,id=AWS_SECRET_ACCESS_KEY \ --mount=type=secret,id=AWS_SESSION_TOKEN \ - AWS_LAMBDA_FUNCTION_FILE=cloudfront-lambda-redirects.js \ - REDIRECTS_JSON=$(jq -c '.' /site/redirects.json) \ - REDIRECTS_PREFIXES_JSON=$(jq -c '.' redirects-prefixes.json) \ releaser aws cloudfront-update diff --git a/_releaser/aws.go b/_releaser/aws.go index 3f79c2bd2e..55b21877ff 100644 --- a/_releaser/aws.go +++ b/_releaser/aws.go @@ -100,15 +100,15 @@ type AwsCloudfrontUpdateCmd struct { Function string `kong:"name='lambda-function',env='AWS_LAMBDA_FUNCTION'"` FunctionFile string `kong:"name='lambda-function-file',env='AWS_LAMBDA_FUNCTION_FILE'"` CloudfrontID string `kong:"name='cloudfront-id',env='AWS_CLOUDFRONT_ID'"` - RedirectsJSON string `kong:"name='redirects-json',env='REDIRECTS_JSON'"` - RedirectsPrefixesJSON string `kong:"name='redirects-prefixes-json',env='REDIRECTS_PREFIXES_JSON'"` + RedirectsFile string `kong:"name='redirects-file',env='REDIRECTS_FILE'"` + RedirectsPrefixesFile string `kong:"name='redirects-prefixes-file',env='REDIRECTS_PREFIXES_FILE'"` } func (s *AwsCloudfrontUpdateCmd) Run() error { var err error ver := time.Now().UTC().Format(time.RFC3339) - zipdt, err := getLambdaFunctionZip(s.FunctionFile, s.RedirectsJSON, s.RedirectsPrefixesJSON) + zipdt, err := getLambdaFunctionZip(s.FunctionFile, s.RedirectsFile, s.RedirectsPrefixesFile) if err != nil { return fmt.Errorf("cannot create lambda function zip: %w", err) } @@ -228,20 +228,30 @@ func (s *AwsCloudfrontUpdateCmd) Run() error { return nil } -func getLambdaFunctionZip(funcFilename string, redirectsJSON string, redirectsPrefixesJSON string) ([]byte, error) { +func getLambdaFunctionZip(funcFilename, redirectsFile, redirectsPrefixesFile string) ([]byte, error) { funcdt, err := os.ReadFile(funcFilename) if err != nil { return nil, fmt.Errorf("failed to read lambda function file %q: %w", funcFilename, err) } + redirects, err := os.ReadFile(redirectsFile) + if err != nil { + return nil, fmt.Errorf("failed to read redirects file %q: %w", redirectsFile, err) + } + + redirectsPrefixes, err := os.ReadFile(redirectsPrefixesFile) + if err != nil { + return nil, fmt.Errorf("failed to read redirects prefixes file %q: %w", redirectsPrefixesFile, err) + } + var funcbuf bytes.Buffer functpl := template.Must(template.New("").Parse(string(funcdt))) if err = functpl.Execute(&funcbuf, struct { RedirectsJSON string RedirectsPrefixesJSON string }{ - redirectsJSON, - redirectsPrefixesJSON, + string(redirects), + string(redirectsPrefixes), }); err != nil { return nil, err }