-
Notifications
You must be signed in to change notification settings - Fork 6
133 lines (113 loc) · 3.58 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
---
on:
push:
tags:
- "v*"
permissions:
contents: write
name: Build and release
jobs:
create_release:
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Tau ${{ github.ref }}
draft: false
prerelease: false
# Build for Linux (both x86_64 and aarch64)
build-linux:
runs-on: ubuntu-latest
needs: create_release
strategy:
fail-fast: false
matrix:
go-version: [1.23.x]
arch: [amd64, arm64]
steps:
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize and update submodules
run: git submodule init && git submodule update
- name: Build for Linux
run: make && mv tau tau-linux-${{ matrix.arch }}
- name: Upload Linux artifact to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./tau-linux-${{ matrix.arch }}
asset_name: tau-linux-${{ matrix.arch }}
asset_content_type: application/octet-stream
# Build for Windows (only x86_64)
build-windows:
runs-on: ubuntu-latest
needs: create_release
strategy:
fail-fast: false
matrix:
go-version: [1.23.x]
arch: [amd64, arm64]
steps:
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: 1.23.x
- name: Checkout repository
uses: actions/checkout@v4
- name: Install MinGW
run: sudo apt install mingw-w64 -y
- name: Initialize and update submodules
run: git submodule init && git submodule update
- name: Build for Windows x86_64
run: make windows && mv tau.exe tau-windows-x86_64.exe
- name: Upload Windows artifact to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./tau-windows-x86_64.exe
asset_name: tau-windows-x86_64.exe
asset_content_type: application/octet-stream
# Build for MacOS
build-macos:
runs-on: macos-latest
needs: create_release
strategy:
fail-fast: false
matrix:
go-version: [1.23.x]
arch: [amd64, arm64]
steps:
- name: Build MacOS
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- uses: actions/checkout@v4
- run: git submodule init && git submodule update
- run: brew install gcc@14 make automake libtool texinfo autoconf
- run: make CC=gcc-14 && mv tau tau-macos-${{ matrix.arch }}
- name: Upload MacOS artifact to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ./tau-macos-${{ matrix.arch }}
asset_name: tau-macos-${{ matrix.arch }}
asset_content_type: application/octet-stream