-
Notifications
You must be signed in to change notification settings - Fork 15
130 lines (109 loc) · 3.14 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
name: CI
on:
pull_request:
push:
branches:
- main
tags:
- v*
paths-ignore:
- '**/*.md'
jobs:
build:
name: Build, Lint and Test
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
- name: Use Node.js LTS 18.x
uses: actions/setup-node@v3
with:
node-version: 18
check-latest: true
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
if: always()
run: npx nx lint nx-stylelint
- name: Test
if: always()
run: npx nx test nx-stylelint
- name: Build
if: always()
run: npx nx build nx-stylelint
e2e:
name: E2E Matrix - ${{ matrix.os }} (Node ${{ matrix.node-version }})
runs-on: ${{ matrix.os }}
needs: build
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
node-version:
- 16
- 18
fail-fast: false
steps:
- name: Checkout Repository
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
check-latest: true
cache: npm
- name: Install dependencies
run: npm ci
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3
- name: E2E
run: npx nx affected --target=e2e --skip-nx-cache
publish:
name: Publish to NPM
runs-on: ubuntu-latest
needs: [build, e2e]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
env:
IS_BETA_RELEASE: ${{ contains(github.ref_name, 'beta') }}
permissions:
contents: write
steps:
- name: Git checkout
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
- name: Use Node.js LTS 16.x
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org
check-latest: true
cache: npm
- name: Install dependencies
run: npm ci
- name: Build
run: npx nx build nx-stylelint
- name: Publish to NPM
if: env.IS_BETA_RELEASE == 'false'
run: |
cd dist/packages/nx-stylelint/
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish Beta to NPM
if: env.IS_BETA_RELEASE == 'true'
run: |
cd dist/packages/nx-stylelint/
npm publish --access public --tag beta
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Extract Changelog for Release
run: npx -y extract-changelog-release > RELEASE-BODY.md
- name: Create Github Release
uses: softprops/action-gh-release@v1
with:
body_path: RELEASE-BODY.md
prerelease: ${{ env.IS_BETA_RELEASE == 'true' }}