2323 - develop
2424
2525jobs :
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