-
Notifications
You must be signed in to change notification settings - Fork 20
144 lines (144 loc) · 5.69 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
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
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: musl-tools
version: 1.0
- name: Set up rust toolchain
if: matrix.os == 'linux'
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Set up rust toolchain
if: matrix.os == 'macos'
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}
- name: Install Erlang/OTP
if: matrix.os == 'linux'
uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp-version }}
install-rebar: false
install-hex: false
- name: Install Erlang/OTP
if: matrix.os == 'macos'
run: brew install erlang@${{ matrix.brew-otp-version }}
- 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
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
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
if: matrix.os == 'macos'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace"
- name: Assemble elp
if: matrix.os == 'linux'
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target ${{ matrix.target }}"
- name: Assemble elp
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 }}