Unverified Commit 5c4dfe0c authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

Gitlab CI support

Add configuration and docker definitions for tests and builds in Gitlab
CI platform.

Some of them currently fail, which is a known problem.
parent 080d9e4c
Loading
Loading
Loading
Loading

.gitlab-ci.yml

0 → 100644
+451 −0
Original line number Diff line number Diff line
variables:
  DEBIAN_FRONTEND: noninteractive
  LC_ALL: C
  GIT_STRATEGY: fetch
  DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
  IMG_BASE: registry.labs.nic.cz/labs/bird

stages:
  - image
  - build

.docker: &docker_build
  stage: image
  allow_failure: true
  script:
  - $DOCKER_CMD login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.labs.nic.cz
  # Make sure we refresh the base image if it updates (eg. security updates, etc)
  # If we do just the build, cache is always reused and the freshness of the
  # base image is never checked. However, pull always asks and updates the
  # image only if it changed ‒ therefore, the cache is used unless there's a
  # change.
  - $DOCKER_CMD pull `sed -ne 's/^FROM //p' "misc/docker/$IMG_NAME/Dockerfile"`
  - $DOCKER_CMD build -t "bird:$IMG_NAME" "misc/docker/$IMG_NAME"
  - $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME"
  - $DOCKER_CMD push "$IMG_BASE:$IMG_NAME"
  after_script:
  - rm -f "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
  tags:
  # That's Docker in Docker
  - dind

docker_debian-7-amd64:
  variables:
    IMG_NAME: "debian-7-amd64"
  <<: *docker_build

docker_debian-8-amd64:
  variables:
    IMG_NAME: "debian-8-amd64"
  <<: *docker_build

docker_debian-9-amd64:
  variables:
    IMG_NAME: "debian-9-amd64"
  <<: *docker_build

docker_debian-testing-amd64:
  variables:
    IMG_NAME: "debian-testing-amd64"
  <<: *docker_build

docker_debian-7-i386:
  variables:
    IMG_NAME: "debian-7-i386"
  <<: *docker_build

docker_debian-8-i386:
  variables:
    IMG_NAME: "debian-8-i386"
  <<: *docker_build

docker_debian-9-i386:
  variables:
    IMG_NAME: "debian-9-i386"
  <<: *docker_build

docker_debian-testing-i386:
  variables:
    IMG_NAME: "debian-testing-i386"
  <<: *docker_build

docker_fedora-25-amd64:
  variables:
    IMG_NAME: "fedora-25-amd64"
  <<: *docker_build

docker_fedora-26-amd64:
  variables:
    IMG_NAME: "fedora-26-amd64"
  <<: *docker_build

docker_centos-6-amd64:
  variables:
    IMG_NAME: "centos-6-amd64"
  <<: *docker_build

docker_centos-7-amd64:
  variables:
    IMG_NAME: "centos-7-amd64"
  <<: *docker_build

docker_opensuse-42_3-amd64:
  variables:
    IMG_NAME: "opensuse-42.3-amd64"
  <<: *docker_build

docker_ubuntu-14_04-amd64:
  variables:
    IMG_NAME: "ubuntu-14.04-amd64"
  <<: *docker_build

docker_ubuntu-16_04-amd64:
  variables:
    IMG_NAME: "ubuntu-16.04-amd64"
  <<: *docker_build

.debian-7-i386: &debian-7-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-7-i386
  tags:
  - docker
  - linux
  - amd64

.debian-8-i386: &debian-8-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-8-i386
  tags:
  - docker
  - linux
  - amd64

.debian-9-i386: &debian-9-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-9-i386
  tags:
  - docker
  - linux
  - amd64

.debian-testing-i386: &debian-testing-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-testing-i386
  tags:
  - docker
  - linux
  - amd64

.debian-7-amd64: &debian-7-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-7-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-8-amd64: &debian-8-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-8-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-9-amd64: &debian-9-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-9-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-testing-amd64: &debian-testing-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-testing-amd64
  tags:
  - docker
  - linux
  - amd64

