-
Notifications
You must be signed in to change notification settings - Fork 0
87 lines (79 loc) · 2.82 KB
/
Copy pathdeploy.yml
File metadata and controls
87 lines (79 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
name: Build and Deploy
on:
push:
branches: [main]
workflow_dispatch:
inputs:
no_cache:
description: '빌드 캐시 무시 (secret 변경 시 체크)'
type: boolean
default: false
permissions:
contents: read
packages: write
jobs:
resolve:
runs-on: ubuntu-latest
outputs:
frontend: ${{ steps.out.outputs.frontend }}
backend: ${{ steps.out.outputs.backend }}
steps:
- uses: actions/checkout@v6
- id: filter
if: github.event_name == 'push'
uses: dorny/paths-filter@v4
with:
filters: |
frontend_only:
- 'frontend/**'
backend_only:
- 'backend/**'
- id: out
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "frontend=true" >> "$GITHUB_OUTPUT"
echo "backend=true" >> "$GITHUB_OUTPUT"
else
# 역필터: backend만 변경되면 frontend 스킵, frontend만 변경되면 backend 스킵
FE_ONLY="${{ steps.filter.outputs.frontend_only }}"
BE_ONLY="${{ steps.filter.outputs.backend_only }}"
echo "frontend=$( [ "$BE_ONLY" = 'true' ] && [ "$FE_ONLY" = 'false' ] && echo false || echo true )" >> "$GITHUB_OUTPUT"
echo "backend=$( [ "$FE_ONLY" = 'true' ] && [ "$BE_ONLY" = 'false' ] && echo false || echo true )" >> "$GITHUB_OUTPUT"
fi
build-frontend:
needs: resolve
if: needs.resolve.outputs.frontend == 'true'
uses: ./.github/workflows/_build-image.yml
with:
component: frontend
dockerfile: ./frontend/Dockerfile
image: ${{ github.repository_owner }}/greedyreader-fe
version: ${{ github.run_number }}
no_cache: ${{ inputs.no_cache || false }}
secrets:
BUILD_ENV: ${{ secrets.FRONTEND_ENV }}
build-backend:
needs: resolve
if: needs.resolve.outputs.backend == 'true'
uses: ./.github/workflows/_build-image.yml
with:
component: backend
dockerfile: ./backend/Dockerfile
image: ${{ github.repository_owner }}/greedyreader-be
version: ${{ github.run_number }}
no_cache: ${{ inputs.no_cache || false }}
deploy:
needs: [resolve, build-frontend, build-backend]
if: |
always() &&
!cancelled() &&
needs.resolve.result == 'success' &&
needs.build-frontend.result != 'failure' &&
needs.build-backend.result != 'failure' &&
(needs.resolve.outputs.frontend == 'true' || needs.resolve.outputs.backend == 'true')
uses: ./.github/workflows/_deploy-compose.yml
with:
frontend_tag: ${{ needs.resolve.outputs.frontend == 'true' && github.run_number || 'latest' }}
backend_tag: ${{ needs.resolve.outputs.backend == 'true' && github.run_number || 'latest' }}
secrets:
BACKEND_ENV: ${{ secrets.BACKEND_ENV }}