Skip to content

Commit 4f444fa

Browse files
committed
Apply option 2 #1458
1 parent 39515fd commit 4f444fa

File tree

1 file changed

+44
-30
lines changed

1 file changed

+44
-30
lines changed

.github/workflows/ci-build.yml

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,45 @@ on:
2323
- develop
2424

2525
jobs:
26+
detect_changes:
27+
runs-on: ubuntu-latest
28+
outputs:
29+
only_docs_changed: ${{ steps.filter.outputs.only_docs }}
30+
steps:
31+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
32+
with:
33+
fetch-depth: 0
34+
35+
- name: Set base ref
36+
run: echo "BASE_REF=${{ github.base_ref || 'develop' }}" >> $GITHUB_ENV
37+
38+
- name: Fetch base branch
39+
run: git fetch origin $BASE_REF
40+
41+
- name: Get changed files
42+
id: changed
43+
run: |
44+
BASE=$(git merge-base HEAD origin/develop)
45+
echo "Merge base is $BASE"
46+
git diff --name-only $BASE HEAD > changed.txt
47+
cat changed.txt
48+
49+
- name: Check unit tests should run
50+
id: filter
51+
run: |
52+
if grep -vE '^(server/|cypress/|cypress\.config\.ts|README\.md|\.github/workflows/ci-build\.yml|renovate\.json|LICENSE|\.prettierrc|\.github/workflows/release-build\.yml|\.github/PULL_REQUEST_TEMPLATE\.md|public/robots\.txt)' changed.txt | grep .; then
53+
echo "only_docs=true" >> $GITHUB_OUTPUT
54+
echo "changes"
55+
else
56+
echo "only_docs=false" >> $GITHUB_OUTPUT
57+
echo "no change"
58+
fi
59+
2660
lint-and-unit-test:
2761
name: Lint & Unit Tests
2862
runs-on: ubuntu-latest
29-
63+
needs: detect_changes
64+
if: needs.detect_changes.outputs.only_docs_changed != 'false'
3065
steps:
3166
- name: Checkout repo
3267
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -113,10 +148,10 @@ jobs:
113148
mv -v inventory-management-system/* inventory-management-system-api/
114149
cd inventory-management-system-api/
115150
116-
- name: Start MongoDB (For inventory-management-system-api)
151+
- name: Setup MongoDB (For inventory-management-system-api)
117152
working-directory: ../inventory-management-system-api
118153
run: |
119-
docker compose up --detach mongo-db
154+
python ./scripts/dev_cli.py --ci db-init --replicaSetMemberHost localhost
120155
121156
# Use docker run here to test the actual built image
122157
# Use same network as the MongoDB instance (which is generated by docker compose based on the folder
@@ -136,18 +171,16 @@ jobs:
136171
--env API__ALLOWED_CORS_HEADERS='["*"]' \
137172
--env API__ALLOWED_CORS_ORIGINS='["*"]' \
138173
--env API__ALLOWED_CORS_METHODS='["*"]' \
139-
--env OBJECT_STORAGE__ENABLED=true \
174+
--env OBJECT_STORAGE__ENABLED=false \
140175
--env OBJECT_STORAGE__API_REQUEST_TIMEOUT_SECONDS=10 \
141176
--env OBJECT_STORAGE__API_URL=http://localhost:8002 \
142-
--volume /home/runner/work/inventory-management-system/inventory-management-system-api/logging.example.ini:/app/logging.ini \
143177
harbor.stfc.ac.uk/inventory-management-system/ims-api:develop
144178
145179
- name: Clone Object Storage api repo
146180
uses: actions/checkout@cbb722410c2e876e24abbe8de2cc27693e501dcb
147181
with:
148182
repository: ral-facilities/object-storage-api
149183
ref: develop
150-
path: object-storage-api
151184

152185
- name: Move Object Storage api repo
153186
run: |
@@ -169,16 +202,15 @@ jobs:
169202
170203
- name: Start object-storage-api
171204
run: |
172-
docker run -d -p 8002:8000 \
205+
docker run -d --network=host \
173206
--name object_storage_api_container \
174-
--network object-storage-api_default \
175207
--env AUTHENTICATION__ENABLED=false \
176208
--env API__TITLE="Object Storage Service API" \
177209
--env API__DESCRIPTION="This is the API for the Object Storage Service" \
178210
--env DATABASE__PROTOCOL="mongodb" \
179211
--env DATABASE__USERNAME="root" \
180212
--env DATABASE__PASSWORD="example" \
181-
--env DATABASE__HOST_AND_OPTIONS="object-storage-api-mongodb:27017" \
213+
--env DATABASE__HOST_AND_OPTIONS="localhost:27018/?authMechanism=SCRAM-SHA-256&authSource=admin" \
182214
--env DATABASE__NAME="object-storage" \
183215
--env API__ALLOWED_CORS_HEADERS='["*"]' \
184216
--env API__ALLOWED_CORS_ORIGINS='["*"]' \
@@ -190,12 +222,6 @@ jobs:
190222
--env OBJECT_STORAGE__PRESIGNED_URL_EXPIRY_SECONDS=1800 \
191223
--env ATTACHMENT__MAX_SIZE_BYTES=104857600 \
192224
--env IMAGE__THUMBNAIL_MAX_SIZE_PIXELS=300 \
193-
--env ATTACHMENT__ALLOWED_FILE_EXTENSIONS='[".csv", ".doc", ".docx", ".ods", ".odt", ".rtf", ".pdf", ".txt", ".xls", ".xlsx"]' \
194-
--env ATTACHMENT__UPLOAD_LIMIT=50 \
195-
--env IMAGE__ALLOWED_FILE_EXTENSIONS='[".bmp", ".jpe", ".jpeg", ".jpg", ".png", ".tif", ".tiff", ".webp"]' \
196-
--env IMAGE__UPLOAD_LIMIT=100 \
197-
--add-host "localhost:host-gateway" \
198-
--volume /home/runner/work/inventory-management-system/object-storage-api/logging.example.ini:/app/logging.ini \
199225
harbor.stfc.ac.uk/scd-object-storage-api/object-storage-api:develop
200226
201227
- name: Checkout repo
@@ -214,26 +240,14 @@ jobs:
214240
- name: Run e2e tests
215241
run: yarn e2e:api
216242

217-
- name: Output docker logs (ims mongodb)
243+
- name: Output docker logs (mongodb)
218244
if: failure()
219-
run: docker logs ims-api-mongodb
245+
run: docker logs ims_api_mongodb_container
220246

221-
- name: Output docker logs (ims api)
247+
- name: Output docker logs (api)
222248
if: failure()
223249
run: docker logs inventory_management_system_api_container
224250

225-
- name: Output docker logs (object-storage mongodb)
226-
if: failure()
227-
run: docker logs object-storage-api-mongodb
228-
229-
- name: Output docker logs (object-storage minio)
230-
if: failure()
231-
run: docker logs object-storage-minio
232-
233-
- name: Output docker logs (object-storage api)
234-
if: failure()
235-
run: docker logs object_storage_api_container
236-
237251
- name: Upload Cypress screenshots
238252
if: failure()
239253
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4

0 commit comments

Comments
 (0)