Skip to content

Commit be3f562

Browse files
committed
feat: replace yarn with pnpm
Refs: KK-1513
1 parent 836e40d commit be3f562

17 files changed

Lines changed: 15566 additions & 13125 deletions

.env

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
VITE_ORIGIN=
22
VITE_API_URI=
33
VITE_CMS_URI=
4-
VITE_APPLICATION_NAME=$npm_package_name
54
VITE_ELIGIBLE_CITIES=helsinki,helsingfors
65
VITE_OIDC_AUTHORITY=
76
VITE_OIDC_CLIENT_ID="kukkuu-ui-dev"
@@ -10,7 +9,6 @@ VITE_OIDC_SCOPE="openid profile kukkuu-ui-dev"
109
VITE_OIDC_RETURN_TYPE="code"
1110
VITE_OIDC_SERVER_TYPE=KEYCLOAK
1211
VITE_OIDC_AUDIENCES=
13-
VITE_VERSION=$npm_package_version
1412
VITE_FEATURE_FLAG_SHOW_CORONAVIRUS_INFO=false
1513
VITE_ADMIN_TICKET_VALIDATION_URL=https://kukkuu-admin.test.hel.ninja/check-ticket-validity
1614
BROWSER_TESTS_ENV_URL=http://localhost:3000

.env.development

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ VITE_MATOMO_SRC_URL=https://webanalytics.digiaiiris.com/js/piwik.min.js
1818
VITE_MATOMO_TRACKER_URL=https://webanalytics.digiaiiris.com/js/tracker.php
1919
VITE_MATOMO_ENABLED=0
2020
VITE_IDLE_TIMEOUT_IN_MS=3600000
21+
VITE_CSP_REPORT_URI=

.env.test

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
VITE_ORIGIN=http://localhost:3000
22
VITE_CMS_URI=https://kukkuu.app-staging.hkih.hion.dev/graphql
33
VITE_API_URI=http://localhost:8081/graphql
4-
VITE_APPLICATION_NAME=$npm_package_name
54
VITE_ELIGIBLE_CITIES=helsinki,helsingfors
65
VITE_OIDC_AUTHORITY=https://tunnistus.test.hel.ninja/auth/realms/helsinki-tunnistus/
76
VITE_OIDC_AUTOMATIC_SILENT_RENEW_ENABLED=0
@@ -12,7 +11,6 @@ VITE_OIDC_SCOPE="openid profile kukkuu-ui-dev"
1211
VITE_OIDC_RETURN_TYPE="code"
1312
VITE_OIDC_SERVER_TYPE=TUNNISTAMO
1413
VITE_OIDC_AUDIENCES=
15-
VITE_VERSION=$npm_package_version
1614
VITE_FEATURE_FLAG_SHOW_CORONAVIRUS_INFO=false
1715
VITE_ADMIN_TICKET_VALIDATION_URL=https://kukkuu-admin.test.hel.ninja/check-ticket-validity
1816
BROWSER_TESTS_ENV_URL=http://localhost:3000

.github/workflows/ci.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ name: CI
22

33
on:
44
push:
5-
branches: [ main ]
5+
branches: [main]
66
pull_request:
7-
branches: [ main ]
7+
branches: [main]
88
workflow_dispatch:
99

1010
jobs:
1111
common:
12-
uses: City-of-Helsinki/.github/.github/workflows/ci-node.yml@main
13-
secrets: inherit
12+
uses: City-of-Helsinki/.github/.github/workflows/ci-pnpm-node.yml@main
13+
secrets:
14+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
1415
with:
15-
node-version: 22
16+
node-version: 24.x

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,14 @@
2121
kukkuu-ui.iml
2222

2323
npm-debug.log*
24+
.eslintcache
25+
26+
# yarn – not used anymore
27+
yarn.lock
28+
.yarn/
29+
.yarnrc.yml
2430
yarn-debug.log*
2531
yarn-error.log*
26-
.eslintcache
2732

2833
xeno
2934

.husky/pre-commit

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
yarn doctoc .
2-
yarn lint-staged --relative
1+
pnpm doctoc .
2+
pnpm lint-staged --relative

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v22.13.1
1+
v24.15.0

.prod/nginx.conf.template

Lines changed: 0 additions & 51 deletions
This file was deleted.

Dockerfile

Lines changed: 66 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,28 @@
1-
# ===============================================
2-
FROM registry.access.redhat.com/ubi9/nodejs-22 AS appbase
3-
# ===============================================
4-
# install yarn
5-
USER root
6-
RUN curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
7-
RUN yum -y install yarn
8-
1+
# ============================================================
2+
# STAGE 1: Build the Static Assets
3+
# ============================================================
4+
FROM helsinki.azurecr.io/ubi9/nodejs-24-pnpm-builder-base AS appbase
95
WORKDIR /app
106

