1
0
Files
build-push-action/dev.Dockerfile
T

90 lines
2.3 KiB
Docker
Raw Normal View History

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