Skip to content

Commit ab1abba

Browse files
authored
Merge pull request #2989 from booklore-app/develop
Merge develop into master for the release
2 parents eb1ee1d + e3b0501 commit ab1abba

File tree

68 files changed

+2816
-689
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2816
-689
lines changed

.github/workflows/develop-pipeline.yml

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ jobs:
2929

3030
steps:
3131
- name: Checkout Repository
32-
uses: actions/checkout@v6
32+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
3333

3434
- name: Set Up JDK 25
35-
uses: actions/setup-java@v5
35+
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
3636
with:
3737
java-version: '25'
3838
distribution: 'temurin'
@@ -47,14 +47,14 @@ jobs:
4747
continue-on-error: true
4848

4949
- name: Publish Backend Test Results
50-
uses: EnricoMi/publish-unit-test-result-action@v2
50+
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
5151
if: always()
5252
with:
5353
files: booklore-api/build/test-results/**/*.xml
5454
check_name: Backend Test Results
5555

5656
- name: Upload Backend Test Reports
57-
uses: actions/upload-artifact@v6
57+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
5858
if: always()
5959
with:
6060
name: backend-test-reports
@@ -82,18 +82,27 @@ jobs:
8282

8383
steps:
8484
- name: Checkout Repository
85-
uses: actions/checkout@v6
85+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
8686

8787
- name: Set Up Node.js
88-
uses: actions/setup-node@v6
88+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
8989
with:
90-
node-version: '22'
90+
node-version: '24'
9191
cache: 'npm'
9292
cache-dependency-path: booklore-ui/package-lock.json
9393

9494
- name: Install Frontend Dependencies
9595
working-directory: ./booklore-ui
96-
run: npm ci --force
96+
run: npm ci
97+
98+
- name: Audit Frontend Dependencies
99+
working-directory: ./booklore-ui
100+
run: npm audit --audit-level=high
101+
102+
- name: Validate Dependency Tree
103+
working-directory: ./booklore-ui
104+
run: npm ls --depth=0
105+
97106

98107
- name: Execute Frontend Tests
99108
id: frontend_tests
@@ -104,14 +113,14 @@ jobs:
104113
continue-on-error: true
105114

106115
- name: Publish Frontend Test Results
107-
uses: EnricoMi/publish-unit-test-result-action@v2
116+
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
108117
if: always()
109118
with:
110119
files: booklore-ui/test-results/vitest-results.xml
111120
check_name: Frontend Test Results
112121

113122
- name: Upload Frontend Test Reports
114-
uses: actions/upload-artifact@v6
123+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
115124
if: always()
116125
with:
117126
name: frontend-test-reports
@@ -136,7 +145,7 @@ jobs:
136145

137146
steps:
138147
- name: Checkout Repository
139-
uses: actions/checkout@v6
148+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
140149
with:
141150
fetch-depth: 0
142151

@@ -161,15 +170,24 @@ jobs:
161170
# Native Angular build
162171
# ----------------------------------------
163172
- name: Set Up Node.js
164-
uses: actions/setup-node@v6
173+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
165174
with:
166-
node-version: '22'
175+
node-version: '24'
167176
cache: 'npm'
168177
cache-dependency-path: booklore-ui/package-lock.json
169178

170179
- name: Install Frontend Dependencies
171180
working-directory: ./booklore-ui
172-
run: npm ci --force
181+
run: npm ci
182+
183+
- name: Audit Frontend Dependencies
184+
working-directory: ./booklore-ui
185+
run: npm audit --audit-level=high
186+
187+
- name: Validate Dependency Tree
188+
working-directory: ./booklore-ui
189+
run: npm ls --depth=0
190+
173191

174192
- name: Build Angular App
175193
working-directory: ./booklore-ui
@@ -179,7 +197,7 @@ jobs:
179197
# Native Gradle build
180198
# ----------------------------------------
181199
- name: Set Up JDK 25
182-
uses: actions/setup-java@v5
200+
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
183201
with:
184202
java-version: '25'
185203
distribution: 'temurin'
@@ -204,24 +222,24 @@ jobs:
204222
# Environment setup
205223
# ----------------------------------------
206224
- name: Set Up QEMU for Multi-Arch Builds
207-
uses: docker/setup-qemu-action@v3
225+
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
208226

