-
Notifications
You must be signed in to change notification settings - Fork 2
142 lines (140 loc) · 6.79 KB
/
build.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
name: Rust
on:
push:
branches:
- main
tags:
- "*"
pull_request:
branches:
- main
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-20.04, target: x86_64-unknown-linux-gnu, platform: linux-x64, cross: general }
- { os: ubuntu-22.04, target: x86_64-unknown-linux-gnu, platform: linux-x64, cross: zigbuild, glibc: 2.17 }
- { os: ubuntu-22.04, target: aarch64-unknown-linux-gnu, platform: linux-arm64, cross: zigbuild, glibc: 2.17 }
- { os: ubuntu-22.04, target: riscv64gc-unknown-linux-gnu, platform: linux-riscv64, cross: cross }
- { os: ubuntu-20.04, target: x86_64-unknown-linux-musl, platform: linux-musl, cross: cross }
- { os: ubuntu-22.04, target: x86_64-unknown-freebsd, platform: linux-bsd, cross: no_format }
- { os: macos-latest, target: x86_64-apple-darwin, platform: darwin-x64, cross: general }
- { os: macos-latest, target: aarch64-apple-darwin, platform: darwin-arm64, cross: general }
- { os: windows-latest, target: x86_64-pc-windows-msvc, platform: win32-x64, cross: general }
- { os: windows-latest, target: i686-pc-windows-msvc, platform: win32-ia32, cross: general }
- { os: windows-latest, target: aarch64-pc-windows-msvc, platform: win32-arm64, cross: general }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build - General
if: ${{ matrix.cross == 'general' }}
run: |
rustup target add ${{ matrix.target }}
cargo build --release --target ${{ matrix.target }} -p luals
- name: Build - cross
if: ${{ matrix.cross == 'cross' }}
run: |
cargo install cross
cross build --release --target ${{ matrix.target }} -p luals
- name: Build - no_format
if: ${{ matrix.cross == 'no_format' }}
run: |
cargo install cross
cross build --release --target ${{ matrix.target }} --features no_format -p luals
- name: Build -zigbuild
if: ${{ matrix.cross == 'zigbuild' }}
run: |
rustup target add ${{ matrix.target }}
cargo install --locked cargo-zigbuild
pip3 install ziglang
cargo zigbuild --release --target ${{ matrix.target }}.${{ matrix.glibc }} -p luals
- name: package-uninx
if: ${{ matrix.os != 'windows-latest' }}
run: |
python publish/workflow_copy_files.py . ${{ github.workspace }}/artifact
mkdir -p ${{ github.workspace }}/artifact/bin
cp ${{ github.workspace }}/target/${{ matrix.target }}/release/lua-language-server ${{ github.workspace }}/artifact/bin
- name: package-windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
python publish/workflow_copy_files.py . "${{ github.workspace }}/artifact"
New-Item -ItemType Directory -Path "${{ github.workspace }}/artifact/bin"
Copy-Item -Path ${{ github.workspace }}\target\${{ matrix.target }}\release\lua-language-server.exe -Destination ${{ github.workspace }}\artifact\bin
shell: pwsh
- name: Upload
if: ${{ matrix.cross != 'zigbuild' }}
uses: actions/upload-artifact@v3
with:
name: lua-language-server-${{ matrix.platform }}
path: ${{ github.workspace }}/artifact/
- name: Upload zigbuild
if: ${{ matrix.cross == 'zigbuild' }}
uses: actions/upload-artifact@v3
with:
name: lua-language-server-${{ matrix.platform }}-glibc.${{ matrix.glibc }}
path: ${{ github.workspace }}/artifact/
release:
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Download
uses: actions/download-artifact@v3
- name: zip windows package win32-x64
uses: TheDoctor0/[email protected]
with:
filename: lua-language-server-win32-x64.zip
path: lua-language-server-win32-x64
- name: zip windows package win32-ia32
uses: TheDoctor0/[email protected]
with:
filename: lua-language-server-win32-ia32.zip
path: lua-language-server-win32-ia32
- name: zip windows package win32-arm64
uses: TheDoctor0/[email protected]
with:
filename: lua-language-server-win32-arm64.zip
path: lua-language-server-win32-arm64
- name: tar unix
run: |
chmod +x lua-language-server-linux-x64/bin/lua-language-server
tar -czf lua-language-server-linux-x64.tar.gz -C lua-language-server-linux-x64 .
chmod +x lua-language-server-linux-x64-glibc.2.17/bin/lua-language-server
tar -czf lua-language-server-linux-x64-glibc.2.17.tar.gz -C lua-language-server-linux-x64-glibc.2.17 .
chmod +x lua-language-server-linux-arm64-glibc.2.17/bin/lua-language-server
tar -czf lua-language-server-linux-aarch64-glibc.2.17.tar.gz -C lua-language-server-linux-arm64-glibc.2.17 .
chmod +x lua-language-server-linux-musl/bin/lua-language-server
tar -czf lua-language-server-linux-musl.tar.gz -C lua-language-server-linux-musl .
chmod +x lua-language-server-linux-bsd/bin/lua-language-server
tar -czf lua-language-server-linux-bsd.tar.gz -C lua-language-server-linux-bsd .
chmod +x lua-language-server-linux-riscv64/bin/lua-language-server
tar -czf lua-language-server-linux-riscv64.tar.gz -C lua-language-server-linux-riscv64 .
chmod +x lua-language-server-darwin-x64/bin/lua-language-server
tar -czf lua-language-server-darwin-x64.tar.gz -C lua-language-server-darwin-x64 .
chmod +x lua-language-server-darwin-arm64/bin/lua-language-server
tar -czf lua-language-server-darwin-arm64.tar.gz -C lua-language-server-darwin-arm64 .
- name: Release
uses: softprops/action-gh-release@v2
with:
name: lua-language-server
draft: false
generate_release_notes: true
files: |
lua-language-server-win32-x64.zip
lua-language-server-win32-ia32.zip
lua-language-server-win32-arm64.zip
lua-language-server-linux-x64.tar.gz
lua-language-server-linux-x64-glibc.2.17.tar.gz
lua-language-server-linux-aarch64-glibc.2.17.tar.gz
lua-language-server-linux-musl.tar.gz
lua-language-server-linux-bsd.tar.gz
lua-language-server-linux-riscv64.tar.gz
lua-language-server-darwin-x64.tar.gz
lua-language-server-darwin-arm64.tar.gz
token: ${{ secrets.RELEASE }}