diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 963d08ea1..dd0a7dd8b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,30 @@ -# Build manually : +# Configuration for Continous Integration +# +# Copyright (C) 2017 AleaJactaEst +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Example to execute locally: +# gitlab-runner exec docker --timeout=3600 'Linux client build' # gitlab-runner exec docker --timeout=3600 'Linux server debian_amd64_strech build' # gitlab-runner exec docker --timeout=3600 'Linux client debian_amd64_strech build' # gitlab-runner exec docker --timeout=3600 'Linux client_static debian_amd64_strech build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client build' +# gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client archlinux build' +# gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client fedora_amd64_27 build' +# gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client ubuntu_amd64_17_10 build' + stages: - build - test @@ -49,7 +71,10 @@ Linux client build: # Configuration - cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/ -DCMAKE_BUILD_TYPE=Release -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_UNIX_STRUCTURE=OFF -DWITH_INSTALL_LIBRARIES=OFF -DWITH_LUA52=ON ../../code # Compilation et installation - - make $optionproc install DESTDIR=../../Linux/x86_64 + - make $optionproc khanat_client_patcher khanat_client + #- make $optionproc install DESTDIR=../../Linux/x86_64 + - mkdir -p ../../Linux/x86_64 + - cp bin/* ../../Linux/x86_64 # Packaging - cd ../../ - cp ./dist/khanat/autoextract_script.sh ./Linux/x86_64/ @@ -68,9 +93,10 @@ Linux server debian_amd64_strech build: script: # Prepare environment - apt-get update - - apt-get dist-upgrade -y + - apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server - - apt-get install -y git + - apt-get install -y + git libcurl4-openssl-dev libfreetype6-dev libx11-dev @@ -120,7 +146,7 @@ Linux server debian_amd64_strech build: - (cd code/build; make ryzom_admin_service ryzom_ai_service ryzom_backup_service ryzom_dynamic_scenario_service ryzom_entities_game_service ryzom_frontend_service ryzom_general_utilities_service ryzom_gpm_service ryzom_ios_service ryzom_log_analyser_service ryzom_logger_service ryzom_mail_forum_service ryzom_mirror_service ryzom_mission_compiler ryzom_monitor_service ryzom_naming_service ryzom_patchman_service ryzom_pd_support_service ryzom_persistant_data_service ryzom_reference_builder_service ryzom_session_browser_service ryzom_shard_unifier_service ryzom_tick_service ryzom_welcome_service sheets_packer bnp_make make_sheet_id patch_gen) - (cd code/build/bin; ls -lh) artifacts: - name: "khanat-server-debian_strech-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" + name: "khanat-server-debian_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin expire_in: 2 week @@ -134,41 +160,38 @@ Linux client debian_amd64_strech build: script: # Prepare environment - apt-get update - - apt-get dist-upgrade -y - - apt-get install -y libfreetype6-dev - libx11-dev - libgl1-mesa-dev - libxxf86vm-dev - libxrandr-dev - libxrender-dev - libopenal-dev - libxml2-dev - cmake - build-essential - libpng-dev - libjpeg62-turbo-dev - rrdtool - bison - libxmu-dev - autoconf - automake - libgif-dev - cpputest - libssl-dev - liblzma-dev - unzip - zlib1g-dev - libssh2-1-dev - libboost-all-dev - libopenal-dev - libgl1-mesa-dev - mercurial - wget - autogen - libtool - libtool-bin - fakeroot - libxml2-dev + - apt-get dist-upgrade -y + - apt-get install -y autoconf + autogen + automake + bison + build-essential + cmake + cpputest + fakeroot + libboost-all-dev + libfreetype6-dev + libgif-dev + libgl1-mesa-dev + libjpeg62-turbo-dev + liblzma-dev + libopenal-dev + libpng-dev + libssh2-1-dev + libssl-dev + libtool + libtool-bin + libx11-dev + libxml2-dev + libxmu-dev + libxrandr-dev + libxrender-dev + libxxf86vm-dev + mercurial + rrdtool + unzip + wget + zlib1g-dev - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz @@ -189,7 +212,6 @@ Linux client debian_amd64_strech build: - code/build/bin expire_in: 2 week - Linux client_static debian_amd64_strech build: stage: build tags: @@ -198,41 +220,39 @@ Linux client_static debian_amd64_strech build: script: # Prepare environment - apt-get update - - apt-get dist-upgrade -y - - apt-get install -y libfreetype6-dev - libx11-dev - libgl1-mesa-dev - libxxf86vm-dev - libxrandr-dev - libxrender-dev - libopenal-dev - libxml2-dev - cmake - build-essential - libpng-dev - libjpeg62-turbo-dev - rrdtool - bison - libxmu-dev + - apt-get dist-upgrade -y + - apt-get install -y autoconf - automake - libgif-dev - cpputest - libssl-dev - liblzma-dev - unzip - zlib1g-dev - libssh2-1-dev - libboost-all-dev - libopenal-dev - libgl1-mesa-dev - mercurial - wget autogen + automake + bison + build-essential + cmake + cpputest + fakeroot + libboost-all-dev + libfreetype6-dev + libgif-dev + libgl1-mesa-dev + libjpeg62-turbo-dev + liblzma-dev + libopenal-dev + libpng-dev + libssh2-1-dev + libssl-dev libtool libtool-bin - fakeroot + libx11-dev libxml2-dev + libxmu-dev + libxrandr-dev + libxrender-dev + libxxf86vm-dev + mercurial + rrdtool + unzip + wget + zlib1g-dev - apt-get install -y liblua5.2-0 liblua5.2-dev # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz @@ -269,7 +289,14 @@ Linux client_static debian_amd64_strech build: - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 - - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5-4+deb9u1.debian.tar.xz -O libvorbis.debian.tar.xz + # Get list package + - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis + # get last patch for our release + - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) + # get only name of the patch + - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} + # download this patch + - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done @@ -285,11 +312,213 @@ Linux client_static debian_amd64_strech build: - (cd code/build; make khanat_client) - (cd code/build/bin; ls -lh) artifacts: - name: "khanat-client_static-debian_strech-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" + name: "khanat-client_static-debian_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin expire_in: 2 week +# Fedora Client +Linux client fedora_amd64_27 build: + stage: build + tags: + - Docker + image: amd64/fedora:27 + script: + # Prepare environment + - yum update -y + - yum install -y + autoconf + autogen + automake + bison + boost-devel + cmake + fakeroot + freetype-devel + gcc + gcc-c++ + giflib-devel + libcurl-devel + libjpeg-turbo-devel + libogg-devel + libpng-devel + libssh2-devel + libtool + libvorbis-devel + libX11-devel + libxml2-devel + libXmu + libXrandr-devel + libXrender-devel + libXxf86vm-devel + luabind-devel + lua-devel + lzma-devel + make + mercurial + mesa-libGL-devel + openal-soft-devel + openssl-devel + patch + rrdtool + unzip + wget + xz + zlib-devel + # Action + - mkdir -p code/build + - (cd code; patch -i ../patch/libcrypto.patch) + - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=OFF ..) + - (cd code/build; make khanat_client) + - (cd code/build/bin; ls -lh) + artifacts: + name: "khanat-client-fedora_27-$CI_COMMIT_REF_NAME" + paths: + - code/build/bin + expire_in: 2 week + +# Ubuntu Client +Linux client ubuntu_amd64_17_10 build: + stage: build + tags: + - Docker + image: amd64/ubuntu:17.10 + script: + # Prepare environment + - apt-get update + - apt-get dist-upgrade -y + - apt-get install -y autoconf + autogen + automake + bison + build-essential + cmake + cpputest + fakeroot + libboost-all-dev + libcurl4-openssl-dev + libfreetype6-dev + libgif-dev + libgl1-mesa-dev + libjpeg62-dev + liblzma-dev + libopenal-dev + libpng-dev + libssh2-1-dev + libssl-dev + libtool + libtool-bin + libx11-dev + libxml2-dev + libxmu-dev + libxrandr-dev + libxrender-dev + libxxf86vm-dev + mercurial + rrdtool + unzip + wget + zlib1g-dev + - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev + # Action + - mkdir -p code/build + - (cd code; patch -i ../patch/libcrypto.patch) + - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=OFF ..) + - (cd code/build; make khanat_client) + - (cd code/build/bin; ls -lh) + artifacts: + name: "khanat-client-ubuntu_17_10-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" + paths: + - code/build/bin + expire_in: 2 week + +# Archlinux Client +Linux client archlinux build: + stage: build + tags: + - Docker + image: base/archlinux + script: + # Prepare environment + - pacman -Suy --noconfirm + autoconf + autogen + automake + binutils + boost + boost-libs + cmake + fakeroot + gcc + giflib + git + glu + libjpeg-turbo + libogg + libpng + libssh + libtool + libvorbis + libx11 + libxml2 + libxmu + libxrandr + libxrender + libxxf86vm + lua + make + mesa + openal + openssl + patch + pkg-config + sed + unzip + wget + xorg-xfd + xz + zlib + > pacman.log + # Install Yaourt + # Disable check root (never do that on real server) + - sed -i 's/EUID == 0/EUID == 12345/g' /usr/sbin/makepkg + - mkdir -p build + - cd build + - git clone https://aur.archlinux.org/package-query.git + - cd package-query + - yes | makepkg -si || echo $? + - cd .. + - git clone https://aur.archlinux.org/yaourt.git + - cd yaourt + - yes | makepkg -si || echo $? + - cd ../.. + - yaourt -Syyu --noconfirm --aur boost-build + # Build + - mkdir -p luabind + - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz + - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz + - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 + - tar xvf luabind-debian.tar.xz -C luabind || exit 2 + - cd luabind + - ls -l + - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done + - export -p DEB_HOST_MULTIARCH="/"; bjam -d2 release debug install cxxflags="-fPIC -Wno-deprecated -Wno-deprecated-declarations" + - export -p DEB_HOST_MULTIARCH="/"; bjam -d2 release debug install link=static cxxflags="-fPIC -Wno-deprecated -Wno-deprecated-declarations" + - cd .. + # Action + - mkdir -p code/build + - (cd code; patch -i ../patch/libcrypto.patch) + - (cd code; patch -i ../patch/libicuuc.patch) + - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON /opt/code ..) + - (cd code/build; make khanat_client) + - (cd code/build/bin; ls -lh) + artifacts: + name: "khanat-client-archlinux-$CI_COMMIT_REF_NAME" + paths: + - code/build/bin + expire_in: 2 week + +# Gentoo Client # Job de compilation pour OSX OSX client build: