-
Notifications
You must be signed in to change notification settings - Fork 20
249 lines (249 loc) · 9.93 KB
/
release.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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
jobs:
linux-release-otp-25:
runs-on: ubuntu-20.04
steps:
- name: Checkout erlang-language-platform
uses: "actions/checkout@v3"
- name: Checkout eqwalizer
uses: "actions/checkout@v3"
with:
repository: WhatsApp/eqwalizer
path: eqwalizer
- name: Set up GraalVM
uses: "DeLaGuardo/[email protected]"
with:
graalvm: '22.1.0'
java: 'java11'
- name: Install Native Image Plugin
run: gu install native-image
- name: Install musl-tools for rust toolchain
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: musl-tools
version: 1.0
- name: Set up rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Install OTP
uses: erlef/setup-beam@v1
with:
otp-version: '25.2'
install-rebar: false
install-hex: false
- name: Install rebar3
run: "curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3 && chmod +x rebar3"
- name: "add rebar3 to path"
run: 'echo "$GITHUB_WORKSPACE/rebar3" >> $GITHUB_PATH'
- name: Assemble eqwalizer.jar
run: "cd eqwalizer/eqwalizer; sbt assembly"
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target x86_64-unknown-linux-musl"
- name: Assemble elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target x86_64-unknown-linux-musl"
- name: Add elp to path
run: 'echo "$GITHUB_WORKSPACE/target/x86_64-unknown-linux-musl/release" >> $GITHUB_PATH'
- name: Test eqwalizer
run: 'cd eqwalizer && sbt test'
- name: Upload eqwalizer.jar
uses: "actions/upload-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13/eqwalizer.jar
- name: Upload eqwalizer native binary
uses: "actions/upload-artifact@v2"
with:
name: eqwalizer
path: ./eqwalizer/eqwalizer/eqwalizer
- name: Make elp-linux.tar.gz
run: 'tar -zcvf elp-linux.tar.gz -C target/x86_64-unknown-linux-musl/release/ elp'
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
id: get_release_url
name: Get release url
uses: "bruceadams/[email protected]"
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload release elp-linux.tar.gz
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-linux.tar.gz
asset_path: elp-linux.tar.gz
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install VSCE
run: npm install -g vsce
- name: Package Extension
working-directory: editors/code
run: vsce package
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload Extension Package
working-directory: editors/code
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-linux.vsix
asset_path: elp-*.vsix
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
linux-release-otp-23:
needs:
- linux-release-otp-25
runs-on: ubuntu-20.04
steps:
- name: Checkout erlang-language-platform
uses: "actions/checkout@v3"
- name: Checkout eqwalizer
uses: "actions/checkout@v3"
with:
repository: WhatsApp/eqwalizer
path: eqwalizer
- name: Set up GraalVM
uses: "DeLaGuardo/[email protected]"
with:
graalvm: '22.1.0'
java: 'java11'
- name: Install Native Image Plugin
run: gu install native-image
- name: Install musl-tools for rust toolchain
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: musl-tools
version: 1.0
- name: Set up rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Install OTP
uses: erlef/setup-beam@v1
with:
otp-version: '23.3'
install-rebar: false
install-hex: false
- name: Install rebar3
run: "curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3 && chmod +x rebar3"
- name: "add rebar3 to path"
run: 'echo "$GITHUB_WORKSPACE/rebar3" >> $GITHUB_PATH'
- name: Download eqwalizer.jar
uses: "actions/download-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target x86_64-unknown-linux-musl"
- name: Assemble elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target x86_64-unknown-linux-musl"
- name: Make elp-linux-otp-23.tar.gz
run: 'tar -zcvf elp-linux-otp-23.tar.gz -C target/x86_64-unknown-linux-musl/release/ elp'
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
id: get_release_url
name: Get release url
uses: "bruceadams/[email protected]"
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload release elp-linux-otp-23.tar.gz
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-linux-otp-23.tar.gz
asset_path: elp-linux-otp-23.tar.gz
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install VSCE
run: npm install -g vsce
- name: Package Extension
working-directory: editors/code
run: vsce package
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload Extension Package
working-directory: editors/code
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-linux-otp-23.vsix
asset_path: elp-*.vsix
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
macos-release-otp-25:
needs:
- linux-release-otp-25
runs-on: macos-latest
steps:
- name: Checkout erlang-language-platform
uses: "actions/checkout@v3"
- name: Checkout eqwalizer
uses: "actions/checkout@v3"
with:
repository: WhatsApp/eqwalizer
path: eqwalizer
- name: Set up GraalVM
uses: "DeLaGuardo/[email protected]"
with:
graalvm: '22.1.0'
java: 'java11'
- name: Install Native Image Plugin
run: gu install native-image
- name: Install erlang
run: brew install erlang@25
- name: Install rebar3
run: "mkdir rebar3 && curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3/rebar3 && chmod +x rebar3/rebar3"
- name: Set up rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Download eqwalizer.jar
uses: "actions/download-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@25/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace"
- name: Assemble elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@25/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release"
- name: Make elp-macos.tar.gz
run: 'tar -zcvf elp-macos.tar.gz -C target/release/ elp'
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
id: get_release_url
name: Get release url
uses: "bruceadams/[email protected]"
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload release elp-macos.tar.gz
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-macos.tar.gz
asset_path: elp-macos.tar.gz
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install VSCE
run: npm install -g vsce
- name: Package Extension
working-directory: editors/code
run: vsce package
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: Upload Extension Package
working-directory: editors/code
uses: "actions/[email protected]"
with:
asset_content_type: application/octet-stream
asset_name: elp-macos.vsix
asset_path: elp-*.vsix
upload_url: "${{ steps.get_release_url.outputs.upload_url }}"