.gitlab-ci.yml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. stages:
  6. - build
  7. - package
  8. - deploy
  9. variables:
  10. CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
  11. .build_template:
  12. stage: build
  13. before_script:
  14. - apt-get update
  15. - 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
  16. script:
  17. - git clone https://github.com/minetest/irrlicht lib/irrlichtmt --depth 1 -b $(cat misc/irrlichtmt_tag.txt)
  18. - mkdir build && cd build
  19. - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE ..
  20. - make -j $(($(nproc) + 1))
  21. - make install
  22. artifacts:
  23. when: on_success
  24. expire_in: 1h
  25. paths:
  26. - artifact/*
  27. ##
  28. ## Ubuntu (prerequisite for AppImage build)
  29. ##
  30. build:ubuntu-20.04:
  31. extends: .build_template
  32. image: ubuntu:focal
  33. ##
  34. ## MinGW for Windows
  35. ##
  36. .generic_win_template:
  37. image: ubuntu:focal
  38. before_script:
  39. - apt-get update
  40. - DEBIAN_FRONTEND=noninteractive apt-get install -y wget xz-utils unzip git cmake gettext
  41. - wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
  42. - tar -xaf mingw.tar.xz -C /usr
  43. .build_win_template:
  44. extends: .generic_win_template
  45. stage: build
  46. artifacts:
  47. expire_in: 90 day
  48. paths:
  49. - minetest-*-win*/*
  50. build:win32:
  51. extends: .build_win_template
  52. script:
  53. - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
  54. - unzip -q build/build/*.zip
  55. variables:
  56. WIN_ARCH: "i686"
  57. build:win64:
  58. extends: .build_win_template
  59. script:
  60. - EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
  61. - unzip -q build/build/*.zip
  62. variables:
  63. WIN_ARCH: "x86_64"
  64. ##
  65. ## Docker
  66. ##
  67. package:docker:
  68. stage: package
  69. image: docker:stable
  70. services:
  71. - docker:dind
  72. before_script:
  73. - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
  74. script:
  75. - ./util/ci/docker.sh
  76. ##
  77. ## Gitlab Pages (Lua API documentation)
  78. ##
  79. pages:
  80. stage: deploy
  81. image: python:3.8
  82. before_script:
  83. - pip install -U -r doc/mkdocs/requirements.txt
  84. script:
  85. - cd doc/mkdocs && ./build.sh
  86. artifacts:
  87. paths:
  88. - public
  89. only:
  90. - master
  91. ##
  92. ## AppImage
  93. ##
  94. package:appimage-client:
  95. stage: package
  96. image: appimagecrafters/appimage-builder
  97. needs:
  98. - build:ubuntu-20.04
  99. before_script:
  100. - apt-get update
  101. - apt-get install -y git
  102. # Collect files
  103. - mkdir AppDir
  104. - cp -a artifact/minetest/usr/ AppDir/usr/
  105. - cp -a clientmods AppDir/usr/share/minetest
  106. # Remove PrefersNonDefaultGPU property due to validation errors
  107. - sed -i '/PrefersNonDefaultGPU/d' AppDir/usr/share/applications/net.minetest.minetest.desktop
  108. script:
  109. - export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
  110. - appimage-builder --skip-test --recipe misc/AppImageBuilder.yml
  111. artifacts:
  112. expire_in: 90 day
  113. paths:
  114. - ./*.AppImage