-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (123 loc) · 3.67 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
132
name: Node CI
on:
push:
branches:
- master
pull_request:
branches:
- master
# Allows users to trigger jobs manually in GitHub UI
workflow_dispatch:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Current Branch
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install Dependencies
run: npm ci
- name: Debug Branches
run: npm run list-changed
- name: Validate all commits from PR
if: ${{ github.event_name == 'pull_request' }}
run: npx commitlint --from origin/master --verbose
- name: Lint PR
# For PRs, run lint only on the changed files
if: ${{ github.event_name == 'pull_request' }}
run: npm run lint-pr
- name: Lint Repo
# For pushes directly to master, run lint on the whole repo
if: ${{ github.event_name == 'push' }}
run: npm run lint
- name: Typecheck PR
if: ${{ github.event_name == 'pull_request' }}
run: npm run typecheck-pr
- name: Typecheck Repo
if: ${{ github.event_name == 'push' }}
run: npm run typecheck
test:
runs-on: ubuntu-latest
needs: lint
strategy:
fail-fast: false
matrix:
node-version:
- lts/*
- lts/-1
steps:
- name: Checkout Current Branch
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: 'true'
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Install Dependencies
run: npm ci
- name: Test PR
if: ${{ github.event_name == 'pull_request' }}
run: npm run test-pr # we don't have anything that warrants a JUnit test file yet
- name: Test Repo
if: ${{ github.event_name == 'push' }}
run: npm test
release:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/master' && github.event_name != 'workflow_dispatch'
steps:
- name: Checkout Current Branch
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Git User
run: |
git config user.email "lerna@janejeon.com"
git config user.name "Lerna"
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
registry-url: https://registry.npmjs.org # need to set this for NODE_AUTH_TOKEN
- name: Install Dependencies
run: npm ci
- name: Publish
run: npx lerna publish --yes
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
retry-release:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && github.event_name == 'workflow_dispatch'
steps:
- name: Checkout Current Branch
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Git User
run: |
git config user.email "lerna@janejeon.com"
git config user.name "Lerna"
- name: Use Node.js LTS
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
registry-url: https://registry.npmjs.org
- name: Install Dependencies
run: npm ci
- name: Retry Publish
run: npx lerna publish from-package --yes
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}