-
Notifications
You must be signed in to change notification settings - Fork 0
138 lines (118 loc) · 3.3 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
131
132
133
134
135
136
137
138
name: Deployment
on:
push:
branches: [main]
paths-ignore:
- .gitignore
- LICENSE
- README.md
- .github/dependabot.yml
- .github/workflows/ci.yml
- .github/workflows/bump.yml
env:
node_version: "20.x"
jobs:
env:
name: Set Env Vars
runs-on: ubuntu-latest
steps:
- name: Set Env Vars
run: |
matrix='{
"registry":[
{
"token":"NPM_TOKEN",
"url":"https://registry.npmjs.org"
},
{
"token":"GITHUB_TOKEN",
"url":"https://npm.pkg.github.com"
}
]
}'
echo matrix=`echo $matrix | jq -c .` >> $GITHUB_ENV
outputs:
matrix: ${{ env.matrix }}
test:
name: Test Module
runs-on: ubuntu-latest
strategy:
matrix:
node_index: [0, 1]
total_nodes: [2]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.node_version }}
- name: npm install
run: npm install
- name: npm test
run: npm run coverage
env:
CI_NODE_INDEX: ${{ matrix.node_index }}
CI_NODE_TOTAL: ${{ matrix.total_nodes }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
lint:
name: Lint Module
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.node_version }}
- name: npm install
run: npm install
- name: npm lint
run: npm run lint
publish:
needs: [env, test, lint] # Wait for checks to finish before publishing
name: Publish node package
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.env.outputs.matrix) }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Disallow Concurrent Runs
uses: byu-oit/github-action-disallow-concurrent-runs@v2
with:
token: ${{ github.token }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.node_version }}
registry-url: ${{ matrix.registry.url }}
scope: '@byu-oit'
- name: npm install
run: npm install
env:
NODE_AUTH_TOKEN: ${{ secrets[matrix.registry.token] }}
# The prepublishOnly script builds the package before publishing
- name: Publish
run: npm publish --access=public
env:
NODE_AUTH_TOKEN: ${{ secrets[matrix.registry.token] }}
# https://github.com/marketplace/actions/release-drafter
release:
name: Publish Release
runs-on: ubuntu-latest
needs: [publish]
steps:
- uses: actions/checkout@v4
- id: version
run: echo ::set-output name=version::$(node -p 'require("./package.json").version')
- name: Publish Release
uses: release-drafter/release-drafter@v6
with:
publish: true
version: ${{ steps.version.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}