-
Notifications
You must be signed in to change notification settings - Fork 1
135 lines (105 loc) · 4.08 KB
/
ci-mac.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
name: Build and Release (macOS)
on:
push:
branches:
- main
tags:
- '*'
paths-ignore:
- '**.md'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
paths-ignore:
- '**.md'
- 'changelog.lua'
- '.gitignore'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build:
if: github.event.pull_request.draft == false
name: Build for macOS
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: macos-15
arch: x64
- os: macos-15
arch: M1
env:
MACOSX_DEPLOYMENT_TARGET: 13.3
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 # Prevent brew updates in the ccache setup step (~2GB download ...)
steps:
# nproc is used to determine the number of parallel jobs
- name: Install GNU coreutils
run: brew install coreutils
- name: Check out Git repository
run: cd .. && git clone https://github.com/evo-lua/evo-runtime --recursive --jobs=$(nproc)
- name: Set up ccache
uses: hendrikmuhs/ccache-action@v1.2
- name: Install Ninja
run: brew install ninja
- name: Configure environment
run: |
echo "CC=ccache gcc" >> $GITHUB_ENV
echo "CXX=ccache g++" >> $GITHUB_ENV
- name: Build luajit
run: deps/luajit-unixbuild.sh && ls ninjabuild-unix
- name: Generate versions.lua # Required for those libraries that don't export versioning information
run: deps/discover-submodule-versions.sh && cat deps/versions.lua
- name: Build wgpu
run: deps/wgpu-unixbuild.sh && ls ninjabuild-unix
- name: Build luv and libuv
run: deps/luv-unixbuild.sh && ls ninjabuild-unix
- name: Build glfw
run: deps/glfw-unixbuild.sh && ls ninjabuild-unix
- name: Build miniz
run: deps/miniz-unixbuild.sh && ls ninjabuild-unix
- name: Build openssl
run: deps/openssl-unixbuild.sh && ls ninjabuild-unix
- name: Build rapidjson
run: deps/rapidjson-unixbuild.sh && ls ninjabuild-unix
- name: Build lua-openssl
run: deps/luaopenssl-unixbuild.sh && ls ninjabuild-unix
- name: Build zlib
run: deps/zlib-unixbuild.sh && ls ninjabuild-unix
- name: Build pcre
run: deps/pcre-unixbuild.sh && ls ninjabuild-unix
- name: Build uwebsockets
run: deps/uws-unixbuild.sh && ls ninjabuild-unix
- name: Build RmlUI with FreeType
run: deps/rml-unixbuild.sh && ls ninjabuild-unix
- name: Build LabSound
run: deps/labsound-unixbuild.sh && ls ninjabuild-unix
- name: Build runtime
run: ls && ./unixbuild.sh && ls ninjabuild-unix && cp ninjabuild-unix/evo . && ls
- name: Add executable to PATH
run: echo "$(pwd)" >> $GITHUB_PATH
- name: Run smoke tests
run: evo Tests/smoke-test.lua
- name: Run snapshot tests
run: evo Tests/snapshot-test.lua
- name: Run unit tests
run: evo Tests/unit-test.lua
- name: Run integration tests
run: evo Tests/integration-test.lua
- name: Run benchmarks
run: evo .github/run-all-benchmarks.lua
- name: Prepare artifacts
run: cp evo evo-macos-${{ matrix.arch }}
# GitHub adds a heading of their own, so remove the duplicate
- name: Generate CHANGELOG.MD
run: evo BuildTools/create-changelog.lua && tail -n +3 CHANGELOG.MD > CHANGELOG-GITHUB.MD && mv CHANGELOG-GITHUB.MD CHANGELOG.MD
- name: Publish new release
# Truly "continuous" releases may be overkill here, so better only release tagged versions
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: evo-macos-${{ matrix.arch }}
body_path: CHANGELOG.MD
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}