.fedora-25-amd64: &fedora-25-amd64_env
  image: registry.labs.nic.cz/labs/bird:fedora-25-amd64
  tags:
  - docker
  - linux
  - amd64

.fedora-26-amd64: &fedora-26-amd64_env
  image: registry.labs.nic.cz/labs/bird:fedora-26-amd64
  tags:
  - docker
  - linux
  - amd64

.centos-6-amd64: &centos-6-amd64_env
  image: registry.labs.nic.cz/labs/bird:centos-6-amd64
  tags:
  - docker
  - linux
  - amd64

.centos-7-amd64: &centos-7-amd64_env
  image: registry.labs.nic.cz/labs/bird:centos-7-amd64
  tags:
  - docker
  - linux
  - amd64

.opensuse-42_3-amd64: &opensuse-42_3-amd64_env
  image: registry.labs.nic.cz/labs/bird:opensuse-42.3-amd64
  tags:
  - docker
  - linux
  - amd64

.ubuntu-14_04-amd64: &ubuntu-14_04-amd64_env
  image: registry.labs.nic.cz/labs/bird:ubuntu-14.04-amd64
  tags:
  - docker
  - linux
  - amd64

.ubuntu-16_04-amd64: &ubuntu-16_04-amd64_env
  image: registry.labs.nic.cz/labs/bird:ubuntu-16.04-amd64
  tags:
  - docker
  - linux
  - amd64

# TODO We want to copy these BSDs to our own virtual machines, to make sure someone doesn't update them by accident.
.freebsd-11-i386: &freebsd-11-i386_env
  variables:
    CPPFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
  tags:
  - freebsd
  - i386
  #only:
  #- master
  #- triggers
  #- tags

.freebsd-11-amd64: &freebsd-11-amd64_env
  variables:
    CPPFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
  tags:
  - freebsd
  - amd64
  #only:
  #- master
  #- triggers
  #- tags

.build: &build_job
  stage: build
  script:
  - autoreconf
  - ./configure --enable-ipv6=$IPV6 CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS"
  # Detect which make is available
  - MAKE=make
  - which gmake 2>/dev/null >/dev/null && MAKE=gmake
  - $MAKE
  # Run tests if they are available (eg. don't fail if "check" isn't a valid make target)
  - $MAKE check || [ "$?" = 2 ]

build-debian-7-amd64:
  variables:
    IPV6: "no"
  <<: *debian-7-amd64_env
  <<: *build_job

build-debian-8-amd64:
  variables:
    IPV6: "no"
  <<: *debian-8-amd64_env
  <<: *build_job

build-debian-9-amd64:
  variables:
    IPV6: "no"
  <<: *debian-9-amd64_env
  <<: *build_job

build-debian-testing-amd64:
  variables:
    IPV6: "no"
  <<: *debian-testing-amd64_env
  <<: *build_job

build-debian-7-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *debian-7-amd64_env
  <<: *build_job

build-debian-8-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *debian-8-amd64_env
  <<: *build_job

build-debian-9-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *debian-9-amd64_env
  <<: *build_job

build-debian-testing-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *debian-testing-amd64_env
  <<: *build_job

build-fedora-25-amd64:
  variables:
    IPV6: "no"
  <<: *fedora-25-amd64_env
  <<: *build_job

build-fedora-25-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *fedora-25-amd64_env
  <<: *build_job

build-fedora-26-amd64:
  variables:
    IPV6: "no"
  <<: *fedora-26-amd64_env
  <<: *build_job

build-fedora-26-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *fedora-26-amd64_env
  <<: *build_job

build-centos-6-amd64:
  variables:
    IPV6: "no"
  <<: *centos-6-amd64_env
  <<: *build_job

build-centos-6-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *centos-6-amd64_env
  <<: *build_job

