]> git.lizzy.rs Git - dragonfireclient.git/blob - .gitlab-ci.yml
Merge pull request #59 from PrairieAstronomer/readme_irrlicht_change
[dragonfireclient.git] / .gitlab-ci.yml
1 ---
2 # Github repository is cloned every day on Gitlab.com
3 # https://gitlab.com/minetest/minetest
4 # Pipelines URL: https://gitlab.com/minetest/minetest/pipelines
5
6 stages:
7   - build
8   - package
9   - deploy
10
11 variables:
12   IRRLICHT_TAG: "1.9.0mt6"
13   MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git"
14   CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
15
16 .build_template:
17   stage: build
18   before_script:
19    - apt-get update
20    - DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential git cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libleveldb-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev
21   script:
22     - git clone https://github.com/minetest/irrlicht -b $IRRLICHT_TAG lib/irrlichtmt
23     - cmake -B build -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE ..
24     - cmake --build build --parallel $(($(nproc) + 1))
25     - cmake --install build
26   artifacts:
27     when: on_success
28     expire_in: 1h
29     paths:
30       - artifact/*
31
32 .debpkg_template:
33   stage: package
34   before_script:
35     - apt-get update
36     - apt-get install -y git
37     - mkdir -p build/deb/minetest/DEBIAN/
38     - cp misc/debpkg-control build/deb/minetest/DEBIAN/control
39     - cp -a artifact/minetest/usr build/deb/minetest/
40   script:
41     - git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game
42     - rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git
43     - sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control
44     - sed -i 's/JPEG_PLACEHOLDER/'$JPEG_PKG'/g' build/deb/minetest/DEBIAN/control
45     - sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control
46     - sed -i 's/JSONCPP_PLACEHOLDER/'$JSONCPP_PKG'/g' build/deb/minetest/DEBIAN/control
47     - cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../
48   artifacts:
49     expire_in: 90 day
50     paths:
51       - ./*.deb
52
53 .debpkg_install:
54   stage: deploy
55   before_script:
56     - apt-get update -qy
57   script:
58     - apt-get install -y ./*.deb
59     - minetest --version
60
61 ##
62 ## Debian
63 ##
64
65 # Stretch
66
67 build:debian-9:
68  extends: .build_template
69  image: debian:9
70
71 package:debian-9:
72   extends: .debpkg_template
73   image: debian:9
74   needs:
75     - build:debian-9
76   variables:
77     JSONCPP_PKG: libjsoncpp1
78     LEVELDB_PKG: libleveldb1v5
79     JPEG_PKG: libjpeg62-turbo
80
81 deploy:debian-9:
82   extends: .debpkg_install
83   image: debian:9
84   needs:
85     - package:debian-9
86
87 # Buster
88
89 build:debian-10:
90  extends: .build_template
91  image: debian:10
92
93 package:debian-10:
94   extends: .debpkg_template
95   image: debian:10
96   needs:
97     - build:debian-10
98   variables:
99     JSONCPP_PKG: libjsoncpp1
100     LEVELDB_PKG: libleveldb1d
101     JPEG_PKG: libjpeg62-turbo
102
103 deploy:debian-10:
104   extends: .debpkg_install
105   image: debian:10
106   needs:
107     - package:debian-10
108
109 # Bullseye
110
111 build:debian-11:
112  extends: .build_template
113  image: debian:11
114
115 package:debian-11:
116   extends: .debpkg_template
117   image: debian:11
118   needs:
119     - build:debian-11
120   variables:
121     JSONCPP_PKG: libjsoncpp24
122     LEVELDB_PKG: libleveldb1d
123     JPEG_PKG: libjpeg62-turbo
124
125 deploy:debian-11:
126   extends: .debpkg_install
127   image: debian:11
128   needs:
129     - package:debian-11
130
131 ##
132 ## Ubuntu
133 ##
134
135 # Bionic
136
137 build:ubuntu-18.04:
138   extends: .build_template
139   image: ubuntu:bionic
140
141 package:ubuntu-18.04:
142   extends: .debpkg_template
143   image: ubuntu:bionic
144   needs:
145     - build:ubuntu-18.04
146   variables:
147     JSONCPP_PKG: libjsoncpp1
148     LEVELDB_PKG: libleveldb1v5
149     JPEG_PKG: libjpeg-turbo8
150
151 deploy:ubuntu-18.04:
152   extends: .debpkg_install
153   image: ubuntu:bionic
154   needs:
155     - package:ubuntu-18.04
156
157 # Focal
158
159 build:ubuntu-20.04:
160   extends: .build_template
161   image: ubuntu:focal
162
163 package:ubuntu-20.04:
164   extends: .debpkg_template
165   image: ubuntu:focal
166   needs:
167     - build:ubuntu-20.04
168   variables:
169     JSONCPP_PKG: libjsoncpp1
170     LEVELDB_PKG: libleveldb1d
171     JPEG_PKG: libjpeg-turbo8
172
173 deploy:ubuntu-20.04:
174   extends: .debpkg_install
175   image: ubuntu:focal
176   needs:
177     - package:ubuntu-20.04
178
179 ##
180 ## Fedora
181 ##
182
183 # Fedora 28 <-> RHEL 8
184 build:fedora-28:
185   extends: .build_template
186   image: fedora:28
187   before_script:
188     - dnf -y install make git gcc gcc-c++ kernel-devel cmake libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel libzstd-devel
189
190 ##
191 ## MinGW for Windows
192 ##
193
194 .generic_win_template:
195   image: ubuntu:focal
196   before_script:
197     - apt-get update
198     - DEBIAN_FRONTEND=noninteractive apt-get install -y wget xz-utils unzip git cmake gettext
199     - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
200     - tar -xaf mingw.tar.xz -C /usr
201
202 .build_win_template:
203   extends: .generic_win_template
204   stage: build
205   artifacts:
206     expire_in: 90 day
207     paths:
208       - minetest-*-win*/*
209
210 build:win32:
211   extends: .build_win_template
212   script:
213     - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
214     - unzip -q build/build/*.zip
215   variables:
216     WIN_ARCH: "i686"
217
218 build:win64:
219   extends: .build_win_template
220   script:
221     - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
222     - unzip -q build/build/*.zip
223   variables:
224     WIN_ARCH: "x86_64"
225
226 ##
227 ## Docker
228 ##
229
230 package:docker:
231   stage: package
232   image: docker:stable
233   services:
234     - docker:dind
235   before_script:
236     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
237   script:
238     - docker build . -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME -t ${CONTAINER_IMAGE}/server:latest
239     - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA
240     - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME
241     - docker push ${CONTAINER_IMAGE}/server:latest
242
243 ##
244 ## Gitlab Pages (Lua API documentation)
245 ##
246
247 pages:
248   stage: deploy
249   image: python:3.8
250   before_script:
251     - pip install git+https://github.com/Python-Markdown/markdown.git
252     - pip install git+https://github.com/mkdocs/mkdocs.git
253     - pip install pygments
254   script:
255     - cd doc/mkdocs && ./build.sh
256   artifacts:
257     paths:
258       - public
259   only:
260     - master
261
262 ##
263 ## AppImage
264 ##
265
266 package:appimage-client:
267   stage: package
268   image: appimagecrafters/appimage-builder
269   needs:
270     - build:ubuntu-18.04
271   before_script:
272     - apt-get update -y
273     - apt-get install -y git
274     # Collect files
275     - mkdir AppDir
276     - cp -a artifact/minetest/usr/ AppDir/usr/
277     - rm AppDir/usr/bin/minetestserver
278     - cp -a clientmods AppDir/usr/share/minetest
279   script:
280     - git clone $MINETEST_GAME_REPO AppDir/usr/share/minetest/games/minetest_game
281     - rm -rf AppDir/usr/share/minetest/games/minetest/.git
282     - export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
283     # Remove PrefersNonDefaultGPU property due to validation errors
284     - sed -i '/PrefersNonDefaultGPU/d' AppDir/usr/share/applications/net.minetest.minetest.desktop
285     - appimage-builder --skip-test
286   artifacts:
287     expire_in: 90 day
288     paths:
289       - ./*.AppImage