-
Notifications
You must be signed in to change notification settings - Fork 4
146 lines (122 loc) · 4.06 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
name: win+mac+linux
on:
push
jobs:
build-linux:
runs-on: ubuntu-20.04 # oldest possible OS
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.21
- name: Install ebiten linux deps
run: make deps-debian
- name: Build for Linux
env:
TAG: ${{ github.ref_name }}
run: make linux
- name: Zip first to prevent GH Artifacts from removing the executable flag
run: |
cd dist
zip -vr "shark-linux.zip" .
- name: Upload linux build
uses: actions/upload-artifact@v3
with:
name: Linux shark
path: dist/shark-linux.zip
- name: Upload artifacts to tagged release
if: github.ref_type == 'tag'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ github.ref_name }}
run: |
# Because we have multiple OSes in the build matrix, we need to either
# create a new release, or upload to the release if it already exists.
if gh release view "$TAG"; then
gh release upload "$TAG" dist/*.zip
else
# Work around GH being daft:
# https://github.com/actions/checkout/issues/290
git fetch --force --tags
echo '```' > RELEASE_NOTES
git tag -l --format='%(contents)' "$TAG" >> RELEASE_NOTES
echo '```' >> RELEASE_NOTES
cat RELEASE_NOTES
gh release create "$TAG" dist/*.zip -F RELEASE_NOTES
fi
build-windows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.21
- name: Install ebiten linux deps
run: make deps-debian
- name: Cross-compile Windows build
run: make windows
- name: Upload cross-compiled Windows build
uses: actions/upload-artifact@v3
with:
name: Windows shark
path: dist/*.exe
- name: Upload artifacts to tagged release
if: github.ref_type == 'tag'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ github.ref_name }}
run: |
# Because we have multiple OSes in the build matrix, we need to either
# create a new release, or upload to the release if it already exists.
if gh release view "$TAG"; then
gh release upload "$TAG" dist/*.exe
else
# Work around GH being daft:
# https://github.com/actions/checkout/issues/290
git fetch --force --tags
echo '```' > RELEASE_NOTES
git tag -l --format='%(contents)' "$TAG" >> RELEASE_NOTES
echo '```' >> RELEASE_NOTES
cat RELEASE_NOTES
gh release create "$TAG" dist/*.exe -F RELEASE_NOTES
fi
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.21
- name: Build for macOS
env:
TAG: ${{ github.ref_name }}
run: make macos
- name: Zip first to prevent GH Artifacts from removing the executable flag
run: |
cd dist
zip -vr "shark-macos.zip" .
- name: Upload macOS build
uses: actions/upload-artifact@v3
with:
name: macOS shark
path: dist/shark-macos.zip
- name: Upload artifacts to tagged release
if: github.ref_type == 'tag'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ github.ref_name }}
run: |
# Because we have multiple OSes in the build matrix, we need to either
# create a new release, or upload to the release if it already exists.
if gh release view "$TAG"; then
gh release upload "$TAG" dist/*.zip
else
# Work around GH being daft:
# https://github.com/actions/checkout/issues/290
git fetch --force --tags
echo '```' > RELEASE_NOTES
git tag -l --format='%(contents)' "$TAG" >> RELEASE_NOTES
echo '```' >> RELEASE_NOTES
cat RELEASE_NOTES
gh release create "$TAG" dist/*.zip -F RELEASE_NOTES
fi