diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 28e35a971..9f7917f59 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,11 +16,11 @@ variables: stage: build before_script: - apt-get update - - 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 + - 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 -DBUILD_SERVER=TRUE .. + - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE .. - make -j $(($(nproc) + 1)) - make install artifacts: @@ -29,164 +29,14 @@ variables: paths: - artifact/* -.debpkg_template: - stage: package - before_script: - - apt-get update - - apt-get install -y git - - mkdir -p build/deb/minetest/DEBIAN/ - - cp misc/debpkg-control build/deb/minetest/DEBIAN/control - - cp -a artifact/minetest/usr build/deb/minetest/ - script: - - git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game - - rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git - - sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control - - sed -i 's/JPEG_PLACEHOLDER/'$JPEG_PKG'/g' build/deb/minetest/DEBIAN/control - - sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control - - sed -i 's/JSONCPP_PLACEHOLDER/'$JSONCPP_PKG'/g' build/deb/minetest/DEBIAN/control - - cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../ - artifacts: - expire_in: 90 day - paths: - - ./*.deb - -.debpkg_install: - stage: deploy - before_script: - - apt-get update -qy - script: - - apt-get install -y ./*.deb - - minetest --version - ## -## Debian +## Ubuntu (prerequisite for AppImage build) ## -# Stretch - -build:debian-9: - extends: .build_template - image: debian:9 - -package:debian-9: - extends: .debpkg_template - image: debian:9 - needs: - - build:debian-9 - variables: - JSONCPP_PKG: libjsoncpp1 - LEVELDB_PKG: libleveldb1v5 - JPEG_PKG: libjpeg62-turbo - -deploy:debian-9: - extends: .debpkg_install - image: debian:9 - needs: - - package:debian-9 - -# Buster - -build:debian-10: - extends: .build_template - image: debian:10 - -package:debian-10: - extends: .debpkg_template - image: debian:10 - needs: - - build:debian-10 - variables: - JSONCPP_PKG: libjsoncpp1 - LEVELDB_PKG: libleveldb1d - JPEG_PKG: libjpeg62-turbo - -deploy:debian-10: - extends: .debpkg_install - image: debian:10 - needs: - - package:debian-10 - -# Bullseye - -build:debian-11: - extends: .build_template - image: debian:11 - -package:debian-11: - extends: .debpkg_template - image: debian:11 - needs: - - build:debian-11 - variables: - JSONCPP_PKG: libjsoncpp24 - LEVELDB_PKG: libleveldb1d - JPEG_PKG: libjpeg62-turbo - -deploy:debian-11: - extends: .debpkg_install - image: debian:11 - needs: - - package:debian-11 - -## -## Ubuntu -## - -# Bionic - -build:ubuntu-18.04: - extends: .build_template - image: ubuntu:bionic - -package:ubuntu-18.04: - extends: .debpkg_template - image: ubuntu:bionic - needs: - - build:ubuntu-18.04 - variables: - JSONCPP_PKG: libjsoncpp1 - LEVELDB_PKG: libleveldb1v5 - JPEG_PKG: libjpeg-turbo8 - -deploy:ubuntu-18.04: - extends: .debpkg_install - image: ubuntu:bionic - needs: - - package:ubuntu-18.04 - -# Focal - build:ubuntu-20.04: extends: .build_template image: ubuntu:focal -package:ubuntu-20.04: - extends: .debpkg_template - image: ubuntu:focal - needs: - - build:ubuntu-20.04 - variables: - JSONCPP_PKG: libjsoncpp1 - LEVELDB_PKG: libleveldb1d - JPEG_PKG: libjpeg-turbo8 - -deploy:ubuntu-20.04: - extends: .debpkg_install - image: ubuntu:focal - needs: - - package:ubuntu-20.04 - -## -## Fedora -## - -# Fedora 28 <-> RHEL 8 -build:fedora-28: - extends: .build_template - image: fedora:28 - before_script: - - 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 - ## ## MinGW for Windows ## @@ -235,10 +85,7 @@ package:docker: before_script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com script: - - docker build . -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME -t ${CONTAINER_IMAGE}/server:latest - - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA - - docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME - - docker push ${CONTAINER_IMAGE}/server:latest + - ./util/ci/docker.sh ## ## Gitlab Pages (Lua API documentation) @@ -248,9 +95,7 @@ pages: stage: deploy image: python:3.8 before_script: - - pip install git+https://github.com/Python-Markdown/markdown.git - - pip install git+https://github.com/mkdocs/mkdocs.git - - pip install pygments + - pip install -U -r doc/mkdocs/requirements.txt script: - cd doc/mkdocs && ./build.sh artifacts: @@ -267,22 +112,21 @@ package:appimage-client: stage: package image: appimagecrafters/appimage-builder needs: - - build:ubuntu-18.04 + - build:ubuntu-20.04 before_script: - - apt-get update -y + - apt-get update - apt-get install -y git # Collect files - mkdir AppDir - cp -a artifact/minetest/usr/ AppDir/usr/ - - rm AppDir/usr/bin/minetestserver - cp -a clientmods AppDir/usr/share/minetest - script: - git clone $MINETEST_GAME_REPO AppDir/usr/share/minetest/games/minetest_game - - rm -rf AppDir/usr/share/minetest/games/minetest/.git - - export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA + - 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 - - appimage-builder --skip-test + 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: diff --git a/doc/mkdocs/requirements.txt b/doc/mkdocs/requirements.txt new file mode 100644 index 000000000..e16265312 --- /dev/null +++ b/doc/mkdocs/requirements.txt @@ -0,0 +1,2 @@ +mkdocs~=1.3.0 +pygments~=2.12.0 diff --git a/AppImageBuilder.yml b/misc/AppImageBuilder.yml similarity index 58% rename from AppImageBuilder.yml rename to misc/AppImageBuilder.yml index 5788e246b..4fecb7ff5 100644 --- a/AppImageBuilder.yml +++ b/misc/AppImageBuilder.yml @@ -4,7 +4,7 @@ AppDir: path: ./AppDir app_info: - id: minetest + id: net.minetest.minetest name: Minetest icon: minetest version: !ENV ${VERSION} @@ -17,36 +17,35 @@ AppDir: apt: arch: amd64 sources: - - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic main universe + - sourceline: deb http://archive.ubuntu.com/ubuntu/ focal main universe key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32' - - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates main universe - - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-backports main universe - - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-security main universe + - sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-updates main universe + - sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-backports main universe + - sourceline: deb http://archive.ubuntu.com/ubuntu/ focal-security main universe include: - libc6 + - libcrypt1 - libcurl3-gnutls - libfreetype6 - libgl1 - libjpeg-turbo8 - libjsoncpp1 - - libleveldb1v5 + - libleveldb1d + - libluajit-5.1-2 - libopenal1 - libpng16-16 - libsqlite3-0 - libstdc++6 - libvorbisfile3 - libx11-6 - - libxxf86vm1 + - libxi6 - zlib1g files: exclude: - usr/share/man - - usr/share/doc/*/README.* - - usr/share/doc/*/changelog.* - - usr/share/doc/*/NEWS.* - - usr/share/doc/*/TODO.* + - usr/share/doc AppImage: update-information: None diff --git a/misc/debpkg-control b/misc/debpkg-control deleted file mode 100644 index e867f3eb9..000000000 --- a/misc/debpkg-control +++ /dev/null @@ -1,33 +0,0 @@ -Section: games -Priority: extra -Standards-Version: 3.6.2 -Package: minetest-staging -Version: 5.4.0-DATEPLACEHOLDER -Depends: libc6, libcurl3-gnutls, libfreetype6, libgl1, JPEG_PLACEHOLDER, JSONCPP_PLACEHOLDER, LEVELDB_PLACEHOLDER, libopenal1, libpng16-16, libsqlite3-0, libstdc++6, libvorbisfile3, libx11-6, libxxf86vm1, libzstd1, zlib1g -Maintainer: Loic Blot -Homepage: https://www.minetest.net/ -Vcs-Git: https://github.com/minetest/minetest.git -Vcs-Browser: https://github.com/minetest/minetest.git -Architecture: amd64 -Build-Depends: - cmake, - gettext, - libcurl4-gnutls-dev, - libfreetype6-dev, - libgl1-mesa-dev, - libjpeg-dev, - libjsoncpp-dev, - libleveldb-dev, - libogg-dev, - libopenal-dev, - libpng-dev, - libsqlite3-dev, - libvorbis-dev, - libx11-dev, - zlib1g-dev -Description: Multiplayer infinite-world block sandbox game - Minetest is a minecraft-inspired game written from scratch and licensed - under the LGPL (version 2.1 or later). It supports both survival and creative - modes along with multiplayer support, dynamic lighting, and an "infinite" map - generator. -Conflicts: minetestc55, minetest, minetest-server, minetest-data diff --git a/util/ci/docker.sh b/util/ci/docker.sh new file mode 100755 index 000000000..dd671a007 --- /dev/null +++ b/util/ci/docker.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e +name=${CONTAINER_IMAGE}/server + +# build and publish Docker image (gitlab-ci) + +docker build . \ + -t ${name}:${CI_COMMIT_SHA} \ + -t ${name}:${CI_COMMIT_REF_NAME} \ + -t ${name}:latest + +docker push ${name}:${CI_COMMIT_SHA} +docker push ${name}:${CI_COMMIT_REF_NAME} +[ "$CI_COMMIT_BRANCH" = master ] && docker push ${name}:latest + +exit 0