.gitlab-ci.yml 6.11 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
  BUILD_IMAGE_REGISTRY: $CI_REGISTRY/orfeotoolbox/otb-build-env
13
  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

Guillaume Pasero's avatar
Guillaume Pasero committed
33
.common:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
34
  extends: .general
Guillaume Pasero's avatar
Guillaume Pasero committed
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
  before_script:
    - git lfs install --skip-repo
    # 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:
    - python3 CI/cdash_handler.py
  artifacts:
    when: on_failure
    expire_in: 24 hrs
    paths:
      - build/*/*.log #CMake log
      - log/*.txt # Others

fast-build:
  extends: .common
Antoine Regimbeau's avatar
Antoine Regimbeau committed
52 53
  only: [merge_requests, branches]
  stage: precheck
54
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-native-develop:latest
Antoine Regimbeau's avatar
Antoine Regimbeau committed
55
  before_script:
Guillaume Pasero's avatar
Guillaume Pasero committed
56
    - export GIT_LFS_SKIP_SMUDGE=1
57
    - git checkout -f -q $CI_COMMIT_SHA
Antoine Regimbeau's avatar
Antoine Regimbeau committed
58 59 60 61
    - python3 CI/check_twin_pipelines.py
  script:
    - ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-fast
    - ccache -s
62

Guillaume Pasero's avatar
Guillaume Pasero committed
63
.common-build:
Guillaume Pasero's avatar
Guillaume Pasero committed
64
  extends: .common
65 66 67 68
  only:
    - merge_requests
    - develop
    - /^release-[0-9]+\.[0-9]+$/
69
  stage: build
Guillaume Pasero's avatar
Guillaume Pasero committed
70

71

72 73 74 75 76
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
Antoine Regimbeau's avatar
Antoine Regimbeau committed
77

78
.common-prepare:
aregimbe's avatar
aregimbe committed
79
  extends: .general
80 81 82 83
  only:
    - merge_requests
    - develop
    - /^release-[0-9]+\.[0-9]+$/
aregimbe's avatar
aregimbe committed
84 85
  stage: prepare
  before_script:
86
    - git checkout -f -q $CI_COMMIT_SHA
Antoine Regimbeau's avatar
Antoine Regimbeau committed
87
    - git lfs install --skip-repo
Antoine Regimbeau's avatar
Antoine Regimbeau committed
88 89
    - git config --global user.email "otbbot@orfeo-toolbox.org"
    - git config --global user.name "otbbot"
aregimbe's avatar
aregimbe committed
90 91
  artifacts:
    expire_in: 24 hrs
Antoine Regimbeau's avatar
Antoine Regimbeau committed
92
    when: always
aregimbe's avatar
aregimbe committed
93
    paths:
Antoine Regimbeau's avatar
Antoine Regimbeau committed
94 95
      - sb_branch.txt # Needed to checkout correct branch in build step
      - build/*/*/*/*.log # Superbuild log
aregimbe's avatar
aregimbe committed
96

97
## Ubuntu superbuild
Guillaume Pasero's avatar
Guillaume Pasero committed
98
ubuntu-xdk-prepare:
99 100 101
  extends: .common-prepare
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
  script:
102
    - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base
103

Guillaume Pasero's avatar
Guillaume Pasero committed
104
ubuntu-xdk-build:
105 106 107
  extends: .common-build
  image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04
  script:
108
    - 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
109
    - 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
110
  dependencies:
Guillaume Pasero's avatar
Guillaume Pasero committed
111
    - ubuntu-xdk-prepare
112 113 114 115 116
  artifacts:
    paths:
      - build/CookBook-*-html.tar.gz
      - build/Documentation/Cookbook/latex/CookBook-*.pdf
      - build/Documentation/Doxygen/OTB-Doxygen-*.tar.bz2
117

Antoine Regimbeau's avatar
Antoine Regimbeau committed
118
## CentOS superbuild
Guillaume Pasero's avatar
Guillaume Pasero committed
119
centos-xdk-prepare:
120 121 122 123 124
  extends: .common-prepare
  image: $BUILD_IMAGE_REGISTRY/otb-centos-superbuild-base:6.6
  script:
    - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base

Guillaume Pasero's avatar
Guillaume Pasero committed
125
centos-xdk-build:
126 127 128 129 130 131
  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
    - 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
  dependencies:
Guillaume Pasero's avatar
Guillaume Pasero committed
132
    - centos-xdk-prepare
Cédric Traizet's avatar
Cédric Traizet committed
133

Antoine Regimbeau's avatar
Antoine Regimbeau committed
134
## MacOS superbuild
Guillaume Pasero's avatar
Guillaume Pasero committed
135
macos-xdk-prepare:
136 137 138 139 140 141 142 143 144 145 146 147 148
  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

Guillaume Pasero's avatar
Guillaume Pasero committed
149
macos-xdk-build:
150 151 152 153 154 155 156
  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:
Guillaume Pasero's avatar
Guillaume Pasero committed
157
    - macos-xdk-prepare
158

Guillaume Pasero's avatar
Guillaume Pasero committed
159
## Windows
160
.windows-prepare:
Guillaume Pasero's avatar
Guillaume Pasero committed
161
  extends: .common-prepare
aregimbe's avatar
aregimbe committed
162 163
  before_script:
# This override the previous before_script
164
    - set GIT_LFS_SKIP_SMUDGE=1
Guillaume Pasero's avatar
Guillaume Pasero committed
165
    - git checkout -f -q %CI_COMMIT_SHA%
166
    - set GIT_LFS_SKIP_SMUDGE=0
167

168
.windows-build:
Guillaume Pasero's avatar
Guillaume Pasero committed
169 170 171
  extends: .common-build
  before_script:
    - git lfs fetch origin %CI_COMMIT_SHA%
172
    - git checkout -f -q %CI_COMMIT_SHA%
173

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

185
windows-10-build:
186
  extends: .windows-build
Guillaume Pasero's avatar
Guillaume Pasero committed
187
  tags:
188
    - windows10
Guillaume Pasero's avatar
Guillaume Pasero committed
189 190 191 192 193
  script:
    - call ./CI/dev_env.bat x64 otb 10
    - clcache.exe -s
    - ctest -V -S CI/main_superbuild.cmake
    - clcache.exe -s
Guillaume Pasero's avatar
Guillaume Pasero committed
194
    - ctest -V -S CI/main_packages.cmake
Guillaume Pasero's avatar
Guillaume Pasero committed
195 196 197
  dependencies:
    - windows-10-prepare

Guillaume Pasero's avatar
Guillaume Pasero committed
198 199 200 201 202 203 204 205 206 207 208
# - Win8.1
windows-8-prepare:
  extends: .windows-prepare
  tags:
    - windows8
  script:
    - call ./CI/dev_env.bat x86 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
209
windows-8-build:
210
  extends: .windows-build
Guillaume Pasero's avatar
Guillaume Pasero committed
211
  tags:
212
    - windows8
Guillaume Pasero's avatar
Guillaume Pasero committed
213
  script:
Guillaume Pasero's avatar
Guillaume Pasero committed
214
    - call ./CI/dev_env.bat x86 otb 8.1
Guillaume Pasero's avatar
Guillaume Pasero committed
215 216 217
    - clcache.exe -s
    - ctest -V -S CI/main_superbuild.cmake
    - clcache.exe -s
Guillaume Pasero's avatar
Guillaume Pasero committed
218
    - ctest -V -S CI/main_packages.cmake
Guillaume Pasero's avatar
Guillaume Pasero committed
219 220
  dependencies:
    - windows-8-prepare