Blob Blame History Raw
# all builds use the same ccache folder in the project root that is cached
variables:
  CCACHE_BASEDIR: '$CI_PROJECT_DIR'
  CCACHE_DIR: '$CI_PROJECT_DIR/ccache'

# default config for all distros:
# - install dependencies via script
# - create ccache dir & setup caching of it (for each job separately)
.build_config: &default_config
  before_script:
    - ci/install_dependencies.sh
    - mkdir -p ccache
  cache:
    key: "$CI_JOB_NAME"
    paths:
      - ccache/

# default build job:
# - run build script
# - only create artifacts of the build directory when something fails
#   (for cmake logs)
.build_template: &distro_build
  script:
    - python3 ci/test_build.py
  artifacts:
    when: on_failure
    paths:
      - build/

stages:
  - test
  - deploy

Fedora:
  image: fedora:28
  <<: *default_config
  <<: *distro_build

Fedora_MinGW:
  image: fedora:29
  before_script:
    - dnf -y upgrade
    - dnf -y install mingw64-gcc-c++ mingw64-filesystem mingw64-expat mingw64-zlib cmake make
  script:
    - python3 ci/test_build.py --without-tests --cmake-executable "mingw64-cmake" --cmake-options "-DEXIV2_TEAM_EXTRA_WARNINGS=ON -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_WIN_UNICODE=ON " --compilers --shared-libs OFF

Debian:
  image: debian:9
  <<: *default_config
  <<: *distro_build

Archlinux:
  image: archlinux/base
  <<: *default_config
  <<: *distro_build

Ubuntu:
  image: ubuntu:18.04
  <<: *default_config
  <<: *distro_build

CentOS:
  image: centos:7
  <<: *default_config
  <<: *distro_build

OpenSUSE:
  image: opensuse/tumbleweed
  <<: *default_config
  <<: *distro_build

Install:
  image: fedora:28
  stage: deploy
  <<: *default_config
  script:
    - mkdir build && cd build
    - cmake -DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DCMAKE_INSTALL_PREFIX=/usr/ -DBUILD_WITH_CCACHE=ON ..
    - make -j $(nproc)
    - make install
    - make clean
    - EXIV2_BINDIR=/usr/bin/ make tests

pages:
  image: fedora:28
  stage: deploy
  <<: *default_config
  script:
    - dnf -y install doxygen graphviz
    - mkdir build && cd build
    - cmake -DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_DOC=ON ..
    - make doc
    - cd ..
    - mv build/doc/html/ public/
  artifacts:
    paths:
      - public
  only:
    - master