Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.1 KiB
Newer Older
#
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2021 Indiscale GmbH <info@indiscale.com>
# Copyright (C) 2021 Daniel Hornung <d.hornung@indiscale.com>
Timm Fitschen's avatar
Timm Fitschen committed
# Copyright (C) 2021 Timm Fitschen <d.hornung@indiscale.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#

variables:
Timm Fitschen's avatar
Timm Fitschen committed
  # this is the image where cpplib repo is present (artifact from pipeline in
  # caosdb-cpplib)
  CPPLIB_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv
  OCTAVE_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/testenv:$CI_COMMIT_REF_NAME
Timm Fitschen's avatar
Timm Fitschen committed
  CPPLIB_BRANCH: f-extern-c


image: $OCTAVE_REGISTRY_IMAGE

stages:
  - setup
  - test
  - deploy

######## Setup ########

# Build a docker image in which tests for this repository can run
build-testenv:
  tags: [ cached-dind ]
  stage: setup
  image: docker:20.10
  script:
Timm Fitschen's avatar
Timm Fitschen committed
    - DOCKER_BASE_IMAGE="${CPPLIB_REGISTRY_IMAGE}:${CPPLIB_BRANCH}"
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - docker pull "$OCTAVE_REGISTRY_IMAGE" || true
    - docker build
Timm Fitschen's avatar
Timm Fitschen committed
      --build-arg DOCKER_BASE_IMAGE=$DOCKER_BASE_IMAGE
Timm Fitschen's avatar
Timm Fitschen committed
      --file .docker/Dockerfile
      --pull
      --cache-from "$OCTAVE_REGISTRY_IMAGE"
Timm Fitschen's avatar
Timm Fitschen committed
      --tag "$OCTAVE_REGISTRY_IMAGE" .
    - docker push "$OCTAVE_REGISTRY_IMAGE"


# Formatting with miss_hit
code_style_octave:
  tags: [ docker ]
  stage: test
  script:
    - mh_style -v
    - mh_style --octave ./src ./doc
  allow_failure: true

code_style_cpp:
  tags: [ docker ]
  stage: test
  script:
    - clang-format-11 --dry-run --verbose --Werror $(find test/ src/ -type f -iname "*.cpp" -o -iname "*.h" -o -iname "*.h.in")
  allow_failure: true

# Unit tests
test:
  tags: [ docker ]
  stage: test
  script:
    - octave -v
# Linting with miss_hit
linting_octave:
Timm Fitschen's avatar
Timm Fitschen committed
  tags: [ docker ]
  stage: test
  script:
    - mh_lint --octave ./

# linting with clang-tidy and include-what-you-use
linting_cpp:
  tags: [ docker ]
  stage: test
  script:
    - cd src
    - ./configure
    - cd ../build
    - cmake -D LINTING=On ..
    - cmake --build .

# Build the sphinx documentation and make it ready for deployment by Gitlab Pages
# Special job for serving a static website. See https://docs.gitlab.com/ee/ci/yaml/README.html#pages
Timm Fitschen's avatar
Timm Fitschen committed
.pages_prepare: &pages_prepare
   tags: [ cached-dind ]
   stage: deploy
   script:
     - make doc
     - cp -r build/doc/html ./public

test_pages:
   <<: *pages_prepare
   except:
     refs:
       - main
   artifacts:
     paths:
       - public

pages:
   <<: *pages_prepare
   only:
     refs:
       - main
   artifacts:
     paths:
       - public