-
Notifications
You must be signed in to change notification settings - Fork 903
/
Earthfile
71 lines (63 loc) · 2.86 KB
/
Earthfile
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
VERSION 0.6
FROM node:14.18
WORKDIR /contrib/web
src-files:
COPY ../config+src-files/* ../config
COPY package.json .
COPY pnpm-lock.yaml .
api-files:
COPY web/geo/world.geojson ./web/geo/world.geojson
COPY web/public/locales/en.json ./web/public/locales/en.json
SAVE ARTIFACT .
prepare:
FROM +src-files
RUN npm install -g pnpm
RUN pnpm install --frozen-lockfile
COPY tsconfig.json tsconfig.node.json vite.config.ts .
COPY index.html .
COPY public ./public
COPY config ./config
COPY scripts/generate-zones-config.ts ./scripts/generate-zones-config.ts
COPY scripts/generate-index-files.ts ./scripts/generate-index-files.ts
COPY src ./src
test:
FROM +prepare
COPY cypress.config.ts .
COPY cypress ./cypress
RUN pnpm run verify:ci
# TODO: Run tests
build:
FROM +prepare
RUN pnpm version minor
RUN --secret SENTRY_AUTH_TOKEN=+secrets/SENTRY_AUTH_TOKEN VITE_PUBLIC_ELECTRICITYMAP_PUBLIC_TOKEN=+secrets/ELECTRICITYMAP_PUBLIC_TOKEN pnpm run build
RUN pnpm run generate-index-files
# Local outputs for debugging
SAVE ARTIFACT ./config/world.json AS LOCAL ./config/world.json
SAVE ARTIFACT ./config/excludedAggregatedExchanges.json AS LOCAL ./config/excludedAggregatedExchanges.json
SAVE ARTIFACT ./dist AS LOCAL ./dist
deploy-staging:
BUILD +build
FROM google/cloud-sdk:243.0.0
COPY +build/dist ./dist
RUN --push --mount=type=secret,target=./GCP_KEY.JSON,id=GCP_KEY \
gcloud auth activate-service-account --key-file=GCP_KEY.JSON && \
# Copy assets first to ensure they are available when the new index.html is served
gsutil -m cp -a public-read -r dist/assets/* gs://beta.electricitymaps.com/assets && \
gsutil -m cp -a public-read -r dist/* gs://beta.electricitymaps.com && \
gsutil web set -m index.html -e index.html gs://beta.electricitymaps.com && \
gsutil setmeta -h "Cache-Control:no-cache,max-age=0" gs://beta.electricitymaps.com/index.html && \
gsutil setmeta -h "Cache-Control:no-cache,max-age=0" gs://beta.electricitymaps.com/client-version.json && \
gcloud auth revoke
deploy:
BUILD +build
FROM google/cloud-sdk:243.0.0
COPY +build/dist ./dist
RUN --push --mount=type=secret,target=./GCP_KEY.JSON,id=GCP_KEY \
gcloud auth activate-service-account --key-file=GCP_KEY.JSON && \
# Copy assets first to ensure they are available when the new index.html is served
gsutil -m cp -a public-read -r dist/assets/* gs://app.electricitymaps.com/assets && \
gsutil -m cp -a public-read -r dist/* gs://app.electricitymaps.com && \
gsutil web set -m index.html -e index.html gs://beta.electricitymaps.com && \
gsutil setmeta -h "Cache-Control:no-cache,max-age=0" gs://app.electricitymaps.com/index.html && \
gsutil setmeta -h "Cache-Control:no-cache,max-age=0" gs://app.electricitymaps.com/client-version.json && \
gcloud auth revoke