209227
- name: Set Up Docker Buildx
210-
uses: docker/setup-buildx-action@v3
228+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
211229

212230
# ----------------------------------------
213231
# Docker login (pushes & internal PRs only)
214232
# ----------------------------------------
215233
- name: Authenticate to Docker Hub
216234
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
217-
uses: docker/login-action@v3
235+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
218236
with:
219237
username: ${{ secrets.DOCKER_USERNAME }}
220238
password: ${{ secrets.DOCKER_PASSWORD }}
221239

222240
- name: Authenticate to GitHub Container Registry
223241
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
224-
uses: docker/login-action@v3
242+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
225243
with:
226244
registry: ghcr.io
227245
username: ${{ github.actor }}
@@ -232,7 +250,7 @@ jobs:
232250
# ----------------------------------------
233251
- name: Build and push Docker image
234252
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
235-
uses: docker/build-push-action@v6
253+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
236254
with:
237255
context: .
238256
file: Dockerfile.ci

.github/workflows/master-pipeline.yml

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
base_ref: ${{ steps.get_base.outputs.base_ref }}
1414
steps:
1515
- name: Checkout Repository
16-
uses: actions/checkout@v6
16+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
1717
with:
1818
fetch-depth: 2
1919
- name: Get Base Ref
@@ -41,10 +41,10 @@ jobs:
4141

4242
steps:
4343
- name: Checkout Repository
44-
uses: actions/checkout@v6
44+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
4545

4646
- name: Set Up JDK 25
47-
uses: actions/setup-java@v5
47+
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
4848
with:
4949
java-version: '25'
5050
distribution: 'temurin'
@@ -59,14 +59,14 @@ jobs:
5959
continue-on-error: true
6060

6161
- name: Publish Backend Test Results
62-
uses: EnricoMi/publish-unit-test-result-action@v2
62+
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
6363
if: always()
6464
with:
6565
files: booklore-api/build/test-results/**/*.xml
6666
check_name: Backend Test Results
6767

6868
- name: Upload Backend Test Reports
69-
uses: actions/upload-artifact@v6
69+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
7070
if: always()
7171
with:
7272
name: backend-test-reports
@@ -94,18 +94,27 @@ jobs:
9494

9595
steps:
9696
- name: Checkout Repository
97-
uses: actions/checkout@v6
97+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
9898

9999
- name: Set Up Node.js
100-
uses: actions/setup-node@v6
100+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
101101
with:
102-
node-version: '22'
102+
node-version: '24'
103103
cache: 'npm'
104104
cache-dependency-path: booklore-ui/package-lock.json
105105

106106
- name: Install Frontend Dependencies
107107
working-directory: ./booklore-ui
108-
run: npm ci --force
108+
run: npm ci
109+
110+
- name: Audit Frontend Dependencies
111+
working-directory: ./booklore-ui
112+
run: npm audit --audit-level=high
113+
114+
- name: Validate Dependency Tree
115+
working-directory: ./booklore-ui
116+
run: npm ls --depth=0
117+
109118

110119
- name: Execute Frontend Tests
111120
id: frontend_tests
@@ -116,14 +125,14 @@ jobs:
116125
continue-on-error: true
117126

118127
- name: Publish Frontend Test Results
119-
uses: EnricoMi/publish-unit-test-result-action@v2
128+
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2
120129
if: always()
121130
with:
122131
files: booklore-ui/test-results/vitest-results.xml
123132
check_name: Frontend Test Results
124133

125134
- name: Upload Frontend Test Reports
126-
uses: actions/upload-artifact@v6
135+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
127136
if: always()
128137
with:
129138
name: frontend-test-reports
@@ -148,28 +157,28 @@ jobs:
148157

149158
steps:
150159
- name: Checkout Repository
151-
uses: actions/checkout@v6
160+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
152161
with:
153162
fetch-depth: 0
154163

155164
- name: Authenticate to Docker Hub
156-
uses: docker/login-action@v3
165+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
157166
with:
158167
username: ${{ secrets.DOCKER_USERNAME }}
159168
password: ${{ secrets.DOCKER_PASSWORD }}
160169

161170
- name: Authenticate to GitHub Container Registry
162-
uses: docker/login-action@v3
171+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
163172
with:
164173
registry: ghcr.io
165174
username: ${{ github.actor }}
166175
password: ${{ github.token }}
167176

