Skip to content

Commit d128b0e

Browse files
committed
feat: Implement file change detection for backend and frontend in deployment workflow
1 parent ab857ed commit d128b0e

1 file changed

Lines changed: 39 additions & 3 deletions

File tree

.github/workflows/deploy-tailscale.yml

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,36 @@ env:
1313
DEPLOY_DIR: /opt/banktracker/BankTrackerGraphQL
1414

1515
jobs:
16-
wait-for-images:
17-
name: Wait for Container Images
16+
detect-changes:
17+
name: Detect Changed Files
1818
runs-on: ubuntu-latest
19+
outputs:
20+
backend: ${{ steps.filter.outputs.backend }}
21+
frontend: ${{ steps.filter.outputs.frontend }}
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: Check for file changes
27+
uses: dorny/paths-filter@v3
28+
id: filter
29+
with:
30+
filters: |
31+
backend:
32+
- 'PhantomDave.BankTracking.Api/**'
33+
- 'PhantomDave.BankTracking.Data/**'
34+
- 'PhantomDave.BankTracking.Library/**'
35+
- 'Dockerfile'
36+
- '.github/workflows/build-backend-image.yml'
37+
frontend:
38+
- 'frontend/**'
39+
- '.github/workflows/build-frontend-image.yml'
40+
41+
wait-for-backend:
42+
name: Wait for Backend Image
43+
runs-on: ubuntu-latest
44+
needs: detect-changes
45+
if: needs.detect-changes.outputs.backend == 'true'
1946
permissions:
2047
actions: read
2148
steps:
@@ -27,6 +54,14 @@ jobs:
2754
repo-token: ${{ secrets.GITHUB_TOKEN }}
2855
wait-interval: 10
2956

57+
wait-for-frontend:
58+
name: Wait for Frontend Image
59+
runs-on: ubuntu-latest
60+
needs: detect-changes
61+
if: needs.detect-changes.outputs.frontend == 'true'
62+
permissions:
63+
actions: read
64+
steps:
3065
- name: Wait for frontend image build
3166
uses: lewagon/wait-on-check-action@v1.3.4
3267
with:
@@ -38,7 +73,8 @@ jobs:
3873
deploy:
3974
name: Deploy to Production
4075
runs-on: ubuntu-latest
41-
needs: wait-for-images
76+
needs: [detect-changes, wait-for-backend, wait-for-frontend]
77+
if: always() && !cancelled() && !contains(needs.*.result, 'failure')
4278
permissions:
4379
contents: read
4480
packages: read

0 commit comments

Comments
 (0)