.gitlab-ci.yml 6.6 KB
Newer Older
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
1 2 3 4 5
# WARNING!
# OTB uses Git-LFS to store the (large) tests data.
# Git-LFS is mostly transparent for the user and recent versions
# are able to use Git-LFS quite efficiently.
# But Git fails to manage efficiently numerous LFS data.
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
6
# We have to use directly git-lfs wrapping commands to have an
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
7
# efficient cloning step.
8
# Furthermore, Git-LFS and Gitlab sufer a bug preventing usage of
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
9 10
# GIT_STRATEGY=fetch (https://gitlab.com/gitlab-org/gitlab-runner/issues/3318)

Sébastien Dinot's avatar
Sébastien Dinot committed
11
variables:
12 13
  BUILD_IMAGE_REGISTRY: $CI_REGISTRY/orfeotoolbox/otb-build-env
  GIT_CLONE_PATH: $CI_BUILDS_DIR/otb
Sébastien Dinot's avatar
Sébastien Dinot committed
14
  DOCKER_DRIVER: overlay2
15
  GIT_DEPTH: "3"
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
16
  # Disable automatic checkout to let us fetch LFS before
17
  GIT_CHECKOUT: "false"
Guilhem Bonnefille's avatar
Guilhem Bonnefille committed
18
  # The fetch strategy fails with LFS and GitLab
19
  GIT_STRATEGY: "clone"
20

Sébastien Dinot's avatar
Sébastien Dinot committed
21
stages:
Guillaume Pasero's avatar
Guillaume Pasero committed
22
  - precheck
aregimbe's avatar
aregimbe committed
23
  - prepare
Sébastien Dinot's avatar
Sébastien Dinot committed
24 25
  - build

26
.general:
Sébastien Dinot's avatar
Sébastien Dinot committed
27 28 29 30 31 32
  retry:
    max: 2
    when:
      - runner_system_failure
      - stuck_or_timeout_failure

33 34 35 36
#~ fast-build:
  #~ extends: .general
  #~ only: [merge_requests, branches]
  #~ stage: precheck
37
  #~ image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-native-develop:latest
38 39
  #~ before_script:
    #~ - export GIT_LFS_SKIP_SMUDGE=1
40
    #~ - git checkout -f -q $CI_COMMIT_SHA
41
    #~ - python3 CI/check_twin_pipelines.py
42 43
  #~ after_script:
    #~ - python3 CI/cdash_handler.py
44 45 46
  #~ script:
    #~ - ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-fast
    #~ - ccache -s
47

Guillaume Pasero's avatar
Guillaume Pasero committed
48

49 50
.common-build:
  extends: .general
51
  #~ only: [merge_requests]
52
  stage: build
53
  before_script:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
54
    - git lfs install --skip-repo
55 56 57 58 59
    # Provision efficiently the local LFS cache before checkout
    - git lfs fetch origin $CI_COMMIT_SHA
    # Checkout the expected branch
    - git checkout -f -q $CI_COMMIT_SHA
  after_script:
60
    - python3 CI/cdash_handler.py
Antoine Regimbeau's avatar
Antoine Regimbeau committed
61 62 63 64
  artifacts:
    when: on_failure
    expire_in: 24 hrs
    paths:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
