-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (110 loc) · 3.23 KB
/
ci.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
131
name: App CI
on:
push:
# Run on all branches and tag names
branches:
- "**"
# Run only if files modified are not docs
paths-ignore:
- "*.md"
pull_request:
# Run on all branches
branches:
- "*"
# Run only if files modified are not docs
paths-ignore:
- "*.md"
jobs:
buildAndTest:
name: Build & Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Workaround for checkout/issues/1169
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: 🏗 Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
- name: 🗂️ Install dependencies
run: npm i
- name: 🔨 Build
run: npm run build:ci
- name: 🧪 Test
run: npm run test:ci
# Upload dist artifacts
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
# Upload coverage artifacts
- uses: actions/upload-artifact@v4
with:
name: coverage
path: ./coverage/coverage-final.json
coverage:
name: Coverage Analysis
needs: buildAndTest
runs-on: ubuntu-latest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
# Download coverage artifacts
- uses: actions/download-artifact@v4
with:
name: coverage
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
# - name: Debug Environment Variables
# run: env
- name: Workaround for codecov/feedback#263
run: |
git config --global --add safe.directory $GITHUB_WORKSPACE
- name: Confirm Config Updated with Workaround
run: git config safe.directory
- name: 📈 Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
deploy:
name: Deploy
# Deploy only for main branch
if: github.ref == 'refs/heads/main'
needs: buildAndTest
runs-on: ubuntu-latest
permissions:
contents: write
# Manual deployment
# See https://devblogs.microsoft.com/devops/i-need-manual-approvers-for-github-actions-and-i-got-them-now/
environment:
name: prod
url: https://dcpesses.github.io/vite-react-ts-gh/
steps:
# Download dist artifacts
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Set current date as env variable
run: echo "NOW=$(TZ=America/Los_Angeles date +'%F %T %Z')" >> $GITHUB_ENV
- name: Debug current date
run: echo "${{ env.NOW }}" # Gives "2024-02-16 16:53:32 PST"
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v3
with:
find: "DATE_TIME"
replace: "${{ env.NOW }}"
regex: false
include: "**index.html"
- name: 🚀 Deploy to GitHub Pages
uses: peaceiris/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: dist