]> git.lizzy.rs Git - minetest.git/blob - .gitlab-ci.yml
Gitlab-CI: keep build workspace only 1 hour
[minetest.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   MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git"
13
14 .build_template: &build_definition
15   stage: build
16   script:
17     - mkdir cmakebuild
18     - mkdir -p artifact/minetest/usr/
19     - cd cmakebuild
20     - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE ..
21     - make -j2
22     - make install
23   artifacts:
24     when: on_success
25     expire_in: 1h
26     paths:
27       - artifact/*
28
29 .debpkg_template: &debpkg_template
30   stage: package
31   before_script:
32     - apt-get update -y
33     - apt-get install -y git
34     - mkdir -p build/deb/minetest/DEBIAN/
35     - cp misc/debpkg-control build/deb/minetest/DEBIAN/control
36     - cp -Rp artifact/minetest/usr build/deb/minetest/
37   script:
38     - git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest
39     - rm -Rf build/deb/minetest/usr/share/minetest/games/minetest/.git
40     - sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control
41     - sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control
42     - cd build/deb/ && dpkg-deb -b minetest/
43   artifacts:
44     when: on_success
45     expire_in: 30 day
46     paths:
47       - build/deb/*.deb
48
49 .debpkg_install: &debpkg_install
50   stage: deploy
51   before_script:
52     - apt-get update -y
53     - apt-get install -y libc6 libcurl3-gnutls libfreetype6 libirrlicht1.8 $LEVELDB_PKG liblua5.1-0 libluajit-5.1-2 libopenal1 libstdc++6 libvorbisfile3 libx11-6 zlib1g
54   script:
55     - dpkg -i build/deb/*.deb
56
57 ##
58 ## Debian
59 ##
60
61 # Jessie
62
63 build:debian-8:
64   <<: *build_definition
65   image: debian:8
66   before_script:
67     - apt-get update -y
68     - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
69
70 package:debian-8:
71   image: debian:8
72   dependencies:
73     - build:debian-8
74   variables:
75     LEVELDB_PKG: libleveldb1
76   <<: *debpkg_template
77
78 deploy:debian-8:
79   image: debian:8
80   dependencies:
81     - package:debian-8
82   variables:
83     LEVELDB_PKG: libleveldb1
84   <<: *debpkg_install
85
86 # Stretch
87
88 build:debian-9:
89  <<: *build_definition
90  image: debian:9
91  before_script:
92    - apt-get update -y
93    - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
94
95 package:debian-9:
96   image: debian:9
97   dependencies:
98     - build:debian-9
99   variables:
100     LEVELDB_PKG: libleveldb1v5
101   <<: *debpkg_template
102
103 deploy:debian-9:
104   image: debian:9
105   dependencies:
106     - package:debian-9
107   variables:
108     LEVELDB_PKG: libleveldb1v5
109   <<: *debpkg_install
110
111 ##
112 ## Ubuntu
113 ##
114
115 # Trusty
116
117 build:ubuntu-14.04:
118  <<: *build_definition
119  image: ubuntu:trusty
120  before_script:
121    - apt-get update -y
122    - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
123
124 package:ubuntu-14.04:
125   image: ubuntu:trusty
126   dependencies:
127     - build:ubuntu-14.04
128   variables:
129     LEVELDB_PKG: libleveldb1
130   <<: *debpkg_template
131
132 deploy:ubuntu-14.04:
133   image: ubuntu:trusty
134   dependencies:
135     - package:ubuntu-14.04
136   variables:
137     LEVELDB_PKG: libleveldb1
138   <<: *debpkg_install
139
140 # Xenial
141
142 build:ubuntu-16.04:
143  <<: *build_definition
144  image: ubuntu:xenial
145  before_script:
146    - apt-get update -y
147    - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
148
149 package:ubuntu-16.04:
150   image: ubuntu:xenial
151   dependencies:
152     - build:ubuntu-16.04
153   variables:
154     LEVELDB_PKG: libleveldb1v5
155   <<: *debpkg_template
156
157 deploy:ubuntu-16.04:
158   image: ubuntu:xenial
159   dependencies:
160     - package:ubuntu-16.04
161   variables:
162     LEVELDB_PKG: libleveldb1v5
163   <<: *debpkg_install
164
165 # Yakkety
166
167 build:ubuntu-16.10:
168  <<: *build_definition
169  image: ubuntu:yakkety
170  before_script:
171    - apt-get update -y
172    - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
173
174 package:ubuntu-16.10:
175   image: ubuntu:yakkety
176   dependencies:
177     - build:ubuntu-16.10
178   variables:
179     LEVELDB_PKG: libleveldb1v5
180   <<: *debpkg_template
181
182 deploy:ubuntu-16.10:
183   image: ubuntu:yakkety
184   dependencies:
185     - package:ubuntu-16.10
186   variables:
187     LEVELDB_PKG: libleveldb1v5
188   <<: *debpkg_install
189
190 # Zesty
191
192 build:ubuntu-17.04:
193  <<: *build_definition
194  image: ubuntu:zesty
195  before_script:
196    - apt-get update -y
197    - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
198
199 package:ubuntu-17.04:
200   image: ubuntu:zesty
201   dependencies:
202     - build:ubuntu-17.04
203   variables:
204     LEVELDB_PKG: libleveldb1v5
205   <<: *debpkg_template
206
207 deploy:ubuntu-17.04:
208   image: ubuntu:zesty
209   dependencies:
210     - package:ubuntu-17.04
211   variables:
212     LEVELDB_PKG: libleveldb1v5
213   <<: *debpkg_install
214
215 ##
216 ## Fedora
217 ##
218
219 build:fedora-24:
220   <<: *build_definition
221   image: fedora:24
222   before_script:
223     - dnf -y install make automake gcc gcc-c++ kernel-devel cmake libcurl* openal* libvorbis* libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel