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