-
Notifications
You must be signed in to change notification settings - Fork 356
139 lines (134 loc) · 4 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
name: Release
on: push
env:
GO_VERSION: stable
jobs:
build_for_linux:
name: Build for Linux
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [amd64, arm, arm64]
steps:
- name: Install build dependencies
run: |
sudo apt-get -qq update
sudo apt-get install -y \
build-essential \
qemu-user \
gcc-arm-linux-gnueabihf \
g++-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
libstdc++6-armhf-cross \
libstdc++6-arm64-cross \
libc6-dev-armhf-cross \
libc6-dev-arm64-cross \
file
- name: Checkout
uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Build ${{ matrix.arch }}
run: ./build.sh -v ${{ github.ref_name }} -a ${{ matrix.arch }}
- name: Build ${{ matrix.arch }} (static)
if: matrix.arch != 'arm'
run: ./build.sh -v ${{ github.ref_name }} -a ${{ matrix.arch }} -s
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: dist-linux-${{ matrix.arch }}
path: build/linux/*/*/usql*.tar.bz2
build_for_macos:
name: Build for macOS
runs-on: macos-latest
strategy:
matrix:
arch: [amd64, arm64]
steps:
- name: Install build dependencies
run: brew install coreutils
- name: Checkout
uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Build ${{ matrix.arch }}
run: |
./build.sh -v ${{ github.ref_name }} -a ${{ matrix.arch }}
file build/darwin/*/*/usql
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: dist-darwin-${{ matrix.arch }}
path: build/darwin/*/*/usql*.tar.bz2
build_for_macos_universal:
name: Build for macOS (universal)
needs:
- build_for_macos
runs-on: macos-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Build universal
run: |
export WORKDIR=/tmp/usql-universal
mkdir -p $WORKDIR
tar -jxvf dist-darwin-amd64/*/*/usql*.tar.bz2 -C $WORKDIR usql
mv $WORKDIR/usql $WORKDIR/usql-amd64
tar -jxvf dist-darwin-arm64/*/*/usql*.tar.bz2 -C $WORKDIR usql
mv $WORKDIR/usql $WORKDIR/usql-arm64
lipo -create -output $WORKDIR/usql $WORKDIR/usql-amd64 $WORKDIR/usql-arm64
$WORKDIR/usql --version
rm $WORKDIR/usql-{amd64,arm64}
tar -jxvf dist-darwin-amd64/*/*/usql*.tar.bz2 -C $WORKDIR LICENSE
tar -C $WORKDIR -cjf usql-${GITHUB_REF_NAME#v}-darwin-universal.tar.bz2
ls -alh usql*
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: dist-darwin-universal
path: ./usql*.tar.bz2
build_for_windows:
name: Build for Windows
runs-on: windows-latest
steps:
- name: Install build dependencies
run: choco install zip
- name: Checkout
uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Build amd64
shell: bash
run: ./build.sh -v ${{ github.ref_name }}
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: dist-windows
path: build/windows/*/*/usql*.zip
release:
name: Draft Release
needs:
- build_for_linux
- build_for_macos
- build_for_windows
- build_for_macos_universal
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
name: usql ${{ github.ref_name }}
draft: true
generate_release_notes: true
files: dist-*/*/*/usql*.*