-
Notifications
You must be signed in to change notification settings - Fork 2.1k
147 lines (124 loc) · 4.02 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: CI
env: {NODE_VERSION: 18}
on:
push: {branches: [main, 'feature.*']}
pull_request:
jobs:
static_analysis:
name: Static analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: {node-version: '${{ env.NODE_VERSION }}'}
- run: npm ci
- run: >
npm run tangle &&
npx gts lint &&
npx tsc --noEmit &&
npx markdownlint-cli2
toc:
name: Tables of contents
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: {node-version: '${{ env.NODE_VERSION }}'}
- run: npm ci
- run: npm run toc-check
link:
name: Link referents
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: {node-version: '${{ env.NODE_VERSION }}'}
- run: npm ci
- run: npm run link-check
js_api_mirroring:
name: JS API mirroring
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: {node-version: '${{ env.NODE_VERSION }}'}
- run: npm ci
- run: npm run js-api-doc-check
typedoc:
name: Typedoc build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: {node-version: '${{ env.NODE_VERSION }}'}
- run: npm ci
- run: npm run typedoc
protoc:
name: "Validate proto"
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-setup-action@v1.30.0
with: {github_token: "${{ github.token }}"}
- name: Generate protobuf code
run: buf generate
embedded_protocol_versions:
name: "Validate Embedded Protocol versions"
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: Check versions match
run: |
if ! (grep -q '\-dev$' spec/EMBEDDED_PROTOCOL_VERSION ||
[[ "$(head -n 1 EMBEDDED_PROTOCOL_CHANGELOG.md)" == \
"## $(cat spec/EMBEDDED_PROTOCOL_VERSION)" ]]); then
echo "spec/EMBEDDED_PROTOCOL_VERSION file doesn't match EMBEDDED_PROTOCOL_CHANGELOG version."
fi
embedded_protocol_tag:
name: "Tag Embedded Protocol release"
runs-on: "ubuntu-latest"
if: |
github.event_name == 'push' &&
github.repository == 'sass/sass' &&
github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Get version information
id: version-info
run: |
echo "VERSION=$(cat spec/EMBEDDED_PROTOCOL_VERSION)" | tee --append "$GITHUB_OUTPUT"
echo "VERSION_MODIFIED=$(
git diff --quiet HEAD^ spec/EMBEDDED_PROTOCOL_VERSION && echo false || echo true
)" | tee --append "$GITHUB_OUTPUT"
- name: Create release
if: |
steps.version-info.outputs.VERSION_MODIFIED == 'true' &&
!endsWith(steps.version-info.outputs.VERSION, '-dev')
run: |
git config --global user.name 'SassBot'
git config --global user.email 'sass.bot.beep.boop@gmail.com'
git tag "embedded-protocol-${{ steps.version-info.outputs.VERSION }}"
git push --tags
# Whenever anything changes in js-api-docs, redeploy the website so it picks
# up those changes.
heroku:
name: Deploy sass-lang.com
runs-on: ubuntu-latest
needs: [static_analysis, js_api_mirroring, typedoc]
if: |
github.event_name == 'push' &&
github.repository == 'sass/sass' &&
github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
with: {fetch-depth: 0}
- name: Find changed files in js-api-doc
id: changed-files
uses: tj-actions/changed-files@aa08304bd477b800d468db44fe10f6c61f7f7b11
with: {files: js-api-doc}
- name: Deploy
if: steps.changed-files.outputs.any_changed == 'true'
run: tool/github-action/deploy-heroku.sh
env: {HEROKU_TOKEN: "${{ secrets.HEROKU_TOKEN }}"}