1
0
Files
metadata-action/dev.Dockerfile
T

90 lines
2.3 KiB
Docker
Raw Permalink Normal View History

2022-03-22 21:09:00 +01:00
# syntax=docker/dockerfile:1
2021-11-16 21:51:18 +01:00
2026-03-04 12:40:47 +01:00
ARG NODE_VERSION=24
2021-03-29 13:18:19 +02:00
FROM node:${NODE_VERSION}-alpine AS base
2026-03-02 09:44:27 +01:00
RUN apk add --no-cache cpio findutils git rsync
2021-03-29 13:18:19 +02:00
WORKDIR /src
2024-05-07 10:45:56 +02:00
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache <<EOT
2026-03-02 09:44:27 +01:00
set -e
2024-05-07 10:45:56 +02:00
corepack enable
yarn --version
yarn config set --home enableTelemetry 0
EOT
2021-03-29 13:18:19 +02:00
FROM base AS deps
RUN --mount=type=bind,target=.,rw \
2024-05-07 10:45:56 +02:00
--mount=type=cache,target=/src/.yarn/cache \
2021-03-29 13:18:19 +02:00
--mount=type=cache,target=/src/node_modules \
2021-11-16 21:51:18 +01:00
yarn install && mkdir /vendor && cp yarn.lock /vendor
FROM scratch AS vendor-update
COPY --from=deps /vendor /
FROM deps AS vendor-validate
RUN --mount=type=bind,target=.,rw <<EOT
2023-02-20 22:32:55 +01:00
set -e
git add -A
cp -rf /vendor/* .
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
2024-05-07 10:45:56 +02:00
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
2023-02-20 22:32:55 +01:00
git status --porcelain -- yarn.lock
exit 1
fi
2021-11-16 21:51:18 +01:00
EOT
2021-03-29 13:18:19 +02:00
FROM deps AS build
2026-03-02 09:44:27 +01:00
RUN --mount=target=/context \
2024-05-07 10:45:56 +02:00
--mount=type=cache,target=/src/.yarn/cache \
2026-03-02 09:44:27 +01:00
--mount=type=cache,target=/src/node_modules <<EOT
set -e
rsync -a /context/. .
rm -rf dist
yarn run build
mkdir /out
cp -r dist /out
EOT
2021-03-29 13:18:19 +02:00
FROM scratch AS build-update
COPY --from=build /out /
FROM build AS build-validate
2026-03-02 09:44:27 +01:00
RUN --mount=target=/context \
--mount=target=.,type=tmpfs <<EOT
2023-02-20 22:32:55 +01:00
set -e
2026-03-02 09:44:27 +01:00
rsync -a /context/. .
2023-02-20 22:32:55 +01:00
git add -A
2026-03-02 09:44:27 +01:00
rm -rf dist
2023-02-20 22:32:55 +01:00
cp -rf /out/* .
if [ -n "$(git status --porcelain -- dist)" ]; then
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
git status --porcelain -- dist
exit 1
fi
2021-11-16 21:51:18 +01:00
EOT
2021-03-29 13:18:19 +02:00
FROM deps AS format
RUN --mount=type=bind,target=.,rw \
2024-05-07 10:45:56 +02:00
--mount=type=cache,target=/src/.yarn/cache \
2021-03-29 13:18:19 +02:00
--mount=type=cache,target=/src/node_modules \
2026-03-02 09:44:27 +01:00
yarn run format && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
2021-03-29 13:18:19 +02:00
FROM scratch AS format-update
COPY --from=format /out /
2022-03-22 21:09:00 +01:00
FROM deps AS lint
2021-03-29 13:18:19 +02:00
RUN --mount=type=bind,target=.,rw \
2024-05-07 10:45:56 +02:00
--mount=type=cache,target=/src/.yarn/cache \
2021-03-29 13:18:19 +02:00
--mount=type=cache,target=/src/node_modules \
2022-03-22 21:09:00 +01:00
yarn run lint
2021-11-16 21:51:18 +01:00
FROM deps AS test
RUN --mount=type=bind,target=.,rw \
2024-05-07 10:45:56 +02:00
--mount=type=cache,target=/src/.yarn/cache \
2021-11-16 21:51:18 +01:00
--mount=type=cache,target=/src/node_modules \
2026-02-28 15:48:21 +01:00
yarn run test --coverage --coverage.reportsDirectory=/tmp/coverage
2021-11-16 21:51:18 +01:00
FROM scratch AS test-coverage
COPY --from=test /tmp/coverage /