-
-
Notifications
You must be signed in to change notification settings - Fork 301
153 lines (129 loc) · 5.67 KB
/
main.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
name: CI
on:
push:
paths:
- ".github/workflows/main.yml"
- "**.zig"
- "build.zig.zon"
pull_request:
paths:
- ".github/workflows/main.yml"
- "**.zig"
- "build.zig.zon"
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
build:
if: github.repository_owner == 'zigtools'
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: goto-bus-stop/setup-zig@v2
with:
version: master
- name: Get Zig version
id: zig_version
run: echo "zig_version=$(zig version)" >> $GITHUB_OUTPUT
- run: zig env
- name: Run zig fmt
run: zig fmt --check .
- name: Build
run: zig build
- name: Get ZLS version and mimimum build version
id: zls_version
run: |
echo "zls_version=$(./zig-out/bin/zls --version)" >> $GITHUB_OUTPUT
echo "zls_minimum_build_version=$(./zig-out/bin/zls --minimum-build-version)" >> $GITHUB_OUTPUT
- name: Run Tests
run: zig build test
- name: Build artifacts
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
declare -a targets=("x86_64-windows" "x86_64-linux" "x86_64-macos" "x86-windows" "x86-linux" "aarch64-linux" "aarch64-macos" "wasm32-wasi")
mkdir -p "artifacts/${{ steps.zls_version.outputs.zls_version }}/"
for target in "${targets[@]}"; do
mkdir -p artifacts/${{ steps.zls_version.outputs.zls_version }}/$target
echo "Building target ${target}..."
if [ "${GITHUB_REF##*/}" == "master" ]; then
echo "Building safe"
zig build -Dtarget=${target} -Dcpu=baseline -Doptimize=ReleaseSafe --prefix artifacts/${{ steps.zls_version.outputs.zls_version }}/${target}/
else
echo "Building debug as action is not running on master"
zig build -Dtarget=${target} -Dcpu=baseline --prefix artifacts/${{ steps.zls_version.outputs.zls_version }}/${target}/
fi
mv artifacts/${{ steps.zls_version.outputs.zls_version }}/${target}/bin/* artifacts/${{ steps.zls_version.outputs.zls_version }}/${target}
rmdir artifacts/${{ steps.zls_version.outputs.zls_version }}/${target}/bin
done
wget https://zigtools-releases.nyc3.digitaloceanspaces.com/zls/index.json
cp index.json artifacts/old-index.json
jq --arg targets "${targets[*]}" '.latest = "${{ steps.zls_version.outputs.zls_version }}" | .versions["${{ steps.zls_version.outputs.zls_version }}"] = {
"date": now | todateiso8601,
"builtWithZigVersion": "${{ steps.zig_version.outputs.zig_version }}",
"zlsVersion": "${{ steps.zls_version.outputs.zls_version }}",
"zlsMinimumBuildVersion": "${{ steps.zls_version.outputs.zls_minimum_build_version }}",
"commit": "${{ github.sha }}",
"targets": ($targets / " "),
}' index.json > artifacts/index.json
- name: Upload x86_64-windows artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-x86_64-windows
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/x86_64-windows/
- name: Upload x86_64-linux artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-x86_64-linux
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/x86_64-linux/
- name: Upload x86_64-macos artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-x86_64-macos
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/x86_64-macos/
- name: Upload x86-windows artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-x86-windows
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/x86-windows/
- name: Upload x86-linux artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-x86-linux
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/x86-linux/
- name: Upload aarch64-linux artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-aarch64-linux
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/aarch64-linux/
- name: Upload aarch64-macos artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-aarch64-macos
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/aarch64-macos/
- name: Upload wasm32-wasi artifact
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v3
with:
name: zls-wasm32-wasi
path: artifacts/${{ steps.zls_version.outputs.zls_version }}/wasm32-wasi/
- uses: BetaHuhn/do-spaces-action@v2
if: ${{ matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/master' }}
with:
access_key: ${{ secrets.DO_SPACES_ACCESS_KEY }}
secret_key: ${{ secrets.DO_SPACES_SECRET_KEY }}
space_name: zigtools-releases
space_region: nyc3
source: artifacts/
out_dir: zls/