stages:
  - build
  - test
  - upload

variables:
  DOCKER_IMAGE_BASE: registry.icinga.com/build-docker
  ICINGA_BUILD_TYPE: snapshot
  #ICINGA_BUILD_TYPE: release
  #ICINGA_BUILD_RELEASE_TYPE:
  #ICINGA_BUILD_UPSTREAM_BRANCH:

.build: &build
  stage: build
  tags:
    - docker
  image: ${DOCKER_IMAGE_BASE}/${DOCKER_IMAGE}
  script:
    - icinga-build-package
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - ccache/
      - 'icinga2.git'
  artifacts:
    paths:
      - build/*
    expire_in: 1 week

.test: &test
  stage: test
  tags:
    - docker
  image: ${DOCKER_IMAGE_BASE}/${DOCKER_IMAGE}
  script:
    - find build/
    - icinga-build-test

.upload: &upload
  stage: upload
  tags:
    - docker
  image: ${DOCKER_IMAGE_BASE}/upload
  script:
    - find build/
    - icinga-build-upload-aptly
  only:
    - master
    - tags

###################################
# EPEL
###################################
build/centos/8:
  <<: *build
  variables:
    DOCKER_IMAGE: centos/8

test/centos/8:
  <<: *test
  variables:
    DOCKER_IMAGE: centos/8
  dependencies:
    - build/centos/8

upload/epel/8:
  <<: *upload
  dependencies:
    - build/centos/8

build/centos/7:
  <<: *build
  variables:
    DOCKER_IMAGE: centos/7

test/centos/7:
  <<: *test
  variables:
    DOCKER_IMAGE: centos/7
  dependencies:
    - build/centos/7

upload/epel/7:
  <<: *upload
  dependencies:
    - build/centos/7

###################################
# Fedora
###################################
build/fedora/35:
  <<: *build
  variables:
    DOCKER_IMAGE: fedora/35
    RPM_BUILD_NCPUS: '1'

test/fedora/35:
  <<: *test
  variables:
    DOCKER_IMAGE: fedora/35
  dependencies:
    - build/fedora/35

upload/fedora/35:
  <<: *upload
  dependencies:
    - build/fedora/35

build/fedora/34:
  <<: *build
  variables:
    DOCKER_IMAGE: fedora/34
    RPM_BUILD_NCPUS: '1'

test/fedora/34:
  <<: *test
  variables:
    DOCKER_IMAGE: fedora/34
  dependencies:
    - build/fedora/34

upload/fedora/34:
  <<: *upload
  dependencies:
    - build/fedora/34

###################################
# SLES
###################################
build/sles/15.3:
  <<: *build
  variables:
    DOCKER_IMAGE: sles/15.3

test/sles/15.3:
  <<: *test
  variables:
    DOCKER_IMAGE: sles/15.3
  dependencies:
  - build/sles/15.3

upload/SUSE/15.3:
  <<: *upload
  dependencies:
  - build/sles/15.3

build/sles/15.2:
  <<: *build
  variables:
    DOCKER_IMAGE: sles/15.2

test/sles/15.2:
  <<: *test
  variables:
    DOCKER_IMAGE: sles/15.2
  dependencies:
    - build/sles/15.2

upload/SUSE/15.2:
  <<: *upload
  dependencies:
    - build/sles/15.2

build/sles/12.5:
  <<: *build
  variables:
    DOCKER_IMAGE: sles/12.5

test/sles/12.5:
  <<: *test
  variables:
    DOCKER_IMAGE: sles/12.5
  dependencies:
    - build/sles/12.5

upload/SUSE/12.5:
  <<: *upload
  dependencies:
    - build/sles/12.5

###################################
# openSUSE
###################################
build/opensuse/15.3:
  <<: *build
  variables:
    DOCKER_IMAGE: opensuse/15.3

test/opensuse/15.3:
  <<: *test
  variables:
    DOCKER_IMAGE: opensuse/15.3
  dependencies:
  - build/opensuse/15.3

upload/openSUSE/15.3:
  <<: *upload
  dependencies:
  - build/opensuse/15.3

build/opensuse/15.2:
  <<: *build
  variables:
    DOCKER_IMAGE: opensuse/15.2

test/opensuse/15.2:
  <<: *test
  variables:
    DOCKER_IMAGE: opensuse/15.2
  dependencies:
    - build/opensuse/15.2

upload/openSUSE/15.2:
  <<: *upload
  dependencies:
    - build/opensuse/15.2
