khanat-opennel-code/.gitlab-ci.yml
2016-12-12 14:28:21 +00:00

152 lines
5.3 KiB
YAML

stages:
- build
- test
- staging
- production
## BUILDS
# Job de compilation pour Linux
Linux client build:
stage: build
only:
- develop
- /^release\/.*/
- /^feature\/.*(\+CI$|\+CI-LIN64.*)/
- tags
tags:
- Docker
image: debian:jessie
script:
# Installation des dépendances
- echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list
- apt-get update
- apt-get install -y g++ gcc cmake libcurl4-openssl-dev libgl1-mesa-dev libjpeg-dev libpng-dev libopenal-dev libfreetype6-dev libxxf86vm-dev libxrandr-dev libxrender-dev libvorbis-dev libluabind-dev libboost-dev libmysqlclient-dev libssl-dev liblzma-dev libxml2-dev makeself
# Installation des dépendances des dépendances statiques (à commenter si construction de Khanat en mode dynamique)
# libxml2 : python-pyicu (support d'unicode), python-dev (support de... python)
#- apt-get install -y wget python-pyicu python-dev
# Création de l'environnement de compilation
- mkdir -p BUILD/x86_64
- cd BUILD/x86_64
## Le curl des dépots a trop de dépendances en statique. On le recompile donc, afin d'aléger l'executable
# Téléchargement et décompression des dépendances à recompiller
#- wget -c http://curl.haxx.se/download/curl-7.50.0.tar.gz
#- tar xzf curl-7.50.0.tar.gz
# Compilation de curl
#- cd curl-7.50.0
#- ./configure --disable-ldap --disable-ldaps --disable-rtsp --disable-dict --disable-ipv6 --disable-crypto-auth --disable-sspi --disable-tls-srp --without-gnutls --without-librtmp --without-libidn --disable-versioned-symbols --disable-pop3 --without-libssh2 --with-ssl
#- make install -j$(nproc)
- cd ..
## Compilation de Khanat
# 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 -j$(nproc) install DESTDIR=../../Linux/x86_64
# Packaging
- cd ../../
- cp ./dist/khanat/autoextract_script.sh ./Linux/x86_64/
- chmod +x ./Linux/x86_64/autoextract_script.sh
- makeself --nox11 --target /tmp/khanat_installer ./Linux/x86_64/ khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run "Khanat installer" ./autoextract_script.sh
artifacts:
name: "khanat-$(echo $CI_BUILD_REF | head -c 7)-$CI_PIPELINE_ID-Linux-x86_64"
paths:
- khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run
# Job de compilation pour OSX
OSX client build:
stage: build
only:
- develop
- /^feature\/.*(\+CI$|\+CI-OSX.*)/
- tags
tags:
- OSX
script:
# Création de l'environnement de compilation
- mkdir -p BUILD/x86_64
- cd BUILD/x86_64
# Configuration
- cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFINAL_VERSION=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_STATIC_EXTERNAL=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_LUA52=ON ../../code
# Compilation et installation
- make -j$(($(sysctl -n hw.ncpu)/2)) install DESTDIR=../../OSX/x86_64
artifacts:
name: "khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-OSX-x86_64"
paths:
- OSX/x86_64/*
when: manual
## TESTS
Linux client test:
stage: test
only:
- develop
- /^release\/.*/
- /^feature\/.*(\+CI$|\+CI-LIN64.*)/
- tags
tags:
- Docker
image: ubuntu:14.04
script:
# Test de l'installation initiale
- ./khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run
dependencies:
- Linux client build
.OSX client test:
stage: test
only:
- develop
- /^release\/.*/
- /^feature\/.*(\+CI$|\+CI-LIN64.*)/
- tags
tags:
- OSX
script:
- echo "pas encore de test pour le client OSX"
dependencies:
- OSX client build
when: manual
##DEPLOYEMENT TO STAGING (TEST SERVER)
# Job de déploiment vers le staging. Inutilisé pour le moment, il pourrait servir à l'avenir pour déployer automatiquement les nouvelles versions du client/serveur vers l'environnement de staging (zone de test)
.Deploy to Staging:
stage: staging
environment: Staging
only:
- develop
- /^release\/.*/
- tags
tags:
- Docker
image: ubuntu:14.04
script:
- echo "pas encore de deployment"
dependencies:
- Linux client build
- Linux client test
- OSX client build
- OSX client test
when: manual
##DEPLOYEMENT TO PRODUCTION
# Job de déploiment vers la production. Inutilisé pour le moment, il pourrait servir à l'avenir pour déployer automatiquement les nouvelles versions du client/serveur vers l'environnement de production
.Release to Production:
stage: production
environment: Production
only:
- tags
tags:
- Docker
image: ubuntu:14.04
script:
- echo "pas encore de tag"
dependencies:
- Linux client build
- Linux client test
- OSX client build
- OSX client test
- Deploy to Staging
when: manual