Newer
Older

Santiago Ospina De Los Ríos
committed
- setup
.default_tags: &default_tags
- "cores:4"
.dind_docker_tags: &dind_docker_tags
- "dind"
.global_variables: &global_variables
DUNE_OPTIONS_FILE: /duneci/dune.opts
DUNECONTROL: dunecontrol

Santiago Ospina De Los Ríos
committed
BASE_IMAGE_VERSION: v0.4.0-git
.docker_variables: &docker_variables
DOCKER_BUILDKIT: 1
DOCKER_IMAGE: docker:19.03.1
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
<<: *global_variables
TOOLCHAIN: gcc-8-17
DUNECI_OS: debian
BASE_IMAGE: debian:10
DEPENDENCIES_IMAGE: ${CI_REGISTRY}/copasi/dune-copasi/dependencies:${DUNECI_OS}-${TOOLCHAIN}-${BASE_IMAGE_VERSION}
MASTER_IMAGE: "true"
<<: *global_variables
TOOLCHAIN: clang-6-17
DUNECI_OS: debian
BASE_IMAGE: debian:10
DEPENDENCIES_IMAGE: ${CI_REGISTRY}/copasi/dune-copasi/dependencies:${DUNECI_OS}-${TOOLCHAIN}-${BASE_IMAGE_VERSION}
<<: *global_variables
TOOLCHAIN: gcc-7-17
DUNECI_OS: ubuntu
BASE_IMAGE: ubuntu:18.04
DEPENDENCIES_IMAGE: ${CI_REGISTRY}/copasi/dune-copasi/dependencies:${DUNECI_OS}-${TOOLCHAIN}-${BASE_IMAGE_VERSION}
<<: *global_variables
TOOLCHAIN: clang-6-17
DUNECI_OS: ubuntu
BASE_IMAGE: ubuntu:18.04
DEPENDENCIES_IMAGE: ${CI_REGISTRY}/copasi/dune-copasi/dependencies:${DUNECI_OS}-${TOOLCHAIN}-${BASE_IMAGE_VERSION}

Santiago Ospina De Los Ríos
committed
.setup: &setup
image: ${DOCKER_IMAGE}

Santiago Ospina De Los Ríos
committed
stage: setup
script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY/copasi/dune-copasi
- docker build
--build-arg BASE_IMAGE=${BASE_IMAGE}
--build-arg TOOLCHAIN=${TOOLCHAIN}
--build-arg BUILDKIT_INLINE_CACHE=1
--target setup-env
-t ${DEPENDENCIES_IMAGE} .
- docker push ${DEPENDENCIES_IMAGE}
- docker logout $CI_REGISTRY/copasi/dune-copasi
rules:
- if: '$REBUILD_BASE_IMAGE'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH == "latest"'
<<: *dind_docker_tags
image: ${DEPENDENCIES_IMAGE}

Santiago Ospina De Los Ríos
committed
- export CMAKE_PREFIX_PATH="$CI_PROJECT_DIR/dune-copasi-install"
- $CI_PROJECT_DIR/dune-copasi-install
<<: *default_tags
image: ${DEPENDENCIES_IMAGE}
- ./.ci/test /duneci/dune.opts
<<: *default_tags
image: ${DOCKER_IMAGE}
# login into registry
- echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY/copasi/dune-copasi
- DOCKER_TAG="${DUNECI_OS}-${TOOLCHAIN}-${CI_COMMIT_REF_NAME}"
- DOCKER_DEPLOY_IMAGE=$CI_REGISTRY/copasi/dune-copasi/dune-copasi:${DOCKER_TAG}
# set directory to get packages from the image
- mkdir -p $CI_PROJECT_DIR/packages
# build dockerfile from repositroy
- docker build
--build-arg BASE_IMAGE=${BASE_IMAGE}
--build-arg TOOLCHAIN=${TOOLCHAIN}
--target build-env
--cache-from ${DEPENDENCIES_IMAGE}
-t build-image .
# run image and get its id
- DOCKER_ID=$(eval docker run -t -d --entrypoint bash build-image)
# move runtime files in packages folder into a local artifact folder
- mkdir -p -m o+w $CI_PROJECT_DIR/packages
- PACKAGE=$(docker exec ${DOCKER_ID} sh -c "ls /duneci/packages/dune-copasi-*-Runtime.deb")
- docker cp ${DOCKER_ID}:${PACKAGE} ${CI_PROJECT_DIR}/packages
- docker stop ${DOCKER_ID}
# build final production image
- docker build
--build-arg BASE_IMAGE=${BASE_IMAGE}
--build-arg TOOLCHAIN=${TOOLCHAIN}
--target production-env
--cache-from build-image
-t ${DOCKER_DEPLOY_IMAGE} .
# push images into registry
- docker push ${DOCKER_DEPLOY_IMAGE}
# set alternative and simpler names

Santiago Ospina De Los Ríos
committed
- |
if [[ ! -z "${MASTER_IMAGE}" ]]; then
DOCKER_TAG=${CI_REGISTRY}/copasi/dune-copasi/dune-copasi:${CI_COMMIT_REF_NAME}
docker tag ${DOCKER_DEPLOY_IMAGE} ${DOCKER_TAG}
docker push ${DOCKER_TAG}
if [[ "$CI_COMMIT_BRANCH" == "latest" ]]; then
DOCKER_TAG=${CI_REGISTRY}/copasi/dune-copasi/dune-copasi:latest
docker tag ${DOCKER_DEPLOY_IMAGE} ${DOCKER_TAG}
docker push ${DOCKER_TAG}
fi
- docker logout ${CI_REGISTRY}/copasi/dune-copasi
rules:
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH == "latest"'
artifacts:
paths:
- packages
expire_in: never
<<: *dind_docker_tags

Santiago Ospina De Los Ríos
committed
setup:debian_gcc:
variables:
<<: *docker_variables
<<: *debian_gcc

Santiago Ospina De Los Ríos
committed
<<: *setup
variables:
<<: *debian_gcc
variables:
<<: *debian_gcc
variables:
<<: *docker_variables
<<: *debian_gcc
# # ubuntu gcc
# setup:ubuntu_gcc:
# variables:
# <<: *docker_variables
# <<: *ubuntu_gcc
# variables:
# <<: *ubuntu_gcc
# <<: *build
# dependencies:
# - setup:ubuntu_gcc
# - build:ubuntu_gcc
# variables:
# <<: *ubuntu_gcc
# variables:
# <<: *docker_variables
# <<: *ubuntu_gcc
# <<: *deploy
# dependencies:
# debian clang
setup:debian_clang:
variables:
<<: *docker_variables
<<: *debian_clang
variables:
<<: *debian_clang
- setup:debian_clang
- build:debian_clang
variables:
<<: *debian_clang
variables:
<<: *docker_variables
<<: *debian_clang
# # ubuntu clang
# setup:ubuntu_clang:
# <<: *ubuntu_clang
# build:ubuntu_clang:
# <<: *ubuntu_clang
# <<: *build
# dependencies:
# - setup:ubuntu_clang
# deploy:ubuntu_clang:
# <<: *ubuntu_clang
# <<: *deploy
# dependencies: