--- workflow: rules: - if: $CI_COMMIT_BRANCH variables: GO_VERSION_FILE: $CI_PROJECT_DIR/common/go/src/asapo_common/version/version_lib.go include: - local: deploy/build_env/services-linux/gitlab-ci-build-docker.yml - local: deploy/build_env/services-windows/gitlab-ci-build-docker.yml - local: deploy/build_env/centos/gitlab-ci-build-docker.yml - local: deploy/build_env/debians/gitlab-ci-build-docker.yml - local: deploy/build_env/ubuntu/gitlab-ci-build-docker.yml - local: deploy/build_env/manylinux2014/gitlab-ci-build-docker.yml - local: deploy/build_env/site/gitlab-ci-build-docker.yml - local: deploy/secondary_services/fluentd_elastic/gitlab-ci-build-docker.yml .go-cache: variables: GOPATH: $CI_PROJECT_DIR/.go before_script: - mkdir -p .go cache: paths: - .go/pkg/mod/ .client-packages: stage: build script: - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - PACKAGE_UP=${PACKAGE_TYPE^^} - PACKAGE_LOW=${PACKAGE_TYPE,,} - > if [ -z "$WITH_LIBFABRIC" ]; then ENABLE_LIBFABRIC="OFF" else ENABLE_LIBFABRIC="ON" fi - cmake -DCMAKE_BUILD_TYPE="Release" -DENABLE_LIBFABRIC=$ENABLE_LIBFABRIC -DINSTALL_EXAMPLES=ON -DBUILD_CLIENTS_ONLY=ON -DPACKAGE_RELEASE_SUFFIX=$OS_SUFFIX -DBUILD_PYTHON=OFF -DCPACK_PACKAGE_NAME="asapo-devel" -DCPACK_GENERATOR=$PACKAGE_UP .. - make -j 4 - make package - rm -f CMakeCache.txt - cmake -DCMAKE_BUILD_TYPE="Release" -DENABLE_LIBFABRIC=$ENABLE_LIBFABRIC -DBUILD_CLIENTS_ONLY=ON -DNUMPY_VERSION=0 -DBUILD_PYTHON=ON -DPACKAGE_RELEASE_SUFFIX=$OS_SUFFIX -DBUILD_PYTHON_PACKAGES="source;${PACKAGE_LOW}" -DBUILD_PYTHON_DOCS=OFF .. - make -j 1 - mkdir -p $CI_PROJECT_DIR/linux_packages/$PACKAGE_FOLDER - cp $CI_PROJECT_DIR/build/asapo-devel* $CI_PROJECT_DIR/linux_packages/$PACKAGE_FOLDER - cp $CI_PROJECT_DIR/build/*/api/python/dist_linux/dist/* $CI_PROJECT_DIR/linux_packages/$PACKAGE_FOLDER tags: - kubernetes-executor rules: - when: on_success artifacts: paths: - linux_packages expire_in: 3 hrs .client-packages-manylinux: image: name: $CI_REGISTRY_IMAGE/asapo-packages-manylinux-build-env:latest entrypoint: [""] stage: build script: - python_bin=$PYTHON_PATH/bin/python - pip_bin=$PYTHON_PATH/bin/pip - $pip_bin install cython numpy==$NUMPY_VERSION - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - cmake -DENABLE_LIBFABRIC=ON -DCMAKE_BUILD_TYPE="Release" -DBUILD_CLIENTS_ONLY=ON -DPython_EXECUTABLE=$python_bin -DBUILD_PYTHON_PACKAGES=source -DNUMPY_VERSION=$NUMPY_VERSION .. - cd $CI_PROJECT_DIR/build/consumer/api/python/dist_linux - make python-dist-consumer - $pip_bin wheel dist/*.tar.gz --no-deps - FILE=$(ls -t -U asapo_consumer*whl) - auditwheel repair $FILE - cd $CI_PROJECT_DIR/build/producer/api/python/dist_linux - make python-dist-producer - $pip_bin wheel dist/*.tar.gz --no-deps - FILE=$(ls -t -U asapo_producer*whl) - auditwheel repair $FILE - mkdir -p $CI_PROJECT_DIR/wheel_packages/$WHEEL_FOLDER - cp $CI_PROJECT_DIR/build/*/api/python/dist_linux/wheelhouse/*.whl $CI_PROJECT_DIR/wheel_packages/$WHEEL_FOLDER tags: - kubernetes-executor rules: - when: on_success artifacts: paths: - wheel_packages expire_in: 3 hrs pre-commit: stage: build tags: - kubernetes-executor image: name: python:3.9.19-slim entrypoint: [""] before_script: - apt-get update && apt-get install --no-install-recommends -y git - pip install pre-commit script: - pre-commit run -a after_script: - git --no-pager diff build-services-linux-debug: extends: .go-cache image: name: $CI_REGISTRY_IMAGE/asapo-services-linux-build-env:latest entrypoint: [""] stage: build script: - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DBUILD_INTEGRATION_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DENABLE_LIBFABRIC=ON -DENABLE_LIBFABRIC_LOCALHOST=ON -DBUILD_EVENT_MONITOR_PRODUCER=ON -DSTOP_BUILD_ON_WARNINGS=ON -DENABLE_NEW_RECEIVER_MONITORING=ON .. - make -j 4 # Ensures that the definition of versions of Go packages is present and will be uploaded. - cat "$GO_VERSION_FILE" tags: - kubernetes-executor rules: - when: always artifacts: paths: - build - "$GO_VERSION_FILE" exclude: - build/**/CMakeFiles/**/*.o - build/**/CMakeFiles/**/*.gcno - build/**/CMakeFiles/**/*.gcda - build/**/CMakeFiles/**/*.objlib - build/**/CMakeFiles/**/*.includecache - build/**/*.a expire_in: 3 hrs test-services-linux-debug: extends: .go-cache image: name: $CI_REGISTRY_IMAGE/asapo-services-linux-build-env:latest stage: test script: - cd $CI_PROJECT_DIR - bash $CI_PROJECT_DIR/deploy/build_env/services-linux/run_asapo.sh - supervisorctl status - cd $CI_PROJECT_DIR/build - ctest --no-compress-output -T Test -E "full_chain_monitoring|noaccess|restart|logger_fluentd|coverage" --output-on-failure --output-junit testResult.xml - pip3 install pytest tags: - kubernetes-executor rules: - when: on_success dependencies: - build-services-linux-debug artifacts: reports: junit: build/testResult.xml .test_python_wheels_template: services: - name: gitlab.desy.de:5555/asapo/asapo/asapo-standalone-dev:latest image: name: $CI_REGISTRY_IMAGE/asapo-packages-manylinux-build-env:latest stage: deploy script: - python_bin=$PYTHON_PATH/bin/python - pip_bin=$PYTHON_PATH/bin/pip - cd $CI_PROJECT_DIR/tests/automatic/pytests - $pip_bin install pytest - $pip_bin install --trusted-host nims.desy.de --find-links=http://nims.desy.de/extra/asapo/linux_wheels asapo_consumer==$CLIENT_VERSION - $pip_bin install --trusted-host nims.desy.de --find-links=http://nims.desy.de/extra/asapo/linux_wheels asapo_producer==$CLIENT_VERSION - $python_bin -m pytest test_pipeline.py --token-path standalone_token.txt -vv -o log_cli=true --log-cli-level=DEBUG $PYTEST_KEY tags: - DESY-intern dependencies: - upload-python-packages - build-services-docker-release test_wheels-python36_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp36-cp36m CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python37_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp37-cp37m CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python38_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp38-cp38 CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python39_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp39-cp39 CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python310_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp310-cp310 CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python311_dev: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp311-cp311 CLIENT_VERSION: 100.0.dev2 PYTEST_KEY: "" test_wheels-python36_22.03.00: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp36-cp36m CLIENT_VERSION: 22.03.00 PYTEST_KEY: -m compatible test_wheels-python37_22.03.00: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp37-cp37m CLIENT_VERSION: 22.03.00 PYTEST_KEY: -m compatible test_wheels-python38_22.03.00: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp38-cp38 CLIENT_VERSION: 22.03.00 PYTEST_KEY: -m compatible test_wheels-python39_22.03.00: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp39-cp39 CLIENT_VERSION: 22.03.00 PYTEST_KEY: -m compatible test_wheels-python310_22.10: extends: .test_python_wheels_template variables: PYTHON_PATH: /opt/python/cp310-cp310 CLIENT_VERSION: "22.10" PYTEST_KEY: -m compatible build-services-linux-release: extends: .go-cache image: name: $CI_REGISTRY_IMAGE/asapo-services-linux-build-env:latest entrypoint: [""] variables: CI_REGISTRY_IMAGE_USERNAME: "asapo-dev-registry" CI_REGISTRY_IMAGE_PASSWORD: ${asapo_dev_registry_password} stage: build script: - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=ON -DBUILD_CONSUMER_TOOLS=ON -DBUILD_BROKER=ON -DBUILD_INTEGRATION_TESTS=ON -DENABLE_LIBFABRIC=ON -DBUILD_EVENT_MONITOR_PRODUCER=ON -DSTOP_BUILD_ON_WARNINGS=ON -DENABLE_NEW_RECEIVER_MONITORING=ON .. - make -j 4 tags: - kubernetes-executor rules: - when: on_success artifacts: paths: - build exclude: - build/**/CMakeFiles/**/* - build/**/*.a expire_in: 3 hrs build-packages-centos7: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-centos7-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "RPM" WITH_LIBFABRIC: "YES" OS_SUFFIX: "1.el7" PACKAGE_FOLDER: "centos7.9.2009" build-packages-centos8: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-centos8-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "RPM" WITH_LIBFABRIC: "YES" OS_SUFFIX: "1.el8" PACKAGE_FOLDER: "centos8.3.2011" build-packages-debian9: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-debian9-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" OS_SUFFIX: "debian9.13" PACKAGE_FOLDER: "debian9.13" build-packages-debian10: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-debian10-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" WITH_LIBFABRIC: "YES" OS_SUFFIX: "debian10.11" PACKAGE_FOLDER: "debian10.11" build-packages-debian11: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-debian11-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" WITH_LIBFABRIC: "YES" OS_SUFFIX: "debian11.3" PACKAGE_FOLDER: "debian11.3" build-packages-debian12: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-debian12-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" WITH_LIBFABRIC: "YES" OS_SUFFIX: "debian12.2" PACKAGE_FOLDER: "debian12.2" build-packages-ubuntu1804: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-ubuntu1804-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" WITH_LIBFABRIC: "YES" OS_SUFFIX: "ubuntu18.04" PACKAGE_FOLDER: "ubuntu18.04" build-packages-ubuntu2004: extends: .client-packages image: name: $CI_REGISTRY_IMAGE/asapo-packages-ubuntu2004-build-env:latest entrypoint: [""] variables: PACKAGE_TYPE: "DEB" WITH_LIBFABRIC: "YES" OS_SUFFIX: "ubuntu20.04" PACKAGE_FOLDER: "ubuntu20.04" build-packages-python36: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp36-cp36m NUMPY_VERSION: 1.12.1 WHEEL_FOLDER: python36 build-packages-python37: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp37-cp37m NUMPY_VERSION: 1.14.5 WHEEL_FOLDER: python37 build-packages-python38: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp38-cp38 NUMPY_VERSION: 1.17.3 WHEEL_FOLDER: python38 build-packages-python39: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp39-cp39 NUMPY_VERSION: 1.19.3 WHEEL_FOLDER: python39 build-packages-python310: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp310-cp310 NUMPY_VERSION: 1.23.4 WHEEL_FOLDER: python310 build-packages-python311: extends: .client-packages-manylinux variables: PYTHON_PATH: /opt/python/cp311-cp311 NUMPY_VERSION: 1.24.3 WHEEL_FOLDER: python311 build-docs: image: name: $CI_REGISTRY_IMAGE/asapo-services-linux-build-env:latest entrypoint: [""] stage: build script: - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CPP_DOCS=ON -DBUILD_PYTHON_DOCS=ON .. - cd $CI_PROJECT_DIR/build/docs/doxygen - make -j 4 - cd $CI_PROJECT_DIR/build/docs/sphinx - make -j 4 - mkdir -p $CI_PROJECT_DIR/public - mv $CI_PROJECT_DIR/build/docs/doxygen/html $CI_PROJECT_DIR/public/cpp - mv $CI_PROJECT_DIR/build/docs/sphinx/sphinx/build/html $CI_PROJECT_DIR/public/python tags: - kubernetes-executor rules: - when: on_success artifacts: paths: - public expire_in: 3 hrs build-front: image: name: node:16 entrypoint: [""] stage: build script: - mkdir -p $CI_PROJECT_DIR/build/monitoring_ui - cd $CI_PROJECT_DIR/build/monitoring_ui - cp -r $CI_PROJECT_DIR/monitoring/monitoring_ui/* . - npm install - ./generate-proto.sh - npm run build tags: - kubernetes-executor rules: - when: on_success artifacts: paths: - build expire_in: 3 hrs .build-services-docker-template: image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] stage: deploy script: - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - services="broker authorizer discovery receiver file-transfer" - > for service in $services; do service_dir=${service//"-"/"_"} /kaniko/executor --cleanup --cache=false --context $CI_PROJECT_DIR/build/${service_dir} --dockerfile $CI_PROJECT_DIR/build/${service_dir}/Dockerfile --destination $CI_REGISTRY_IMAGE/asapo-${service}${CONTAINER_TAG} done - /kaniko/executor --cleanup --cache=false --context $CI_PROJECT_DIR/build/monitoring/monitoring_server --dockerfile $CI_PROJECT_DIR/monitoring/monitoring_server/docker/Dockerfile --destination $CI_REGISTRY_IMAGE/asapo-monitoring-server${CONTAINER_TAG} - /kaniko/executor --cleanup --cache=false --context $CI_PROJECT_DIR/monitoring/monitoring_ui --dockerfile $CI_PROJECT_DIR/monitoring/monitoring_ui/Dockerfile --destination $CI_REGISTRY_IMAGE/asapo-monitoring-ui${CONTAINER_TAG} - /kaniko/executor --cleanup --cache=false --context $CI_PROJECT_DIR/build/deploy/asapo_services --dockerfile $CI_PROJECT_DIR/build/deploy/asapo_services/Dockerfile --destination $CI_REGISTRY_IMAGE/asapo-cluster${CONTAINER_TAG} --destination $CI_REGISTRY_IMAGE/asapo-cluster${CONTAINER_TAG_LATEST} - cd $CI_PROJECT_DIR/build/deploy/asapo_services_light - ./prepare-docker.sh - /kaniko/executor --cache=false --single-snapshot --context $CI_PROJECT_DIR/build/deploy/asapo_services_light --dockerfile $CI_PROJECT_DIR/build/deploy/asapo_services_light/Dockerfile --destination $CI_REGISTRY_IMAGE/asapo-standalone${CONTAINER_TAG} --destination $CI_REGISTRY_IMAGE/asapo-standalone${CONTAINER_TAG_LATEST} tags: - kubernetes-executor dependencies: - build-services-linux-release - build-front build-services-docker-dev: extends: .build-services-docker-template rules: - if: $CI_COMMIT_REF_NAME == "develop" when: on_success - when: never variables: CONTAINER_TAG: "-dev:${CI_COMMIT_SHORT_SHA}" CONTAINER_TAG_LATEST: "-dev:latest" build-services-docker-release: extends: .build-services-docker-template only: - tags variables: CONTAINER_TAG: ":${CI_COMMIT_TAG}" CONTAINER_TAG_LATEST: ":latest" .upload-client-packages-template: image: name: $CI_REGISTRY_IMAGE/asapo-services-linux-build-env:latest entrypoint: [""] stage: deploy variables: GIT_STRATEGY: none script: - mkdir -p ~/.ssh - echo "$NIMS_SSH_KNOWN_HOST" >> ~/.ssh/known_hosts - chmod 600 $NIMS_SSH_PRIVATE_KEY - > for dist in $(ls $CI_PROJECT_DIR/linux_packages); do files="asapo-devel python-asapo python3-asapo" for file in $files; do if ls $CI_PROJECT_DIR/linux_packages/${dist}/${file}* 1> /dev/null 2>&1; then PACKAGE_ID=$(curl -s -G --header "JOB-TOKEN: $CI_JOB_TOKEN" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages -d package_name=$file-$dist -d package_type=generic | jq -c ".[] | select(.pipeline != null) | select(.pipeline.ref | contains(\"$CI_COMMIT_REF_NAME\")) | (.id)") if ! [ -z "$PACKAGE_ID" ]; then echo Removing Package ${PACKAGE_ID} curl --request DELETE --header "JOB-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${PACKAGE_ID}" fi for distfile in $(ls $CI_PROJECT_DIR/linux_packages/$dist/${file}*); do DIST_FILE=${distfile//"~"/"_"} curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $distfile "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$file-$dist/$DIST_VERSION/$(basename $DIST_FILE)" done echo "put $CI_PROJECT_DIR/linux_packages/$dist/${file}* asapo/linux_packages/$dist/" | sftp -v -i $NIMS_SSH_PRIVATE_KEY -P 2022 asapo@it-fs5.desy.de fi done done tags: - DESY-intern dependencies: - build-packages-centos7 - build-packages-centos8 - build-packages-debian9 - build-packages-debian10 - build-packages-debian11 - build-packages-debian12 - build-packages-ubuntu1804 - build-packages-ubuntu2004 upload-client-packages-dev: extends: .upload-client-packages-template rules: - if: $CI_COMMIT_REF_NAME == "develop" when: on_success - when: never variables: DIST_VERSION: "100.0.dev" upload-client-packages-release: extends: .upload-client-packages-template only: - tags variables: DIST_VERSION: ${CI_COMMIT_TAG} upload-python-packages: image: name: python:latest entrypoint: [""] stage: deploy variables: GIT_STRATEGY: none script: - mkdir -p ~/.ssh - echo "$NIMS_SSH_KNOWN_HOST" >> ~/.ssh/known_hosts - chmod 600 $NIMS_SSH_PRIVATE_KEY - pip install twine - > for pac_id in $(curl -s -G --header "JOB-TOKEN: $CI_JOB_TOKEN" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages -d package_type=pypi | python -c "import sys, json; [print(x['id']) for x in json.load(sys.stdin) if ('pipeline' in x) and (x['pipeline'] is not None) and ('ref' in x['pipeline']) and (x['pipeline']['ref'] == '$CI_COMMIT_REF_NAME')]"); do echo Removing package ${pac_id} curl --request DELETE --header "JOB-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${pac_id}" done - > for dist in $(ls $CI_PROJECT_DIR/wheel_packages); do TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi $CI_PROJECT_DIR/wheel_packages/${dist}/* TWINE_PASSWORD=${PIPY_TOKEN} TWINE_USERNAME=__token__ python -m twine upload --skip-existing $CI_PROJECT_DIR/wheel_packages/${dist}/* echo "put $CI_PROJECT_DIR/wheel_packages/${dist}/* asapo/linux_wheels/" | sftp -v -i $NIMS_SSH_PRIVATE_KEY -P 2022 asapo@it-fs5.desy.de done - wget -q -O- http://it-fs5.desy.de/cgi-bin/asapoSync.cgi tags: - DESY-intern rules: - if: $CI_COMMIT_REF_NAME == "develop" when: on_success - if: $CI_COMMIT_TAG when: on_success - when: never dependencies: - build-packages-python36 - build-packages-python37 - build-packages-python38 - build-packages-python39 - build-packages-python310 - build-packages-python311 image: $CI_REGISTRY_IMAGE/asapo-site-build-env:latest pages: stage: deploy script: - mkdir $CI_PROJECT_DIR/build - cd $CI_PROJECT_DIR/build - cmake -DCMAKE_BUILD_TYPE="Release" -DBUILD_CLIENTS_ONLY=ON -DBUILD_PYTHON=OFF -DBUILD_ASAPO_SITE=ON -DLIBCURL_DIR=/curl -DPython_EXECUTABLE="noop" .. - cd docs/site - npm install - npm install raw-loader - make site - mv $CI_PROJECT_DIR/build/docs/site/build/* $CI_PROJECT_DIR/public artifacts: paths: - public rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH dependencies: - build-docs