-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (130 loc) · 3.78 KB
/
deploy.yml
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Test and Build the Application
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
BRANCH_NAME: ${{ github.ref_name }}
permissions:
pull-requests: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20.11.1"
- name: Load & cache dependencies
uses: ./.github/actions/cached-deps
- name: Run the linter
run: npm run lint -- --max-warnings=0
test:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20.11.1"
- name: Load & cache dependencies
uses: ./.github/actions/cached-deps
- name: Run tests
run: npm test
build:
runs-on: ubuntu-latest
needs: test
environment: development
env:
VITE_CI: true
VITE_API_KEY: ${{vars.VITE_API_KEY}}
VITE_AUTH_DOMAIN: ${{vars.VITE_AUTH_DOMAIN}}
VITE_PROJECT_ID: ${{vars.VITE_PROJECT_ID}}
VITE_STORAGE_BUCKET: ${{vars.VITE_STORAGE_BUCKET}}
VITE_MESSAGING_SENDER_ID: ${{vars.VITE_MESSAGING_SENDER_ID}}
VITE_APP_ID: ${{vars.VITE_APP_ID}}
steps:
- name: Checkout the code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20.11.1"
- name: Load & cache dependencies
uses: ./.github/actions/cached-deps
id: chached-deps
- name: Build the application
run: npm run build
- name: Upload artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: dist-files
path: dist
deploy:
runs-on: ubuntu-latest
needs: build
outputs:
NETLIFY_PREVIEW_URL: ${{ steps.url_preview.outputs.NETLIFY_PREVIEW_URL }}
steps:
- name: Get build artifacts
uses: actions/download-artifact@v4
with:
name: dist-files
path: ./dist
- name: Output files
working-directory: ./dist
run: ls -l
- name: Install Netlify CLI
run: npm install -g netlify-cli
- name: Deploy to Netlify
run: |
prod_flag=""
if [ "$BRANCH_NAME" = "main" ]; then prod_flag="--prod"; fi
netlify deploy \
--dir dist \
--site ${{ secrets.NETLIFY_SITE_ID }} \
--auth ${{ secrets.NETLIFY_API_TOKEN }} \
$prod_flag \
--json \
> deploy_output.json
- name: Generate URL Preview
id: url_preview
if: ${{ env.BRANCH_NAME != 'main' }}
run: |
NETLIFY_PREVIEW_URL=$(jq -r '.deploy_url' deploy_output.json)
echo "NETLIFY_PREVIEW_URL=$NETLIFY_PREVIEW_URL" >> "$GITHUB_OUTPUT"
report:
runs-on: ubuntu-latest
needs: [lint, build]
if: failure()
steps:
- name: Output information
run: |
echo "Something went wrong!"
echo "${{ toJson(github)}}"
preview_url:
runs-on: ubuntu-latest
needs: deploy
if: ${{ github.ref_name != 'main' }}
steps:
- name: Output URL
run: echo ${{ needs.deploy.outputs.NETLIFY_PREVIEW_URL }}
- name: Comment URL Preview on PR
uses: actions/github-script@v7
env:
NETLIFY_PREVIEW_URL: ${{ needs.deploy.outputs.NETLIFY_PREVIEW_URL }}
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '🚀 Preview URL: ' + process.env.NETLIFY_PREVIEW_URL
})