summaryrefslogblamecommitdiff
path: root/.gitlab-ci.yml
blob: b410cdf30fdd4e5301d340cf9fbcfa301e880b79 (plain) (tree)
1
2
3
4
5
6
7
8
       
        
            
         
          
 
                                        
              


                            
                                          

                           

                                                               
 
                      
          

                                 


                                                
                                                  
                
 










                        


            
                
                     
                  
 





                      
                    


               
 


             
         


                                  
               
            

                                                      

            
 















                                                       
                 
         
                                   



                                    
               
            
                                                 
                                                       

                                                                                                           
                                                


            
           

                 

                                   
                                  

                                      
               
                      
            
                          


                                                                                                 
                                                


            
            

                 
                                   




                                                                                                                                                                                 
               
                      
            
                          


                                                                                                           


            
      
                 
         
                                   

                                    
                                   
                       
               
            
                          
                                                       

                                                                                                           
                                                

            
 
              
                 
         
                                   

                                                   
                                   
                       
               
            



                             
                          
                                                       

                                                                                                           
                                                

            
 
      

                 
                                   
                           
                                    
                                   
                      

               
                          



                                                                                                           

            
 
                   

                 
                                   

                                                                                                

               
                          


                                                                                                           

            
 
               

                 
                                   
                                                   
                                    
                                   

               
                      

               
                             
                            



                                                                                                           

            
 
                 
                 
         
                                   
                                             
                                    
               
            
                            
                                                       

                                                                                                           
                                                

            
 
                   
                 
         
                                   
                                                   
                                   
               
            
                            
                                                       

                                                                                                           

            
 
               
                 
         
                                   


                                                   
               
            




                             
                                                       

                                                                                                           
                                                
 
                  
                 
         



                                                                           
               
            

                           
                                                       
                                                         

                                                                                                 


            
              
          
              

                       
                      

                                                                              









                                                                                                            

                     

                                                               


                                  



            
              



                                   




                                                                                                           



                     


            
               








                                                                                                                                                                 
stages:
  - lint
  - prebuild
  - build
  - deploy

# with :; prevent from run it on windows
before_script:
  - ":; uname -a"
  - ":; cat /etc/os-release"
  - ":; pwd"
  - ":; cat /proc/sys/kernel/core_pattern"
  - ":; mkdir logs || true"
  - ":; ${UPDATEREPOS}"
  - ":; ${DOCKERRETRY} ${PMUPDATE} >logs/apt.log"
  - ":; ${DOCKERRETRY} ${PMINSTALL} ${PACKAGES} >>logs/apt.log"

image: debian:unstable
variables:
  GET_SOURCES_ATTEMPTS: "5"
  ARTIFACT_DOWNLOAD_ATTEMPTS: "5"
  UPDATEREPOS: "tools/ci/scripts/updaterepos.sh"
  PMUPDATE: "apt-get update"
  PMINSTALL: "apt-get install -y -qq"
  DOCKERRETRY: "./tools/ci/scripts/dockerretry.sh"
  GIT_DEPTH: "1"

.job-push: &job-push
  artifacts:
    paths:
    - logs
    when: always
    expire_in: 3 week
  except:
    - triggers
  dependencies: []

.job-always: &job-always
  artifacts:
    paths:
    - logs
    when: always
    expire_in: 3 week
  dependencies: []

.job-pages: &job-pages
  artifacts:
    paths:
    - logs
    - public
    when: always
    expire_in: 1 day
  dependencies:
  - doxygen
  - gcov_gcc6

# stage: lint
mplint:
  stage: lint
  script:
  - ./tools/ci/jobs/mplint.sh src
  - ./tools/ci/jobs/mplint.sh po
  - ./tools/ci/jobs/mplint.sh data
  <<: *job-push
  variables:
    PACKAGES: gcc g++ git 
              make autoconf automake autopoint gettext
  tags:
    - docker

linters:
  stage: lint
  script:
  - ./tools/ci/jobs/pngcheck.sh
  - ./tools/ci/jobs/imagemagiccheck.sh
  - ./tools/ci/jobs/cpplint.sh
  - ./tools/ci/jobs/nsiqcppstyle.sh
  image: debian:buster
  <<: *job-push
  variables:
    PACKAGES: python wget pngcheck imagemagick git grep
  tags:
    - docker

# stage: prebuild
clang-3.9:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/clang39.sh
  - ./tools/ci/scripts/runtests.sh 2
  - ./tools/ci/scripts/rundyecmd.sh
  image: debian:stretch
  <<: *job-push
  variables:
    PACKAGES: clang-3.9 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-5_sdl2:
  stage: prebuild
  script:
  - ./tools/ci/jobs/gcc5_sdl2.sh
  - ./tools/ci/scripts/rundyecmd.sh
  - ./tools/ci/scripts/runtests.sh
  - ./tools/ci/jobs/gcc5_sdl2_c++11.sh
  - ./tools/ci/scripts/runtests.sh 1
  <<: *job-push
  image: ubuntu:xenial
  variables:
    PACKAGES: gcc-5 g++-5 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-5_h_all:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc5_h.sh -std=c++0x -DDEBUGBUILD -DTMWA_SUPPORT -DENABLE_NLS -DUSE_OPENGL -DENABLE_LIBXML -I/usr/include/SDL
  - ./tools/ci/jobs/gcc5_h.sh -std=c++0x -DDEBUGBUILD -DTMWA_SUPPORT -DENABLE_LIBXML -I/usr/include/SDL
  - ./tools/ci/jobs/gcc5_h.sh -std=c++0x -DDEBUGBUILD -DTMWA_SUPPORT -DENABLE_NLS -DUSE_OPENGL -DENABLE_LIBXML -DUNITTESTS -DUNITTESTS_CATCH -DUNITTESTS_EMBED -I/usr/include/SDL
  - ./tools/ci/jobs/gcc5_h.sh -std=c++0x -DDEBUGBUILD -DTMWA_SUPPORT -DENABLE_NLS -DENABLE_LIBXML -I/usr/include/SDL
  - ./tools/ci/jobs/gcc5_h.sh -std=c++0x -DDEBUGBUILD -DENABLE_NLS -DUSE_OPENGL -DENABLE_LIBXML -I/usr/include/SDL
  <<: *job-push
  image: ubuntu:xenial
  variables:
    PACKAGES: gcc-5 g++-5 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
  tags:
    - docker

