-
Notifications
You must be signed in to change notification settings - Fork 91
214 lines (175 loc) · 5.96 KB
/
check.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
name: check
on:
push:
branches:
- main
pull_request:
jobs:
cla-check:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
outputs:
cla-signed: ${{ steps.cla-check-step.outputs.cla-signed }}
steps:
- uses: actions/checkout@v4
- name: CLA check
id: cla-check-step
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_AUTHOR=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.number }} \
| jq -r '.user.login')
echo "The PR author is $PR_AUTHOR"
EMAIL=$(git log -1 --pretty=format:'%ae')
echo "Commit author email: $EMAIL"
CLA_RESPONSE=$(curl -s "https://mooncakes.io/api/v0/cla/check?gh_username=$PR_AUTHOR&email=$EMAIL")
echo "CLA check response: $CLA_RESPONSE"
SIGNED=$(echo $CLA_RESPONSE | jq -r '.signed')
echo "cla-signed=$SIGNED" >> $GITHUB_ENV
echo "If you have any questions about the CLA result, please contact us."
if [ "$SIGNED" != "true" ]; then
echo "CLA is not signed."
exit 1
else
echo "CLA is signed."
fi
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: install
run: |
/bin/bash -c "$(curl -fsSL https://cli.moonbitlang.com/ubuntu_x86_64_moon_setup.sh)"
echo "/home/runner/.moon/bin" >> $GITHUB_PATH
- name: moon check
run: moon check
- name: moon info
run: |
moon info
git diff --exit-code
- name: moon test
run: |
moon test
moon test --target js
- name: moon bundle
run: moon bundle
- name: check core size
run: ls -alh `find ./target/bundle -name *.core`
- name: format diff
run: |
moon fmt
git diff
build-on-mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: install
run: |
/bin/bash -c "$(curl -fsSL https://cli.moonbitlang.com/mac_intel_moon_setup.sh)"
echo "$HOME/.moon/bin" >> $GITHUB_PATH
- name: moon check
run: moon check
- name: moon info
run: |
moon info
git diff --exit-code
- name: moon test
run: |
moon test
moon test --target js
- name: moon bundle
run: moon bundle
- name: check core size
run: ls -alh `find ./target/bundle -name *.core`
- name: format diff
run: |
moon fmt
git diff
build-on-mac-bleeding:
runs-on: macos-14
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: install
run: |
/bin/bash -c "$(curl -fsSL https://cli.moonbitlang.com/bleeding/mac_m1_moon_setup.sh)"
echo "$HOME/.moon/bin" >> $GITHUB_PATH
- name: moon check
run: moon check
- name: moon info
run: |
moon info
git diff --exit-code
- name: moon test
run: |
moon test
moon test --target js
- name: moon bundle
run: moon bundle
- name: check core size
run: ls -alh `find ./target/bundle -name *.core`
- name: format diff
run: |
moon fmt
git diff
coverage-check-bleeding:
runs-on: macos-14
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: install
run: |
/bin/bash -c "$(curl -fsSL https://cli.moonbitlang.com/bleeding/mac_m1_moon_setup.sh)"
echo "$HOME/.moon/bin" >> $GITHUB_PATH
- name: moon test
run: moon test --enable-coverage
- name: coverage report
run: |
moon coverage report -f summary summary > coverage_summary.txt
# Put the coverage report in the pipline output
cat coverage_summary.txt >> "$GITHUB_STEP_SUMMARY"
moon coverage report -f coveralls -o codecov_report.json --service-name github --service-job-id $GITHUB_RUN_NUMBER
# The following is workaround for https://github.com/codecov/feedback/issues/126
# See `coverage-report-upload.yml` for more info.
# Workaround for https://github.com/orgs/community/discussions/25220
# Triggered sub-workflow is not able to detect the original commit/PR which is available
# in this workflow.
- name: Store PR number and commit SHA
run: |
echo "Storing PR number ${{ github.event.number }}"
echo "${{ github.event.number }}" > pr_number.txt
echo "Storing commit SHA ${{ github.event.pull_request.head.sha }}"
echo "${{ github.event.pull_request.head.sha }}" > commit_sha.txt
# This stores the coverage report in artifacts. The actual upload to Codecov
# is executed by a different workflow `coverage-report-upload.yml`. The reason for this
# split is because `on.pull_request` workflows don't have access to secrets.
- name: Store coverage report in artifacts
uses: actions/upload-artifact@v4
with:
name: codecov_report
path: |
pr_number.txt
commit_sha.txt
codecov_report.json
typo-check:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
FORCE_COLOR: 1
TYPOS_VERSION: v1.19.0
steps:
- name: download typos
run: curl -LsSf https://github.com/crate-ci/typos/releases/download/$TYPOS_VERSION/typos-$TYPOS_VERSION-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: check typos
run: typos
license-header-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check License Header
uses: korandoru/hawkeye@v5