build-centos-7-amd64:
  variables:
    IPV6: "no"
  <<: *centos-7-amd64_env
  <<: *build_job

build-centos-7-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *centos-7-amd64_env
  <<: *build_job

build-opensuse-42_3-amd64:
  variables:
    IPV6: "no"
  <<: *opensuse-42_3-amd64_env
  <<: *build_job

build-opensuse-42_3-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *opensuse-42_3-amd64_env
  <<: *build_job

build-ubuntu-14_04-amd64:
  variables:
    IPV6: "no"
  <<: *ubuntu-14_04-amd64_env
  <<: *build_job

build-ubuntu-14_04-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *ubuntu-14_04-amd64_env
  <<: *build_job

build-ubuntu-16_04-amd64:
  variables:
    IPV6: "no"
  <<: *ubuntu-16_04-amd64_env
  <<: *build_job

build-ubuntu-16_04-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *ubuntu-16_04-amd64_env
  <<: *build_job

build-debian-7-i386:
  variables:
    IPV6: "no"
  <<: *debian-7-i386_env
  <<: *build_job

build-debian-7-i386-v6:
  variables:
    IPV6: "yes"
  <<: *debian-7-i386_env
  <<: *build_job

build-debian-8-i386:
  variables:
    IPV6: "no"
  <<: *debian-8-i386_env
  <<: *build_job

build-debian-8-i386-v6:
  variables:
    IPV6: "yes"
  <<: *debian-8-i386_env
  <<: *build_job

build-debian-9-i386:
  variables:
    IPV6: "no"
  <<: *debian-9-i386_env
  <<: *build_job

build-debian-9-i386-v6:
  variables:
    IPV6: "yes"
  <<: *debian-9-i386_env
  <<: *build_job

build-debian-testing-i386:
  variables:
    IPV6: "no"
  <<: *debian-testing-i386_env
  <<: *build_job

build-debian-testing-i386-v6:
  variables:
    IPV6: "yes"
  <<: *debian-testing-i386_env
  <<: *build_job

build-freebsd-11-amd64:
  variables:
    IPV6: "no"
  <<: *freebsd-11-amd64_env
  <<: *build_job

build-freebsd-11-amd64-v6:
  variables:
    IPV6: "yes"
  <<: *freebsd-11-amd64_env
  <<: *build_job

build-freebsd-11-i386:
  variables:
    IPV6: "no"
  <<: *freebsd-11-i386_env
  <<: *build_job

build-freebsd-i386-v6:
  variables:
    IPV6: "yes"
  <<: *freebsd-11-i386_env
  <<: *build_job
+11 −0
Original line number Diff line number Diff line
FROM centos:6
RUN yum -y upgrade
RUN yum -y install \
	autoconf \
	flex \
	bison \
	pkgconfig \
	'readline-devel' \
	'pkgconfig(ncurses)' \
	gcc \
	make
+11 −0
Original line number Diff line number Diff line
FROM centos:7
RUN yum -y upgrade
RUN yum -y install \
	autoconf \
	flex \
	bison \
	pkgconfig \
	'readline-devel' \
	'pkgconfig(ncurses)' \
	gcc \
	make
+12 −0
Original line number Diff line number Diff line
FROM debian:wheezy-slim
ENV DEBIAN_FRONTEND noninteractive
RUN sed -i 's/deb.debian.org/ftp.cz.debian.org/' /etc/apt/sources.list
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install \
	autoconf \
	build-essential \
	flex \
	bison \
	ncurses-dev \
	libreadline-dev
+12 −0
Original line number Diff line number Diff line
FROM i386/debian:wheezy-slim
ENV DEBIAN_FRONTEND noninteractive
RUN sed -i 's/deb.debian.org/ftp.cz.debian.org/' /etc/apt/sources.list
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install \
	autoconf \
	build-essential \
	flex \
	bison \
	ncurses-dev \
	libreadline-dev
Loading