-
Notifications
You must be signed in to change notification settings - Fork 0
139 lines (134 loc) · 4.54 KB
/
ci.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: CI/CD
on: [push, pull_request]
jobs:
build-linux:
strategy:
matrix:
RUNNER:
- ubuntu-22.04
- ubuntu-24.04
runs-on: ${{matrix.RUNNER}}
env:
CXXFLAGS: -Wall -Wextra -Wno-deprecated-declarations -Werror -Wno-stringop-overflow
steps:
- name: Setup system name
run: echo "SYSTEM_NAME=$(lsb_release --codename --short)" >> $GITHUB_ENV
- uses: actions/checkout@v4
with:
submodules: true
lfs: true
- name: Install prerequisites
run: sudo apt-get update -y && sudo apt-get install -y
libasound2-dev
libfmt-dev
libfreetype-dev
libsdl2-dev
libspdlog-dev
nlohmann-json3-dev
- name: Configure CMake
run: cmake
-S ${{github.workspace}}
-B ${{github.workspace}}/build
-D CMAKE_BUILD_TYPE=Release
-D MC_COMMIT_SHA=${{github.sha}}
-D MC_BUILD_NUMBER=${{github.run_number}}
-D CPACK_GENERATOR=DEB
-D CPACK_SYSTEM_NAME=$SYSTEM_NAME
- name: Build
run: cmake --build ${{github.workspace}}/build --target midiconn -j $(nproc)
- name: Create DEB package
run: cd ${{github.workspace}}/build && cpack -C Release
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux-${{env.SYSTEM_NAME}}
path: |
${{github.workspace}}/build/midiconn
${{github.workspace}}/build/*.deb
build-flatpak:
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-23.08
options: --privileged
steps:
- uses: actions/checkout@v4
with:
submodules: true
lfs: true
- name: Validate metainfo
run: appstream-util validate
data/packaging/xyz.safeworlds.midiconn.metainfo.xml
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
manifest-path: ${{github.workspace}}/data/packaging/xyz.safeworlds.midiconn.yml
cache-key: flatpak-builder-${{ github.sha }}
build-windows:
runs-on: windows-latest
env:
vcpkg-prereqs: nlohmann-json:x64-windows spdlog:x64-windows sdl2:x64-windows freetype[core]:x64-windows zlib:x64-windows
steps:
- uses: actions/checkout@v4
with:
submodules: true
lfs: true
- name: Restore vcpkg prerequisites cache
id: restore-cache-vcpkg
uses: actions/cache/restore@v4
with:
path: C:\vcpkg
key: ${{env.vcpkg-prereqs}}
- name: Install prerequisites
if: ${{ steps.restore-cache-vcpkg.outputs.cache-hit != 'true' }}
run: vcpkg install ${{env.vcpkg-prereqs}}
- name: Save vcpkg prerequisites cache
if: ${{ steps.restore-cache-vcpkg.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v4
with:
path: C:\vcpkg
key: ${{env.vcpkg-prereqs}}
- name: Configure CMake
run: cmake
-B ${{github.workspace}}/build
-D MC_COMMIT_SHA=${{github.sha}}
-D MC_BUILD_NUMBER=${{github.run_number}}
-D MC_CHECK_FOR_UPDATES=ON
-D CMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake
-D CMAKE_CXX_FLAGS="/await /EHsc"
-T host=x64
-A x64
- name: Build
run: cmake --build ${{github.workspace}}/build --target midiconn --config Release
- name: Build installer
run: cd ${{github.workspace}}\build; cpack -C Release
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows
path: |
${{github.workspace}}\build\Release\*.exe
${{github.workspace}}\build\Release\*.dll
${{github.workspace}}\build\*.msi
release:
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs:
- build-linux
- build-windows
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
files: |
${{github.workspace}}/artifact/*.deb
${{github.workspace}}/artifact/*.msi
- name: Push artifacts to itch.io
shell: bash
run: |
wget https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default -O butler.zip
unzip butler.zip
export BUTLER_API_KEY=${{ secrets.BUTLER_API_KEY }}
./butler push ${{github.workspace}}/artifact/*.msi mfeproject/midiconn:windows-msi --userversion $GITHUB_REF_NAME
./butler push ${{github.workspace}}/artifact/*.deb mfeproject/midiconn:ubuntu2204-deb --userversion $GITHUB_REF_NAME