11-
# Offical image has npm log verbosity as info. More info - https://github.com/nodejs/docker-node#verbosity
12-
ENV NPM_CONFIG_LOGLEVEL warn
13-
14-
# set our node environment, either development or production
15-
# defaults to production, compose overrides this to development on build and run
16-
ARG NODE_ENV=production
17-
ENV NODE_ENV $NODE_ENV
18-
19-
# Global npm deps in a non-root user directory
20-
ENV NPM_CONFIG_PREFIX=/app/.npm-global
21-
ENV PATH=$PATH:/app/.npm-global/bin
22-
23-
# Yarn
24-
ENV YARN_VERSION 1.22.22
25-
RUN yarn policies set-version ${YARN_VERSION}
7+
# 1. Copy needed files for build
8+
COPY --chown=default:root package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.json tsconfig.node.json ./
9+
COPY --chown=default:root ./public ./public
2610

27-
# Copy package.json and package-lock.json/yarn.lock files
28-
COPY --chown=root:root package*.json *yarn* ./
11+
# 2. Run the install
12+
# corepack in the base image will automatically use the version of pnpm
13+
# defined in your package.json 'packageManager' field if present.
14+
RUN pnpm install --frozen-lockfile --ignore-scripts && pnpm store prune
2915

30-
# Install npm depepndencies
31-
ENV PATH /app/node_modules/.bin:$PATH
16+
# 3. Copy remaining source files
17+
COPY --chown=default:root index.html vite.config.ts eslint.config.js .prettierrc.json .env* ./
18+
COPY --chown=default:root ./src ./src
3219

33-
RUN yarn install --frozen-lockfile --ignore-scripts && yarn cache clean --force
3420

35-
# =============================
21+
# ============================================================
22+
# STAGE 2: Development
23+
# ============================================================
3624
FROM appbase AS development
37-
# =============================
25+
WORKDIR /app
3826

3927
# Set NODE_ENV to development in the development container
4028
ARG NODE_ENV=development
@@ -47,83 +35,76 @@ ENV NODE_ENV $NODE_ENV
4735
ARG CHOKIDAR_USEPOLLING=true
4836
ENV CHOKIDAR_USEPOLLING=${CHOKIDAR_USEPOLLING}
4937

50-
# copy in our source code last, as it changes the most
51-
COPY --chown=root:root . .
38+
# Expose port and start development server
39+
EXPOSE 8080
40+
CMD pnpm exec vite --port 8080 --no-open --host
5241

53-
# Bake package.json start command into the image
54-
CMD ["yarn", "start", "--no-open", "--host"]
5542

56-
# ===================================
43+
# ============================================================
44+
# STAGE 3: Static builder for production
45+
# ============================================================
5746
FROM appbase AS staticbuilder
58-
# ===================================
5947

