-
Notifications
You must be signed in to change notification settings - Fork 14
142 lines (125 loc) · 4.6 KB
/
Copy pathci.yaml
File metadata and controls
142 lines (125 loc) · 4.6 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
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
- uses: oven-sh/setup-bun@v2
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
# Re-use node_modules between runs until bun.lock changes.
- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v4
with:
path: node_modules
key: node_modules-${{ hashFiles('bun.lock') }}
# 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 `bun ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: bun ci
if: steps.cache-node_modules.outputs.cache-hit != 'true'
run: bun ci
- name: Format
run: bun run format
- name: Review
run: bun run review
- name: Test
run: bun 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
- uses: oven-sh/setup-bun@v2
- 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 bun.lock 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/bun.lock') }}
# Re-use node_modules between runs until bun.lock 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/bun.lock') }}
# 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 `bun ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: bun ci (branch)
if: steps.cache-node_modules-branch.outputs.cache-hit != 'true'
working-directory: branch
run: bun ci
# Install npm packages, unless we restored them from cache.
# Since `bun ci` removes the node_modules folder before running it’s
# important to skip this step if cache was restored.
- name: bun ci (main)
if: steps.cache-node_modules-main.outputs.cache-hit != 'true'
working-directory: main
run: bun ci
- name: Generate (branch)
working-directory: branch
run: bun run test:gen
- name: Generate (main)
working-directory: main
run: bun run test:gen || true # We don't want to block on main failing to generate
- name: Diff the outputs
run: |
echo '```diff' > diff.md
diff --ignore-all-space --minimal --new-file --recursive \
main/cli/generated \
branch/cli/generated | 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
continue-on-error: true
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
file_path: "./diff.md"
- name: Dump the diff into the Github log
run: |
diff --ignore-all-space --minimal --new-file --recursive \
main/cli/generated branch/cli/generated || true # We ignore diff exiting with a 1