Optimize Frontend Image Build on CI (#1057)
* Always run yarn only on build platform with --platform=$BUILDPLATFORM * Remove optional dependencies (playwright + chromium) from build with --ignore-optional and move some devDependencies to be optional * Disable husky pre-commit hook checks on frontend Co-authored-by: sua yoo <sua@suayoo.com>
This commit is contained in:
parent
b494070e43
commit
38f67a6cc0
2
.github/workflows/deploy-dev.yaml
vendored
2
.github/workflows/deploy-dev.yaml
vendored
@ -40,6 +40,8 @@ jobs:
|
||||
|
||||
- name: Build Frontend
|
||||
uses: docker/build-push-action@v3
|
||||
env:
|
||||
HUSKY: 0
|
||||
with:
|
||||
context: frontend
|
||||
push: true
|
||||
|
2
.github/workflows/frontend-build-check.yaml
vendored
2
.github/workflows/frontend-build-check.yaml
vendored
@ -27,6 +27,8 @@ jobs:
|
||||
${{ runner.os }}-btrix-frontend-build-
|
||||
- name: Install dependencies
|
||||
working-directory: frontend
|
||||
env:
|
||||
HUSKY: 0
|
||||
run: yarn install --frozen-lockfile
|
||||
- name: Unit tests
|
||||
working-directory: frontend
|
||||
|
7
.github/workflows/release.yaml
vendored
7
.github/workflows/release.yaml
vendored
@ -37,7 +37,7 @@ jobs:
|
||||
|
||||
-
|
||||
name: Build Backend
|
||||
uses: docker/build-push-action@v3
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: backend
|
||||
platforms: linux/amd64,linux/arm64
|
||||
@ -48,7 +48,9 @@ jobs:
|
||||
|
||||
-
|
||||
name: Build Frontend
|
||||
uses: docker/build-push-action@v3
|
||||
uses: docker/build-push-action@v4
|
||||
env:
|
||||
HUSKY: 0
|
||||
with:
|
||||
context: frontend
|
||||
platforms: linux/amd64,linux/arm64
|
||||
@ -61,4 +63,3 @@ jobs:
|
||||
tags: ${{ env.REPO_PREFIX }}webrecorder/browsertrix-frontend:${{ env.VERSION }}, webrecorder/browsertrix-frontend:latest
|
||||
cache-from: type=gha,scope=frontend
|
||||
cache-to: type=gha,scope=frontend,mode=max
|
||||
|
||||
|
@ -1,17 +1,15 @@
|
||||
# syntax=docker/dockerfile:1.4
|
||||
ARG RWP_BASE_URL=https://cdn.jsdelivr.net/npm/replaywebpage/
|
||||
|
||||
FROM docker.io/library/node:16 as build_deps
|
||||
FROM --platform=$BUILDPLATFORM docker.io/library/node:16 as build_deps
|
||||
|
||||
WORKDIR /app
|
||||
COPY yarn.lock package.json ./
|
||||
# Uses `yarn cache clean` to let Docker cache layer instead
|
||||
# of including yarn cache in the build image
|
||||
RUN yarn --production --frozen-lockfile --network-timeout 1000000 && \
|
||||
RUN yarn --production --frozen-lockfile --ignore-optional --network-timeout 1000000 && \
|
||||
yarn cache clean
|
||||
|
||||
FROM build_deps as build
|
||||
|
||||
COPY --link lit-localize.json \
|
||||
postcss.config.js \
|
||||
tailwind.config.js \
|
||||
@ -36,16 +34,16 @@ ENV GIT_COMMIT_HASH=${GIT_COMMIT_HASH} \
|
||||
VERSION=${VERSION} \
|
||||
RWP_BASE_URL=${RWP_BASE_URL}
|
||||
|
||||
# Prevent Docker caching node_modules
|
||||
# Prevent Docker image including node_modules to save space
|
||||
RUN yarn build && \
|
||||
rm -rf ./node_modules
|
||||
rm -rf ./node_modules
|
||||
|
||||
FROM docker.io/library/nginx:1.23.2
|
||||
|
||||
ARG RWP_BASE_URL
|
||||
ENV RWP_BASE_URL=${RWP_BASE_URL}
|
||||
|
||||
COPY --link --from=build /app/dist /usr/share/nginx/html
|
||||
COPY --link --from=build_deps /app/dist /usr/share/nginx/html
|
||||
|
||||
#COPY ./nginx.conf /etc/nginx/nginx.conf
|
||||
COPY --link ./frontend.conf.template /etc/nginx/templates/
|
||||
|
@ -73,21 +73,23 @@
|
||||
"localize:build": "lit-localize build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@esm-bundle/chai": "^4.3.4-fix.0",
|
||||
"@lit/localize-tools": "^0.6.9",
|
||||
"@open-wc/testing": "^3.2.0",
|
||||
"@playwright/test": "1.32.1",
|
||||
"@web/dev-server-esbuild": "^0.3.3",
|
||||
"@web/dev-server-import-maps": "^0.0.6",
|
||||
"@web/dev-server-rollup": "^0.3.21",
|
||||
"@web/test-runner": "^0.13.22",
|
||||
"@web/test-runner-playwright": "^0.8.8",
|
||||
"chromium": "^3.0.3",
|
||||
"husky": "^8.0.3",
|
||||
"lint-staged": "^13.1.0",
|
||||
"sinon": "^12.0.1",
|
||||
"webpack-dev-server": "^4.3.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esm-bundle/chai": "^4.3.4-fix.0",
|
||||
"@open-wc/testing": "^3.2.0",
|
||||
"@playwright/test": "1.32.1",
|
||||
"@web/test-runner": "^0.13.22",
|
||||
"@web/test-runner-playwright": "^0.8.8",
|
||||
"chromium": "^3.0.3"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"env": {
|
||||
|
Loading…
Reference in New Issue
Block a user