-
Notifications
You must be signed in to change notification settings - Fork 4
66 lines (56 loc) · 1.71 KB
/
build-and-test.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
name: CI
on:
push:
branches: [ "main", "bindgen", "ci", "com_objects_v3" ]
pull_request:
# all PRs on all branches
concurrency:
# For PRs, later CI runs preempt previous ones. e.g. a force push on a PR
# cancels running CI jobs and starts all new ones.
#
# For non-PR pushes, concurrency.group needs to be unique for every distinct
# CI run we want to have happen. Use run_id, which in practice means all
# non-PR CI runs will be allowed to run without preempting each other.
group: ${{ github.workflow }}-$${{ github.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
build-and-test:
strategy:
fail-fast: false
matrix:
goarch: [ "386", "amd64", "arm64" ]
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v4
with:
go-version-file: go.mod
- name: Install go-winres
run: go install github.com/tc-hib/go-winres@latest
- name: Set up build directory
run: |
mkdir -p ./bin/${{ matrix.goarch }}
- name: Build Binaries
run: |
go build -v -o ./bin/${{ matrix.goarch }} ./...
env:
GOARCH: ${{ matrix.goarch }}
- name: Build Test Binaries
run: |
go test -c -o ./bin/${{ matrix.goarch }} ./...
env:
GOARCH: ${{ matrix.goarch }}
- name: Bind Resources to All Binaries
shell: bash
run: |
for f in ./bin/${{ matrix.goarch }}/*.exe; do
go-winres patch ${f}
done
- name: Test
if: ${{ matrix.goarch != 'arm64' }}
run: |
go test -o ./bin/${{ matrix.goarch }} -v ./...
env:
GOARCH: ${{ matrix.goarch }}