-
Notifications
You must be signed in to change notification settings - Fork 20
141 lines (141 loc) · 5.63 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
name: ELP Release
on:
# release:
# types:
# - created
push: {}
jobs:
release:
strategy:
matrix:
platform: [ubuntu-20.04, macos-latest]
otp-version: [25.2]
include:
- otp-version: 25.2
brew-otp-version: 25
- platform: ubuntu-20.04
os: linux
target: x86_64-unknown-linux-musl
- platform: macos-latest
os: macos
target: ''
runs-on: ${{ matrix.platform }}
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 (Linux Only)
if: matrix.os == 'linux'
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: musl-tools
version: 1.0
- name: Set up rust toolchain (Linux Only)
if: matrix.os == 'linux'
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Set up rust toolchain (MacOS Only)
if: matrix.os == 'macos'
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}
- name: Install Erlang/OTP (Linux Only)
if: matrix.os == 'linux'
uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp-version }}
install-rebar: true
install-hex: false
- name: Install Erlang/OTP (MacOS Only)
if: matrix.os == 'macos'
run: brew install erlang@${{ matrix.brew-otp-version }}
- name: Assemble eqwalizer.jar
working-directory: eqwalizer/eqwalizer
run: "sbt assembly"
- name: Assemble eqwalizer binary
working-directory: eqwalizer/eqwalizer
run: "native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp (Linux Only)
if: matrix.os == 'linux'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target ${{ matrix.target }}"
- name: Test elp (MacOS Only)
if: matrix.os == 'macos'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace"
- name: Assemble elp (Linux Only)
if: matrix.os == 'linux'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target ${{ matrix.target }}"
- name: Assemble elp (MacOS Only)
if: matrix.os == 'macos'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release"
- name: Add elp to path
run: 'echo "$GITHUB_WORKSPACE/target/${{ matrix.target }}/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-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz
run: 'tar -zcvf elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz -C target/${{ matrix.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-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz
# asset_path: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.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: npm install
working-directory: editors/code
run: npm install
- name: npm run compile
working-directory: editors/code
run: npm run compile
- name: Package Extension
working-directory: editors/code
run: vsce package
- name: Rename Package
working-directory: editors/code
run: mv erlang-language-platform-*.vsix erlang-language-platform.vsix
# - env:
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
# name: Upload Extension Package
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.vsix
# asset_path: editors/code/erlang-language-platform.vsix
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
# - name: Publish extension to marketplace
# working-directory: editors/code
# run: vsce publish -p ${{ secrets.VSCE_PAT }}