48+
# Accept Vite build-time variables from CI/CD docker --build-arg values.
49+
ARG VITE_ENVIRONMENT
6050
ARG VITE_ORIGIN
61-
ARG VITE_ADMIN_TICKET_VALIDATION_URL
6251
ARG VITE_API_URI
6352
ARG VITE_CMS_URI
64-
ARG VITE_ENVIRONMENT
65-
ARG VITE_OIDC_SERVER_TYPE
66-
ARG VITE_OIDC_RETURN_TYPE
53+
ARG VITE_APPLICATION_NAME
54+
ARG VITE_VERSION
55+
ARG VITE_ELIGIBLE_CITIES
6756
ARG VITE_OIDC_AUTHORITY
6857
ARG VITE_OIDC_CLIENT_ID
6958
ARG VITE_OIDC_KUKKUU_API_CLIENT_ID
7059
ARG VITE_OIDC_SCOPE
60+
ARG VITE_OIDC_RETURN_TYPE
61+
ARG VITE_OIDC_SERVER_TYPE
62+
ARG VITE_OIDC_AUDIENCES
7163
ARG VITE_OIDC_AUTOMATIC_SILENT_RENEW_ENABLED
7264
ARG VITE_OIDC_SESSION_POLLING_INTERVAL_MS
73-
ARG VITE_OIDC_AUDIENCES
74-
ARG VITE_FEATURE_FLAG_SHOW_CORONAVIRUS_INFO
75-
ARG VITE_SENTRY_ENVIRONMENT
76-
ARG VITE_SENTRY_DSN
77-
ARG VITE_SENTRY_TRACES_SAMPLE_RATE
78-
ARG VITE_SENTRY_TRACE_PROPAGATION_TARGETS
79-
ARG VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE
80-
ARG VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE
81-
ARG VITE_CSP_REPORT_URI
82-
ARG VITE_BUILDTIME
83-
ARG VITE_SENTRY_RELEASE
84-
ARG VITE_COMMITHASH
65+
ARG VITE_IDLE_TIMEOUT_IN_MS
8566
ARG VITE_HELSINKI_PROFILE_URL
8667
ARG VITE_MATOMO_URL_BASE
8768
ARG VITE_MATOMO_SITE_ID
8869
ARG VITE_MATOMO_SRC_URL
89-
ARG VITE_MATOMO_TRACKER_URL
9070
ARG VITE_MATOMO_ENABLED
91-
ARG VITE_IDLE_TIMEOUT_IN_MS
71+
ARG VITE_APOLLO_PERSISTED_CACHE_TIME_TO_LIVE_MS
9272
ARG VITE_ENROLMENT_CANCELLATION_TIME_LIMIT_HOURS
73+
ARG VITE_FEATURE_FLAG_SHOW_CORONAVIRUS_INFO
74+
ARG VITE_ADMIN_TICKET_VALIDATION_URL
75+
ARG VITE_SENTRY_DSN
76+
ARG VITE_SENTRY_ENVIRONMENT
77+
ARG VITE_SENTRY_RELEASE
78+
ARG VITE_SENTRY_TRACES_SAMPLE_RATE
79+
ARG VITE_SENTRY_TRACE_PROPAGATION_TARGETS
80+
ARG VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE
81+
ARG VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE
9382

94-
# Use template and inject the environment variables into .prod/nginx.conf
95-
ENV VITE_CSP_REPORT_URI=${VITE_CSP_REPORT_URI:-""}
96-
ENV VITE_BUILDTIME=${VITE_BUILDTIME:-""}
97-
ENV VITE_RELEASE=${VITE_SENTRY_RELEASE:-""}
98-
ENV VITE_COMMITHASH=${VITE_COMMITHASH:-""}
99-
COPY .prod/nginx.conf.template /tmp/.prod/nginx.conf.template
100-
RUN export APP_VERSION=$(yarn --silent app:version) && \
101-
envsubst '${APP_VERSION},${VITE_BUILDTIME},${VITE_RELEASE},${VITE_COMMITHASH}' < \
102-
"/tmp/.prod/nginx.conf.template" > \
103-
"/tmp/.prod/nginx.conf"
104-
105-
COPY . /app
106-
RUN yarn build
107-
108-
# =============================
109-
FROM registry.access.redhat.com/ubi9/nginx-122 AS production
110-
# =============================
111-
# Add application sources to a directory that the assemble script expects them
112-
# and set permissions so that the container runs without root access
113-
USER root
114-
115-
RUN chgrp -R 0 /usr/share/nginx/html && \
116-
chmod -R g=u /usr/share/nginx/html
117-
118-
# Copy static build
83+
# Perform the build
84+
ARG REACT_APP_SENTRY_RELEASE
85+
RUN pnpm build
86+
87+
88+
# ============================================================
89+
# STAGE 4: Production Runtime
90+
# ============================================================
91+
FROM helsinki.azurecr.io/ubi10/nginx-126-spa-standard AS production
92+
93+
ARG REACT_APP_SENTRY_RELEASE
94+
ENV APP_RELEASE=${REACT_APP_SENTRY_RELEASE:-""}
95+
# 1. Copy the compiled assets
11996
COPY --from=staticbuilder /app/build /usr/share/nginx/html
120-
# Copy nginx config
121-
COPY --from=staticbuilder /tmp/.prod/nginx.conf /etc/nginx/nginx.conf
12297

123-
USER 1001
98+
# 2. Setup Runtime Env Injection
99+
# env.sh is provided by the base image
100+
WORKDIR /usr/share/nginx/html
101+
COPY .env .
124102

125-
# Run script uses standard ways to run the application
126-
CMD ["/bin/bash", "-c", "nginx -g \"daemon off;\""]
103+
# 3. Inject Versioning for the /readiness endpoint from package.json using base image
104+
COPY package.json .
127105

128-
EXPOSE 8080
106+
# - env.sh (Inherited from base image at /usr/share/nginx/html/env.sh)
107+
# - USER 1001 (Inherited from base image)
108+
# - EXPOSE 8080 (Inherited from base image)
109+
# - ENTRYPOINT/CMD (Inherited from base image)
129110

0 commit comments

Comments
 (0)