168177
- name: Set Up QEMU for Multi-Architecture Builds
169-
uses: docker/setup-qemu-action@v3
178+
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
170179

171180
- name: Set Up Docker Buildx
172-
uses: docker/setup-buildx-action@v3
181+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
173182

174183
- name: Retrieve Latest Master Version Tag
175184
id: get_version
@@ -238,15 +247,24 @@ jobs:
238247
# Native Angular build
239248
# ----------------------------------------
240249
- name: Set Up Node.js
241-
uses: actions/setup-node@v6
250+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
242251
with:
243-
node-version: '22'
252+
node-version: '24'
244253
cache: 'npm'
245254
cache-dependency-path: booklore-ui/package-lock.json
246255

247256
- name: Install Frontend Dependencies
248257
working-directory: ./booklore-ui
249-
run: npm ci --force
258+
run: npm ci
259+
260+
- name: Audit Frontend Dependencies
261+
working-directory: ./booklore-ui
262+
run: npm audit --audit-level=high
263+
264+
- name: Validate Dependency Tree
265+
working-directory: ./booklore-ui
266+
run: npm ls --depth=0
267+
250268

251269
- name: Build Angular App
252270
working-directory: ./booklore-ui
@@ -256,7 +274,7 @@ jobs:
256274
# Native Gradle build
257275
# ----------------------------------------
258276
- name: Set Up JDK 25
259-
uses: actions/setup-java@v5
277+
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
260278
with:
261279
java-version: '25'
262280
distribution: 'temurin'
@@ -281,7 +299,7 @@ jobs:
281299
# Docker build & push
282300
# ----------------------------------------
283301
- name: Build and push Docker image
284-
uses: docker/build-push-action@v6
302+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
285303
with:
286304
context: .
287305
file: Dockerfile.ci
@@ -303,7 +321,7 @@ jobs:
303321
type=registry,ref=ghcr.io/booklore-app/booklore:buildcache,mode=max
304322
305323
- name: Update GitHub Release Draft
306-
uses: release-drafter/release-drafter@v6
324+
uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97 # v6
307325
with:
308326
tag: ${{ env.new_tag }}
309327
name: "Release ${{ env.new_tag }}"

.github/workflows/migrations-check.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
has_migrations: ${{ steps.check_migrations.outputs.has_migrations }}
2525
steps:
2626
- name: Checkout Repository
27-
uses: actions/checkout@v6
27+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
2828
with:
2929
fetch-depth: 0
3030

@@ -61,7 +61,7 @@ jobs:
6161
6262
steps:
6363
- name: Checkout Base Branch
64-
uses: actions/checkout@v6
64+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
6565
with:
6666
ref: ${{ inputs.base_ref }}
6767
fetch-depth: 0
@@ -78,7 +78,7 @@ jobs:
7878
migrate
7979
8080
- name: Checkout Head Branch
81-
uses: actions/checkout@v6
81+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
8282
with:
8383
ref: ${{ inputs.head_ref }}
8484
fetch-depth: 0

Dockerfile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Stage 1: Build the Angular app
2-
FROM node:22-alpine AS angular-build
2+
FROM node:24-alpine AS angular-build
33

44
WORKDIR /angular-app
55

@@ -56,9 +56,13 @@ LABEL org.opencontainers.image.title="BookLore" \
5656

5757
ENV JAVA_TOOL_OPTIONS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -XX:+UseContainerSupport -XX:+UseCompactObjectHeaders -XX:MaxRAMPercentage=75.0"
5858

59-
RUN apk update && apk add --no-cache su-exec && \
59+
ARG TARGETARCH
60+
RUN apk update && apk add --no-cache su-exec libstdc++ libgcc && \
6061
mkdir -p /bookdrop
6162

63+
COPY docker/unrar/unrar-${TARGETARCH} /usr/local/bin/unrar
64+
RUN chmod 755 /usr/local/bin/unrar
65+
6266
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
6367
RUN chmod +x /usr/local/bin/entrypoint.sh
6468
COPY --from=springboot-build /springboot-app/build/libs/booklore-api-0.0.1-SNAPSHOT.jar /app/app.jar

0 commit comments

Comments
 (0)