-
Notifications
You must be signed in to change notification settings - Fork 1
144 lines (133 loc) · 3.33 KB
/
builder.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
name: Builder
on:
push:
branches: "*"
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
- "Makefile"
- "build/**"
- ".github/workflows/builder.yml"
pull_request:
branches: "*"
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
workflow_dispatch:
env:
PRODUCT: rivet
permissions: write-all
jobs:
build:
name: Build
strategy:
matrix:
os: [ linux, freebsd, openbsd, dragonfly, windows, darwin ]
arch: [ amd64, 386 ]
include:
- os: linux
arch: arm
arm: 5
- os: linux
arch: arm
arm: 6
- os: linux
arch: arm
arm: 7
- os: linux
arch: arm64
- os: linux
arch: mips
mips: softfloat
- os: linux
arch: mips
mips: hardfloat
- os: linux
arch: mipsle
mipsle: softfloat
- os: linux
arch: mipsle
mipsle: hardfloat
- os: linux
arch: mips64
- os: linux
arch: mips64le
- os: linux
arch: ppc64
- os: linux
arch: ppc64le
- os: linux
arch: s390x
- os: windows
arch: arm
- os: windows
arch: arm64
- os: android
arch: arm64
- os: darwin
arch: arm64
- os: freebsd
arch: arm64
exclude:
- os: darwin
arch: 386
- os: dragonfly
arch: 386
fail-fast: false
runs-on: ubuntu-latest
continue-on-error: true
env:
GOOS: ${{ matrix.os }}
GOARCH: ${{ matrix.arch }}
GOARM: ${{ matrix.arm }}
GOMIPS: ${{ matrix.mips }}
GOMIPS64: ${{ matrix.mips64 }}
GOMIPSLE: ${{ matrix.mipsle }}
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v3
with:
go-version: ^1.17
- name: Check out code base
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Check out code base
if: github.event_name == 'pull_request'
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Cache go module
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Get dependencies
run: |
go get -v -t -d ./...
- name: Build binary
id: builder
run: |
ARGS="${GOOS}-${GOARCH}"
if [[ -n "${GOARM}" ]]; then
ARGS="${ARGS}v${GOARM}"
elif [[ -n "${GOMIPS}" ]]; then
ARGS="${ARGS}-${GOMIPS}"
elif [[ -n "${GOMIPS64}" ]]; then
ARGS="${ARGS}-${GOMIPS64}"
elif [[ -n "${GOMIPSLE}" ]]; then
ARGS="${ARGS}-${GOMIPSLE}"
fi
make ${ARGS}
echo "filename=${{ env.PRODUCT }}-${ARGS}" >> $GITHUB_OUTPUT
- name: Upload binary artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ steps.builder.outputs.filename }}
path: ./build/binary/${{ env.PRODUCT }}*
if-no-files-found: error