-
-
Notifications
You must be signed in to change notification settings - Fork 0
153 lines (138 loc) · 4.88 KB
/
build.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
147
148
149
150
151
152
153
# ----------------------------------------------------------------------------
# GitHub Actions workflow to build the library and examples.
#
# See docs:
# - https://castle-engine.io/github_actions
# - https://docs.github.com/en/actions
# ----------------------------------------------------------------------------
name: Build
on:
pull_request:
push:
repository_dispatch:
types: [cge-docker-unstable-changed]
defaults:
run:
shell: bash
jobs:
# Make builds on "native" (not in Docker) runners.
build-native:
name: Build Native
strategy:
matrix:
runner: [
ubuntu-latest,
windows-latest,
# last Intel-based macOS
macos-12
]
include:
- runner: ubuntu-latest
library_extension: so
- runner: windows-latest
library_extension: dll
- runner: macos-12
library_extension: dylib
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
with:
repository: castle-engine/castle-engine
- name: Install FPC+Lazarus
uses: gcarreno/setup-lazarus@v3.3.1
with:
lazarus-version: stable
# - name: Install Linux dependencies
# if: ${{ matrix.runner == 'ubuntu-latest' }}
# run: |
# sudo apt-get update
# sudo apt-get --no-install-recommends -y install libgl-dev
# Build Castle Game Engine and set related environment variables.
- name: Castle Game Engine - Env CASTLE_ENGINE_PATH
run: echo "CASTLE_ENGINE_PATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV
- name: Castle Game Engine - Env PATH (Windows)
if: ${{ matrix.runner == 'windows-latest' }}
run: echo "PATH=${PATH}:`cygpath --unix ${CASTLE_ENGINE_PATH}/tools/build-tool/`" >> $GITHUB_ENV
- name: Castle Game Engine - Env PATH (non-Windows)
if: ${{ matrix.runner != 'windows-latest' }}
run: echo "PATH=$PATH:$CASTLE_ENGINE_PATH/tools/build-tool/" >> $GITHUB_ENV
- name: Castle Game Engine - Build
run: cd $CASTLE_ENGINE_PATH/tools/build-tool/ && ./castle-engine_compile.sh
- name: Set environment FPC_OS
run: echo "FPC_OS="`fpc -iTO` >> $GITHUB_ENV
- name: Set environment FPC_CPU
run: echo "FPC_CPU="`fpc -iTP` >> $GITHUB_ENV
- name: Build
run: |
cd src/deprecated_library/
./castleengine_compile.sh
ZIP_NAME=castle-library-model-viewer_-${FPC_OS}-${FPC_CPU}.zip
zip -r ${ZIP_NAME} *.${{ matrix.library_extension }}"
mv ${ZIP_NAME} ../../
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: build-native-${{ matrix.runner }}
path: "*.zip"
if-no-files-found: error
# Make builds on Docker runners.
build-using-docker:
name: Build Using Docker
runs-on: ubuntu-latest
container: kambi/castle-engine-cloud-builds-tools:cge-unstable
steps:
# Although CGE is already available in the container,
# check it out again, to be prepared for future when library code
# will move to this repo (castle-engine/castle-library-model-viewer).
- uses: actions/checkout@v4
with:
repository: castle-engine/castle-engine
- name: Build Win32
run: |
cd src/deprecated_library/
TARGET_OS=win32
TARGET_CPU=i386
castle-engine compile --verbose --os=$TARGET_OS --cpu=$TARGET_CPU
ZIP_NAME=castle-library-model-viewer_-${TARGET_OS}-${TARGET_CPU}.zip
zip -r ${ZIP_NAME} *.dll"
mv ${ZIP_NAME} ../../
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: build-docker-win32
path: "*.zip"
if-no-files-found: error
release:
name: Release
runs-on: ubuntu-latest
needs: [build-native, build-using-docker]
steps:
- name: Download packaged releases
uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: List downloaded files
run: ls -R
- name: GH CLI status
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh auth status
# Releases files in the "snapshot" release.
- name: Release Artifacts
if: ${{ github.ref == 'refs/heads/master' }}
run: gh release --repo ${{ github.repository }} upload snapshot --clobber *.zip *.tar.gz *.apk
env:
GH_TOKEN: ${{ github.token }}
update-release-tag:
name: Update Release Tag (make snapshot tag point to the build commit on master branch)
runs-on: ubuntu-latest
needs: [release]
steps:
- uses: actions/checkout@v4
- name: Update Release Tag
if: ${{ github.ref == 'refs/heads/master' }}
run: |
# --force allows to overwrite previous tag
git tag --force snapshot
# --force allows to push with overwritten tag
git push --force origin snapshot