-
Notifications
You must be signed in to change notification settings - Fork 12
147 lines (129 loc) · 4.91 KB
/
ci.yaml
File metadata and controls
147 lines (129 loc) · 4.91 KB
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: Merge Checks
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on:
pull_request:
branches:
- main
jobs:
lint-and-test:
permissions:
checks: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
# Re-use node_modules between runs until package-lock.json changes.
- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v4
with:
path: node_modules
key: node_modules-${{ hashFiles('package-lock.json') }}
# Re-use ~/.elm between runs until elm.json or review/elm.json changes.
# The Elm compiler saves downloaded Elm packages to ~/.elm saves
# downloaded tool executables there.
- name: Cache ~/.elm
uses: actions/cache@v4
with:
path: ~/.elm
key: elm-${{ hashFiles('elm.json', 'review/elm.json') }}
# Install npm packages, unless we restored them from cache.
# Since `npm ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: npm ci
if: steps.cache-node_modules.outputs.cache-hit != 'true'
run: npm ci
- name: Format
run: npm run format
- name: Review
run: npm run review
- name: Test
run: npm run test
diff-generation:
permissions:
checks: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Checkout branch
uses: actions/checkout@v4
with:
path: branch
- name: Checkout main
uses: actions/checkout@v4
with:
ref: main
path: main
# Re-use node_modules between runs until package-lock.json changes.
- name: Cache node_modules (branch)
id: cache-node_modules-branch
uses: actions/cache@v4
with:
path: branch/node_modules
key: node_modules-${{ hashFiles('branch/package-lock.json', 'branch/cli/package-lock.json') }}
# Re-use node_modules between runs until package-lock.json changes.
- name: Cache node_modules (main)
id: cache-node_modules-main
uses: actions/cache@v4
with:
path: main/node_modules
key: node_modules-${{ hashFiles('main/package-lock.json', 'main/cli/package-lock.json') }}
# Re-use ~/.elm between runs until elm.json or review/elm.json changes.
# The Elm compiler saves downloaded Elm packages to ~/.elm saves
# downloaded tool executables there.
- name: Cache ~/.elm (both)
uses: actions/cache@v4
with:
path: ~/.elm
key: elm-${{ hashFiles('main/elm.json', 'main/review/elm.json', 'branch/elm.json', 'branch/review/elm.json') }}
# Install npm packages, unless we restored them from cache.
# Since `npm ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: npm ci (branch)
if: steps.cache-node_modules-branch.outputs.cache-hit != 'true'
working-directory: branch
run: npm ci
# Install npm packages, unless we restored them from cache.
# Since `npm ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: npm ci (main)
if: steps.cache-node_modules-main.outputs.cache-hit != 'true'
working-directory: main
run: npm ci
- name: Generate (branch)
working-directory: branch
run: |
# Change following line to just `npm -C cli ci` after #214 is merged
[ ! -d cli ] || npm -C cli ci
npm run test:gen
- name: Generate (main)
working-directory: main
run: |
# Change following line to just `npm -C cli ci` after #214 is merged
[ ! -d cli ] || npm -C cli ci
npm run test:gen || true # We don't want to block on main failing to generate
- name: Diff the outputs
run: |
main_folder=main/cli/generated
branch_folder=branch/cli/generated
# Remove the following two lines after #214 is merged
[ -d main/cli ] || main_folder=main/generated
[ -d branch/cli ] || branch_folder=branch/generated
echo '```diff' > diff.md
diff --ignore-all-space --minimal --new-file --recursive \
"$main_folder" \
"$branch_folder" | dd bs=1024 count=30 >> diff.md || true # We ignore diff exiting with a 1
echo -e '\n```' >> diff.md
- name: Post a comment with the diff
uses: JoseThen/comment-pr@v1.2.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
file_path: './diff.md'