Skip to content
Snippets Groups Projects
This GitLab CI configuration is valid. Learn more
.gitlab-ci.yml 2.81 KiB
variables:
  DEBIAN_FRONTEND: noninteractive
  LC_ALL: C.UTF-8
  GIT_STRATEGY: fetch

stages:
  - configure
  - build
  - test
  - deploy

.debian_stretch: &debian_stretch
  image: cznic/debian:stretch-knot-v2
  tags:
    - docker
    - linux
    - amd64
  
.ubuntu_xenial: &ubuntu_xenial
  image: cznic/ubuntu:16.04-knot
  tags:
    - docker
    - linux
    - amd64

.debian_stretch_armel: &debian_stretch_armel
  image: cznic/armel-debian-knot
  tags:
    - docker
    - linux
    - arm

.configure: &configure_job
  stage: configure
  script:
    - autoreconf -fi
    - ./configure --disable-fastparser
  artifacts:
    untracked: true
    expire_in: '1 hour'

.build: &build_job
  stage: build
  script:
    - make -k all
  artifacts:
    untracked: true
    expire_in: '1 hour'

.test: &test_job
  stage: test
  script:
    - make -k check

configure:ubuntu:amd64:
  <<: *ubuntu_xenial
  <<: *configure_job
  except:
    - tags
    - docs-*

build:ubuntu:amd64:
  <<: *ubuntu_xenial
  <<: *build_job
  dependencies:
    - configure:ubuntu:amd64
  except:
    - tags
    - docs-*
test:ubuntu:amd64:
  <<: *ubuntu_xenial
  <<: *test_job
  dependencies:
    - build:ubuntu:amd64
  except:
    - tags
    - docs-*

configure:debian:stretch:amd64:
  <<: *debian_stretch
  <<: *configure_job

build:debian:stretch:amd64:
  <<: *debian_stretch
  <<: *build_job
  dependencies:
    - configure:debian:stretch:amd64

test:debian:stretch:amd64:
  <<: *debian_stretch
  <<: *test_job
  dependencies:
    - build:debian:stretch:amd64

configure:debian:stretch:armel:
  <<: *debian_stretch_armel
  <<: *configure_job
  only:
    - triggers

build:debian:stretch:armel:
  <<: *debian_stretch_armel
  <<: *build_job
  dependencies:
    - configure:debian:stretch:armel
  only:
    - triggers

test:debian:stretch:armel:
  <<: *debian_stretch_armel
  <<: *test_job
  dependencies:
    - build:debian:stretch:armel
  only:
    - triggers

build:documentation:
  <<: *debian_stretch
  stage: build
  dependencies:
    - configure:debian:stretch:amd64
  only:
    - tags
    - triggers
    - docs-*
  script:
    - make -C doc html singlehtml pdf
  artifacts:
    paths:
      - doc/_build/html/
      - doc/_build/singlehtml/
      - doc/_build/latex/knot.pdf
    expire_in: '1 hour'

deploy:documentation:
  <<: *debian_stretch
  stage: deploy
  before_script:
    - apt-get update
    - apt-get -y install curl
  only:
    - tags
    - triggers
    - docs-*
  script:
    - "curl --http1.1 --request POST --form token=$WEBSITE_TOKEN --form ref=master --form \"variables[RELEASE_CI_BUILD_REF_NAME]=$CI_BUILD_REF_NAME\" --form \"variables[RELEASE_CI_BUILD_ID]=$CI_BUILD_ID\" https://gitlab.labs.nic.cz/api/v3/projects/5/trigger/builds"
  artifacts:
    name: "knot-dns-$CI_BUILD_REF_NAME-doc"
    paths:
      - doc/_build/html/
      - doc/_build/singlehtml/
      - doc/_build/latex/knot.pdf