gcc-6:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc6.sh
  - ./tools/ci/scripts/runtests.sh 1
  - ./tools/ci/scripts/rundyecmd.sh
  image: debian:stretch
  <<: *job-push
  variables:
    PACKAGES: gcc-6 g++-6 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-6_default:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/any_compiler.sh --enable-werror
  - ./tools/ci/scripts/runtests.sh 1
  - ./tools/ci/scripts/rundyecmd.sh
  image: debian:stretch
  <<: *job-push
  variables:
    LOGFILE: gcc6.log
    CC: gcc-6
    CXX: g++-6
    CXXFLAGS: "-Wall -Wextra"
    PACKAGES: gcc-6 g++-6 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-8:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc8.sh
  - ./tools/ci/scripts/runtests.sh 1
  - ./tools/ci/scripts/rundyecmd.sh
  image: debian:buster
  <<: *job-push
  variables:
    PACKAGES: gcc-8 g++-8 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-8_unittestsbin:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc8_silent.sh --enable-unittestsbin --without-manaplusgame --without-dyecmd
  image: debian:buster
  <<: *job-push
  variables:
    PACKAGES: gcc-8 g++-8 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
  tags:
    - docker

gcc-10_default:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/any_compiler.sh --enable-werror
  - ./tools/ci/scripts/runtests.sh 2
  - ./tools/ci/scripts/rundyecmd.sh
  <<: *job-push
  variables:
    LOGFILE: gcc10.log
    CC: gcc-10
    CXX: g++-10
    CXXFLAGS: "-Wall -Wextra"
    PACKAGES: gcc-10 g++-10 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-10_game_only:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc10.sh --without-dyecmd
  - ./tools/ci/scripts/runtests.sh 2
  <<: *job-push
  variables:
    PACKAGES: gcc-10 g++-10 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps
  tags:
    - docker

gcc-10_dyecmd_only:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc10.sh --without-manaplusgame
  - ./tools/ci/scripts/rundyecmd.sh
  <<: *job-push
  variables:
    PACKAGES: gcc-10 g++-10 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
  tags:
    - docker

gcc-12_default:
  stage: prebuild
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/any_compiler.sh --enable-werror
  - ./tools/ci/scripts/runtests.sh 2
  - ./tools/ci/scripts/rundyecmd.sh
  <<: *job-push
  variables:
    LOGFILE: gcc12.log
    CC: gcc-12
    CXX: g++-12
    CXXFLAGS: "-Wall -Wextra"
    PACKAGES: gcc-12 g++-12 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              gdb valgrind netcat-openbsd procps

gcc-snapshot_sdl2:
  stage: prebuild
  script:
  - export PATH="/usr/lib/gcc-snapshot/bin:/usr/lib/gcc-snapshot/lib:$PATH"
  - export LD_LIBRARY_PATH="/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH"
  - ./tools/ci/jobs/gccsnapshot_sdl2.sh
  - ./tools/ci/scripts/runtests.sh
  <<: *job-push
  variables:
    ABOUTYOFFSET: 380
    PACKAGES: gcc-snapshot 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

# stage: build
gcov_gcc6:
  stage: build
  image: debian:stretch
  script:
  - mkdir -p coverage/
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/gcc6_tests_gcov.sh --without-dyecmd --without-manaplusgame
  variables:
    PACKAGES: gcc-6 g++-6 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
              gcovr
              git-core valgrind
  coverage: /^\s*lines:\s*\d+.\d+\%/
  artifacts:
    paths:
      - coverage
    expire_in: 2 days
    name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
    reports:
      coverage_report:
        coverage_format: cobertura
        path: coverage/gcc-6.xml
  tags:
    - docker

doxygen:
  stage: build
  image: debian:stretch
  script:
  - ./tools/ci/scripts/patchsdl1.sh
  - ./tools/ci/jobs/doxygen.sh
  variables:
    PACKAGES: doxygen graphviz 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git-core
  artifacts:
    paths:
      - doxygen
    expire_in: 2 days
  tags:
    - docker

# stage: deploy
pages:
  stage: deploy
  image: debian:stretch
  script:
  - mkdir -p public
  - cp -r doxygen/html/ public/doxygen/
  - cp -r coverage/ public/coverage/
  - echo "<DOCTYPE html><head></head><body><a href='./doxygen/index.html'>Doxygen</a><br><a href='./coverage/gcc-6.html'>Coverage</a></body>" > public/index.html
  <<: *job-pages