Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.68 KiB
variables:
  CI_REGISTRY: ${CODE_REGISTRY}
  CI_REGISTRY_IMAGE: ${CODE_REGISTRY_IMAGE}
  DOCKER_DIR: docker-images
  DOCKER_TAR: ${DOCKER_DIR}/app.tar
  IMAGE_NAME_HAZ: nshmp-haz:${CI_COMMIT_REF_SLUG}
  IMAGE_NAME_WS: nshmp-haz-ws:${CI_COMMIT_REF_SLUG}
  JACOCO_HTML_DIR: build/reports/jacoco/test/html
  JUNIT_FILES: build/test-results/test/TEST-*.xml

stages:
  - test
  - publish
  - deploy

####
# Templates
####

.dev-tags:
  tags:
    - development

.templates:
  adjust-image-names-haz: &adjust-image-names-haz |-
    IMAGE_NAME=${IMAGE_NAME_HAZ/:master/:latest};
    INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME_WS};
  adjust-image-names-ws: &adjust-image-names-ws |-
    IMAGE_NAME=${IMAGE_NAME_HAZ/:master/:latest};
    INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME_WS};
  ssh-key: &ssh-key |-
    eval $(ssh-agent -s);
    mkdir -p ~/.ssh;
    chmod 700 ~/.ssh;
    echo "${SSH_PRIVATE_KEY}" >> ~/.ssh/id_ed25519;
    chmod 0600 ~/.ssh/id_ed25519;
    echo "${SSH_PRIVATE_KEY}" >> ~/.ssh/id_rsa;
    chmod 0600 ~/.ssh/id_rsa;
    echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config;

.docker-build:
  stage: test
  image: docker:stable
  extends: .dev-tags
  only:
    - branches
    - master@ghsc/nshmp/nshmp-haz-v2
    - tags@ghsc/nshmp/nshmp-haz-v2
  script:
    - apk add git;
    - *ssh-key
    - mkdir ${DOCKER_DIR}
    - docker build --build-arg ssh_private_key="${SSH_PRIVATE_KEY}" -t local/${IMAGE_NAME} .
    - docker save local/${IMAGE_NAME} > ${DOCKER_TAR}
  artifacts:
    paths:
      - ${DOCKER_DIR}

.docker-publish:
  stage: publish
  image: docker:stable
  extends: .dev-tags
  only:
    - master@ghsc/nshmp/nshmp-haz-v2
    - tags@ghsc/nshmp/nshmp-haz-v2
  script:
    - echo "${CHS_PASSWORD}" | docker login --username ${CHS_USERNAME} --password-stdin ${CODE_REGISTRY}
    - docker load -i ${DOCKER_TAR}
    - docker tag local/${IMAGE_NAME} ${INTERNAL_IMAGE_NAME}
    - docker push ${INTERNAL_IMAGE_NAME}