65 66
      - build/*/*.log #CMake log
      - log/*.txt # Others
67

68 69 70 71 72
#~ debian-build:
  #~ extends: .common-build
  #~ image: $BUILD_IMAGE_REGISTRY/otb-debian-native:unstable
  #~ script:
    #~ - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=debian-unstable-gcc
73

74
.common-prepare:
aregimbe's avatar
aregimbe committed
75
  extends: .general
Guillaume Pasero's avatar
Guillaume Pasero committed
76
  only: [merge_requests]
aregimbe's avatar
aregimbe committed
77 78
  stage: prepare
  before_script:
79
    - git checkout -f -q $CI_COMMIT_SHA
Antoine Regimbeau's avatar
Antoine Regimbeau committed
80
    - git lfs install --skip-repo
Antoine Regimbeau's avatar
Antoine Regimbeau committed
81 82
    - git config --global user.email "otbbot@orfeo-toolbox.org"
    - git config --global user.name "otbbot"
aregimbe's avatar
aregimbe committed
83 84
  artifacts:
    expire_in: 24 hrs
Antoine Regimbeau's avatar
Antoine Regimbeau committed
85
    when: always
aregimbe's avatar
aregimbe committed
86
    paths:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
87 88
      - sb_branch.txt # Needed to checkout correct branch in build step
      - build/*/*/*/*.log # Superbuild log
aregimbe's avatar
aregimbe committed
89

90
## Ubuntu superbuild
91 92 93 94 95
#~ ubuntu-superbuild-prepare:
  #~ extends: .common-prepare
  #~ image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
  #~ script:
    #~ - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base
96
#~ 
97
#~ ubuntu-superbuild-build:
98
  #~ extends: .common-build
99
  #~ image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
100
  #~ script:
101 102 103 104
    #~ - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_superbuild.cmake -DIMAGE_NAME:string=ubuntu-18.04-llvm-xdk
    #~ - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -VV -S CI/main_packages.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base
  #~ dependencies:
    #~ - ubuntu-superbuild-prepare
105 106 107 108 109
  #~ artifacts:
    #~ paths:
      #~ - build/CookBook-*-html.tar.gz
      #~ - build/Documentation/Cookbook/latex/CookBook-*.pdf
      #~ - build/Documentation/Doxygen/OTB-Doxygen-*.tar.bz2
110

111
## CentOS superbuild
112 113 114 115
#~ centos-superbuild-prepare:
  #~ extends: .common-prepare
  #~ image: $BUILD_IMAGE_REGISTRY/otb-centos-superbuild-base:6.6
  #~ script:
116
    #~ - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base
117 118 119 120 121 122
#~ 
#~ centos-superbuild-build:
  #~ extends: .common-build
  #~ image: $BUILD_IMAGE_REGISTRY/otb-centos-superbuild-base:6.6
  #~ script:
    #~ - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_superbuild.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base
123
    #~ - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -VV -S CI/main_packages.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base
124 125
  #~ dependencies:
    #~ - centos-superbuild-prepare
Guillaume Pasero's avatar
Guillaume Pasero committed
126

127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
## MacOS superbuild
#~ macos-superbuild-prepare:
  #~ tags:
    #~ - macos
  #~ extends: .common-prepare
  #~ before_script:
    #~ # No need to install lfs as this machine is persistent
    #~ # No need to do git config
    #~ # Checkout the expected branch
    #~ - export GIT_LFS_SKIP_SMUDGE=1
    #~ - git checkout -f -q $CI_COMMIT_SHA
    #~ - export GIT_LFS_SKIP_SMUDGE=0
  #~ script:
    #~ - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-macos-superbuild
#~ 
#~ macos-superbuild-build:
  #~ tags:
    #~ - macos
  #~ extends: .common-build
  #~ script:
    #~ - ctest -V -S CI/main_superbuild.cmake -DIMAGE_NAME:string=otb-macos-superbuild
    #~ - ctest -VV -S CI/main_packages.cmake -DIMAGE_NAME:string=otb-macos-superbuild
  #~ dependencies:
    #~ - macos-superbuild-prepare

152
.windows-prepare:
153
  extends: .general
154
  # only: [merge_requests]
aregimbe's avatar
aregimbe committed
155 156 157
  stage: prepare
  before_script:
# This override the previous before_script
158
    - set GIT_LFS_SKIP_SMUDGE=1
159
    - git checkout %CI_COMMIT_REF_NAME%
160
    - set GIT_LFS_SKIP_SMUDGE=0
161 162
  after_script:
    - echo No after_script
aregimbe's avatar
aregimbe committed
163 164
  artifacts:
    expire_in: 24 hrs
165
    when: always
aregimbe's avatar
aregimbe committed
166
    paths:
167 168
      - sb_branch.txt # Needed to checkout correct branch in build step
      - build/*/*/*/*.log # Superbuild log
169

170 171 172

windows-10-prepare:
  extends: .windows-prepare
173 174
  tags:
    - windows10
175
  script:
Guillaume Pasero's avatar
Guillaume Pasero committed
176
    - call ./CI/dev_env.bat x64 xdk 10
177 178 179 180
    - clcache.exe -s
    - ctest -C Release -V -S CI/prepare_superbuild.cmake
    - clcache.exe -s

Guillaume Pasero's avatar
Guillaume Pasero committed
181 182
windows-8-prepare:
  extends: .windows-prepare
183 184
  tags:
    - windows8
Guillaume Pasero's avatar
Guillaume Pasero committed
185 186 187 188 189
  script:
    - call ./CI/dev_env.bat x64 xdk 8.1
    - clcache.exe -s
    - ctest -C Release -V -S CI/prepare_superbuild.cmake
    - clcache.exe -s
Guillaume Pasero's avatar
Guillaume Pasero committed
190

191
.common-windows-build:
Guillaume Pasero's avatar
Guillaume Pasero committed
192
  extends: .common-build
193 194 195 196
  before_script:
    - git lfs fetch origin %CI_COMMIT_SHA%
    - git checkout %CI_COMMIT_REF_NAME%
  after_script:
197
    - python ./CI/cdash_handler.py
198 199 200

windows-10-build:
  extends: .common-windows-build
Guillaume Pasero's avatar
Guillaume Pasero committed
201
  tags:
202
    - windows10
Guillaume Pasero's avatar
Guillaume Pasero committed
203 204 205 206 207
  script:
    - call ./CI/dev_env.bat x64 otb 10
    - clcache.exe -s
    - ctest -V -S CI/main_superbuild.cmake
    - clcache.exe -s
208
    - ctest -VV -S CI/main_packages.cmake
Guillaume Pasero's avatar
Guillaume Pasero committed
209 210 211 212
  dependencies:
    - windows-10-prepare

windows-8-build:
213
  extends: .common-windows-build
Guillaume Pasero's avatar
Guillaume Pasero committed
214
  tags:
215
    - windows8
Guillaume Pasero's avatar
Guillaume Pasero committed
216 217 218 219 220
  script:
    - call ./CI/dev_env.bat x64 otb 8.1
    - clcache.exe -s
    - ctest -V -S CI/main_superbuild.cmake
    - clcache.exe -s
221
    - ctest -VV -S CI/main_packages.cmake
Guillaume Pasero's avatar
Guillaume Pasero committed
222 223
  dependencies:
    - windows-8-prepare
224