aboutsummaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 9f7917f594665c0bb92b466b2b5791b726677e24 (plain)
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
---
# Github repository is cloned every day on Gitlab.com
# https://gitlab.com/minetest/minetest
# Pipelines URL: https://gitlab.com/minetest/minetest/pipelines

stages:
  - build
  - package
  - deploy

variables:
  MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git"
  CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH

.build_template:
  stage: build
  before_script:
   - apt-get update
   - DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential gettext git cmake libpng-dev libjpeg-dev libxi-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 libluajit-5.1-dev
  script:
    - git clone https://github.com/minetest/irrlicht lib/irrlichtmt --depth 1 -b $(cat misc/irrlichtmt_tag.txt)
    - mkdir build && cd build
    - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE ..
    - make -j $(($(nproc) + 1))
    - make install
  artifacts:
    when: on_success
    expire_in: 1h
    paths:
      - artifact/*

##
## Ubuntu (prerequisite for AppImage build)
##

build:ubuntu-20.04:
  extends: .build_template
  image: ubuntu:focal

##
## MinGW for Windows
##

.generic_win_template:
  image: ubuntu:focal
  before_script:
    - apt-get update
    - DEBIAN_FRONTEND=noninteractive apt-get install -y wget xz-utils unzip git cmake gettext
    - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
    - tar -xaf mingw.tar.xz -C /usr

.build_win_template:
  extends: .generic_win_template
  stage: build
  artifacts:
    expire_in: 90 day
    paths:
      - minetest-*-win*/*

build:win32:
  extends: .build_win_template
  script:
    - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
    - unzip -q build/build/*.zip
  variables:
    WIN_ARCH: "i686"

build:win64:
  extends: .build_win_template
  script:
    - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
    - unzip -q build/build/*.zip
  variables:
    WIN_ARCH: "x86_64"

##
## Docker
##

package:docker:
  stage: package
  image: docker:stable
  services:
    - docker:dind
  before_script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
  script:
    - ./util/ci/docker.sh

##
## Gitlab Pages (Lua API documentation)
##

pages:
  stage: deploy
  image: python:3.8
  before_script:
    - pip install -U -r doc/mkdocs/requirements.txt
  script:
    - cd doc/mkdocs && ./build.sh
  artifacts:
    paths:
      - public
  only:
    - master

##
## AppImage
##

package:appimage-client:
  stage: package
  image: appimagecrafters/appimage-builder
  needs:
    - build:ubuntu-20.04
  before_script:
    - apt-get update
    - apt-get install -y git
    # Collect files
    - mkdir AppDir
    - cp -a artifact/minetest/usr/ AppDir/usr/
    - cp -a clientmods AppDir/usr/share/minetest
    - git clone $MINETEST_GAME_REPO AppDir/usr/share/minetest/games/minetest_game
    - rm -rf AppDir/usr/share/minetest/games/minetest_game/.git
    # Remove PrefersNonDefaultGPU property due to validation errors
    - sed -i '/PrefersNonDefaultGPU/d' AppDir/usr/share/applications/net.minetest.minetest.desktop
  script:
    - export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
    - appimage-builder --skip-test --recipe misc/AppImageBuilder.yml
  artifacts:
    expire_in: 90 day
    paths:
      - ./*.AppImage