-
Notifications
You must be signed in to change notification settings - Fork 74
137 lines (134 loc) · 6.1 KB
/
build.yml
File metadata and controls
137 lines (134 loc) · 6.1 KB
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
name: Rust
on:
push:
branches:
- main
tags:
- "*"
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-22.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-22.04, target: x86_64-unknown-linux-musl, platform: linux-musl, cross: cross }
- { os: macos-latest, target: x86_64-apple-darwin, platform: darwin-x64, cross: general-macos-intel }
- { 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: edit version
if: startsWith(github.ref, 'refs/tags/')
run: |
echo "current ref ${{ github.ref }}"
cargo run -p edit_version -- ${{ github.ref }}
- name: Build - General
if: ${{ matrix.cross == 'general' }}
run: |
rustup target add ${{ matrix.target }}
cargo build --release --target ${{ matrix.target }} -p emmylua_ls
- name: Build - cross
if: ${{ matrix.cross == 'cross' }}
run: |
cargo install cross
cross build --release --target ${{ matrix.target }} -p emmylua_ls
- 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 emmylua_ls
- name: Build - general macos-intel
if: ${{ matrix.cross == 'general-macos-intel' }}
run: |
rustup target add ${{ matrix.target }}
cargo build --release --target ${{ matrix.target }} -p emmylua_ls
otool -l ./target/${{ matrix.target }}/release/emmylua_ls | grep -A4 "LC_BUILD_VERSION\|LC_VERSION_MIN_MACOSX"
- name: copy-binary
if: ${{ matrix.os != 'windows-latest' }}
run: |
mkdir -p ${{ github.workspace }}/artifact/
cp ${{ github.workspace }}/target/${{ matrix.target }}/release/emmylua_ls ${{ github.workspace }}/artifact/
- name: copy-binary-windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
mkdir -p ${{ github.workspace }}/artifact/
cp ${{ github.workspace }}/target/${{ matrix.target }}/release/emmylua_ls.exe ${{ github.workspace }}/artifact/
shell: pwsh
- name: Upload
if: ${{ matrix.cross != 'zigbuild' }}
uses: actions/upload-artifact@v4
with:
name: emmylua_ls-${{ matrix.platform }}
path: ${{ github.workspace }}/artifact/
- name: Upload zigbuild
if: ${{ matrix.cross == 'zigbuild' }}
uses: actions/upload-artifact@v4
with:
name: emmylua_ls-${{ 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@v4
- name: add execute permission and compress
run: |
chmod +x emmylua_ls-linux-x64/emmylua_ls
chmod +x emmylua_ls-linux-x64-glibc.2.17/emmylua_ls
chmod +x emmylua_ls-linux-arm64-glibc.2.17/emmylua_ls
chmod +x emmylua_ls-linux-musl/emmylua_ls
chmod +x emmylua_ls-linux-riscv64/emmylua_ls
chmod +x emmylua_ls-darwin-x64/emmylua_ls
chmod +x emmylua_ls-darwin-arm64/emmylua_ls
tar -zcvf emmylua_ls-linux-x64.tar.gz -C emmylua_ls-linux-x64 emmylua_ls
tar -zcvf emmylua_ls-linux-x64-glibc.2.17.tar.gz -C emmylua_ls-linux-x64-glibc.2.17 emmylua_ls
tar -zcvf emmylua_ls-linux-aarch64-glibc.2.17.tar.gz -C emmylua_ls-linux-arm64-glibc.2.17 emmylua_ls
tar -zcvf emmylua_ls-linux-musl.tar.gz -C emmylua_ls-linux-musl emmylua_ls
tar -zcvf emmylua_ls-linux-riscv64.tar.gz -C emmylua_ls-linux-riscv64 emmylua_ls
tar -zcvf emmylua_ls-darwin-x64.tar.gz -C emmylua_ls-darwin-x64 emmylua_ls
tar -zcvf emmylua_ls-darwin-arm64.tar.gz -C emmylua_ls-darwin-arm64 emmylua_ls
- name: windows compress
run: |
cd emmylua_ls-win32-x64
7z a emmylua_ls-win32-x64.zip emmylua_ls.exe
cd ../emmylua_ls-win32-ia32
7z a emmylua_ls-win32-ia32.zip emmylua_ls.exe
cd ../emmylua_ls-win32-arm64
7z a emmylua_ls-win32-arm64.zip emmylua_ls.exe
- name: Release
uses: softprops/action-gh-release@v2
with:
name: emmylua_ls
draft: false
generate_release_notes: true
files: |
emmylua_ls-win32-x64/emmylua_ls-win32-x64.zip
emmylua_ls-win32-ia32/emmylua_ls-win32-ia32.zip
emmylua_ls-win32-arm64/emmylua_ls-win32-arm64.zip
emmylua_ls-linux-x64.tar.gz
emmylua_ls-linux-x64-glibc.2.17.tar.gz
emmylua_ls-linux-aarch64-glibc.2.17.tar.gz
emmylua_ls-linux-musl.tar.gz
emmylua_ls-linux-riscv64.tar.gz
emmylua_ls-darwin-x64.tar.gz
emmylua_ls-darwin-arm64.tar.gz
token: ${{ secrets.RELEASE }}