github.com/freiheit-com/kuberpult@v1.24.2-0.20240328135542-315d5630abe6/services/frontend-service/Earthfile (about)

     1  VERSION --use-function-keyword 0.7
     2  IMPORT ../../infrastructure/earthly/go AS go-build
     3  
     4  LOCALLY
     5  ARG --global service=$(basename $PWD)
     6  ARG --global src_files=$(find pkg -type f ! -name "*_test.go")
     7  ARG --global cgo_enabled=0
     8  
     9  deps:
    10      FROM ../../+deps
    11      DO go-build+DEPS --service=$service --src_files=$src_files
    12      WORKDIR services/$service
    13  
    14  artifacts:
    15      FROM +deps
    16      SAVE ARTIFACT /etc/ssl/certs/ca-certificates.crt
    17      SAVE ARTIFACT /usr/share/zoneinfo
    18  
    19  compile:
    20      FROM +deps
    21      DO go-build+COMPILE --cgo_enabled=$cgo_enabled
    22  
    23  unit-test:
    24      FROM +compile
    25      DO go-build+UNIT_TEST
    26  
    27  lint:
    28      FROM +deps
    29      DO go-build+LINT
    30      
    31  docker:
    32      FROM alpine:3.18
    33      ARG UID=1000
    34      ARG registry="europe-west3-docker.pkg.dev/fdc-public-docker-registry/kuberpult"
    35      ARG tag="local"
    36      ARG use_datadog=false
    37      COPY +deps-ui/build /build
    38      DO go-build+DOCKER --workdir=/ --UID=$UID --image_tag=$registry/kuberpult-$service:$tag --cgo_enabled=$cgo_enabled --service=$service --use_datadog=$use_datadog
    39  
    40  release:
    41      FROM +docker
    42      ARG registry="europe-west3-docker.pkg.dev/fdc-public-docker-registry/kuberpult"
    43      ARG --required tag
    44      DO go-build+RELEASE --image_tag=$registry/kuberpult-$service:$tag
    45  
    46  deps-ui:
    47      FROM node:20.9.0-alpine3.18
    48      WORKDIR /kp
    49      RUN npm install -g pnpm@8.9.2
    50      RUN chown -R node:node /kp
    51      USER node
    52      COPY package.json pnpm-lock.yaml pnpm-workspace.yaml buf.yaml buf.gen.yaml buf.lock tsconfig.json .eslintrc .prettierrc .npmrc .nvmrc .
    53      RUN pnpm i
    54  
    55      COPY ../../+deps/buf /usr/bin/buf
    56      COPY ../../pkg+artifacts/pkg/api/v1 api
    57      COPY src src
    58      COPY public public
    59      RUN buf generate --path api --timeout 5m
    60      RUN pnpm build
    61      
    62      SAVE ARTIFACT build
    63  
    64  node-modules:
    65      FROM +deps-ui
    66      SAVE ARTIFACT node_modules AS LOCAL node_modules
    67  
    68  lint-ui:
    69      FROM +deps-ui
    70      RUN pnpm eslint
    71      RUN pnpm lint-scss
    72  
    73  unit-test-ui:
    74      FROM +deps-ui
    75      RUN pnpm test -- --watchAll=false
    76  
    77  docker-ui:
    78      FROM +deps-ui
    79      CMD "rm -rf src/api src/google && buf generate --path api --timeout 5m && pnpm start" 
    80      SAVE IMAGE ui:local
    81      SAVE ARTIFACT src/api AS LOCAL src/api
    82      SAVE ARTIFACT src/google AS LOCAL src/google
    83  
    84  release-ui:
    85      FROM +docker-ui
    86      ARG registry="ghcr.io/freiheit-com/kuberpult"
    87      SAVE IMAGE --push $registry/kuberpult-ui:local
    88  
    89  build-pr:
    90      ARG --required tag
    91      ARG registry="ghcr.io/freiheit-com/kuberpult"
    92      ARG mirror="false"
    93      ARG mirror_registry="europe-west3-docker.pkg.dev/fdc-public-docker-registry/kuberpult"
    94  
    95      DO +BUILD_ALL --tag=$tag --registry=$registry --mirror=$mirror  --mirror_registry=$mirror_registry
    96  
    97  build-main:
    98      ARG --required tag
    99      ARG registry="ghcr.io/freiheit-com/kuberpult"
   100      ARG mirror="false"
   101      ARG mirror_registry="europe-west3-docker.pkg.dev/fdc-public-docker-registry/kuberpult"
   102  
   103      DO +BUILD_ALL --tag=$tag --registry=$registry --mirror=$mirror  --mirror_registry=$mirror_registry --dd_release=true
   104  
   105  BUILD_ALL:
   106      FUNCTION
   107      ARG --required tag
   108      ARG --required registry
   109      ARG mirror_registry="europe-west3-docker.pkg.dev/fdc-public-docker-registry/kuberpult"
   110      ARG mirror=""
   111      ARG dd_release=false
   112  
   113      FROM +deps
   114      BUILD +lint-ui
   115      BUILD +lint
   116      BUILD +unit-test 
   117      BUILD +unit-test-ui
   118      BUILD +release --registry=$registry --tag=$tag
   119      IF [ "$mirror" = "true" ]
   120          BUILD +release --registry=$mirror_registry --tag=$tag
   121      END
   122      IF [ "$dd_release" = "true" ]
   123          BUILD +release --registry=$mirror_registry --tag="${tag}-datadog" --use_datadog=true
   124      END