-
Notifications
You must be signed in to change notification settings - Fork 14
133 lines (118 loc) · 3.68 KB
/
ci.yaml
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
name: ci
on:
push:
branches:
- "main"
tags:
- "v*.*.*"
pull_request:
branches:
- "main"
env:
PREMAKE_VERSION: "5.0.0-beta2"
jobs:
build-test-linux:
env:
PREMAKE_CONFIG: gmake2
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install multilib
run: |
sudo apt-get update
sudo apt-get install gcc-multilib g++-multilib
- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}
- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
- name: Build
working-directory: ${{ github.workspace }}
run: make -C build -j$(nproc) config=release_x86 all
- name: Test
working-directory: ${{ github.workspace }}/build/lib/Release_x86/tests
run: |
./ObjCommonTests
./ObjLoadingTests
./ParserTests
./ZoneCodeGeneratorLibTests
./ZoneCommonTests
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: oat-linux
path: |
${{ github.workspace }}/build/bin/Release_x86
build-test-windows:
env:
PREMAKE_CONFIG: vs2022
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Add MSBuild to PATH
uses: microsoft/[email protected]
- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}
- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
- name: Build
working-directory: ${{ github.workspace }}
run: msbuild /m /p:Configuration=Release /p:Platform=Win32 build
- name: Test
working-directory: ${{ github.workspace }}/build/lib/Release_x86/tests
run: |
$combinedExitCode = 0
./ObjCommonTests
$combinedExitCode = [System.Math]::max($combinedExitCode, $LASTEXITCODE)
./ObjLoadingTests
$combinedExitCode = [System.Math]::max($combinedExitCode, $LASTEXITCODE)
./ParserTests
$combinedExitCode = [System.Math]::max($combinedExitCode, $LASTEXITCODE)
./ZoneCodeGeneratorLibTests
$combinedExitCode = [System.Math]::max($combinedExitCode, $LASTEXITCODE)
./ZoneCommonTests
$combinedExitCode = [System.Math]::max($combinedExitCode, $LASTEXITCODE)
exit $combinedExitCode
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: oat-windows
path: |
${{ github.workspace }}/build/bin/Release_x86
release:
if: startsWith(github.ref, 'refs/tags/')
needs:
- build-test-linux
- build-test-windows
runs-on: ubuntu-latest
permissions:
actions: read
contents: write
steps:
- uses: actions/download-artifact@v4
- name: Zip artifacts
run: |
7z a oat-linux.tar ./oat-linux/*
7z a oat-linux.tar.gz ./oat-linux.tar
7z a oat-windows.zip ./oat-windows/*
- uses: ncipollo/release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
artifacts: "oat-linux.tar.gz,oat-windows.zip"
artifactErrorsFailBuild: true
allowUpdates: true
draft: true
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true