Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 33.52 KiB
stages:
  - prepare-base
  - prepare
  - build
  - unit_test
  - integration_test
  - regression_test
  - dockerize
  - deploy-test
  - deploy-prod
  - quality-control

include:
  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'

variables:
  VERSION: "0.0.0"
  USE_PYTHON: "true"
  CEP_HEADNODE: "head.cep4.control.lofar"
  MARK_PIPELINES_LATEST:
    description: "Use deployed pipelines as default in production?"
    value: "false"
    options:
      - "false"
      - "true"

#
# This script snippet sets the VERSION argument to the correct version based on the LOFAR-Release tag.
# Non LOFAR-Release tag builds will have the 0.0.0 version.
#
.set_version: &set_version
    - if echo $CI_COMMIT_TAG | grep -Eq "^LOFAR-Release-[0-9]+_[0-9]+_[0-9]+"; then TMP=${CI_COMMIT_TAG//LOFAR-Release-/}; VERSION=${TMP//_/.}; fi
    - echo "BUILDING $VERSION"

#
# This script snippet needs a PACKAGE variable to define which package to build.
# It also uses the global VERSION variable.
#
.build_mac_package: &build_mac_package
  - echo "Building $PACKAGE..."
  - mkdir -p build/gnucxx11_opt
  - cd build/gnucxx11_opt
  - /usr/local/bin/cmake -DBUILD_PACKAGES=$PACKAGE -DUSE_PYTHON=$USE_PYTHON -DUSE_UNITTEST++=OFF -DWINCC_ROOT_DIR=/opt/WinCC_OA/3.16/ -DBLITZ_ROOT_DIR=/opt/blitz/ -DCASACORE_ROOT_DIR=/opt/casacore/ -DCMAKE_INSTALL_PREFIX=/opt/lofar ../..
  - make -j $(nproc)
  - make DESTDIR=${CI_BUILDS_DIR}/${CI_COMMIT_SHORT_SHA}/install install
  - cd ${CI_BUILDS_DIR}/${CI_COMMIT_SHORT_SHA}/install/opt/lofar
  - tar --ignore-failed-read --exclude=include --exclude="*.ztar" -czf ${PACKAGE}_${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}.ztar *
  - *set_version
  - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${PACKAGE}_${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}.ztar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE}/${VERSION}/${PACKAGE}_${CI_COMMIT_REF_NAME}_0.x86_64.ztar"'

#
# This script snippet needs a LOFAR_TARGET variable to define the SSH host to connect to.
#
.prepare_ssh: &prepare_ssh
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan $LOFAR_TARGET >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts

#
# This script snipper needs a PACKAGE, a LOFAR_TARGET, and a LOFAR_USER variable to mac install a package to a target
# It also uses the global VERSION variable
#
.mac_install_package: &mac_install_package
  - *set_version
  - ssh $LOFAR_USER@$LOFAR_TARGET "mkdir -p ~/incoming && cd ~/incoming && wget --no-check-certificate --backups=1 --user=$MACINSTALL_USER --password=$MACINSTALL_PASSWORD https://git.astron.nl/api/v4/projects/6/packages/generic/$PACKAGE/$VERSION/${PACKAGE}_${CI_COMMIT_REF_NAME}_0.x86_64.ztar"
  - ssh $LOFAR_USER@$LOFAR_TARGET "MAC_install -f ${PACKAGE}_${CI_COMMIT_REF_NAME}_0.x86_64.ztar -v ${CI_COMMIT_REF_NAME}"