variables: DOCKER_TLS_CERTDIR: "" GIT_STRATEGY: clone REGISTRY_USER: chembl/chembl APPLICATION: delayed-jobs/delayed-jobs-api/delayed-jobs-server IMAGE_TAG: $CI_REGISTRY/$REGISTRY_USER/$APPLICATION:${CI_COMMIT_SHORT_SHA} DOCKER_IMAGE: $CI_REGISTRY/$REGISTRY_USER/$APPLICATION DOCKER_DRIVER: overlay image: docker:latest services: - docker:dind stages: - build - test_and_qa - deploy_to_staging # ---------------------------------------------------------------------------------------------------------------------- # build # ---------------------------------------------------------------------------------------------------------------------- build_docker_image: image: name: docker/compose:1.24.1 entrypoint: ["/bin/sh", "-c"] stage: build variables: DOCKER_HOST: tcp://docker:2375 script: - set -x - docker version # verify docker cli is there. Also prints server info - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - echo building $IMAGE_TAG - docker-compose build delayed-jobs-server-prod - echo Deploying $IMAGE_TAG - docker push $IMAGE_TAG # ---------------------------------------------------------------------------------------------------------------------- # QA # ---------------------------------------------------------------------------------------------------------------------- pylint: stage: test_and_qa image: name: $IMAGE_TAG entrypoint: [""] script: - pwd - ls - echo 'disabled temporarily' # ---------------------------------------------------------------------------------------------------------------------- # Tests # ---------------------------------------------------------------------------------------------------------------------- unit_tests: stage: test_and_qa image: name: $IMAGE_TAG entrypoint: [""] script: - env # Reminder for David: put here all tests that should be ready until you finish and then run all - CONFIG_FILE_PATH='./configurations/ci_unit_tests_config.yml' python -m unittest app.models.test.test_models.TestModels - CONFIG_FILE_PATH='./configurations/ci_unit_tests_config.yml' python -m unittest app.models.test.test_expired_job_deletion.TestExpiredJobDeletion - CONFIG_FILE_PATH='./configurations/ci_unit_tests_config.yml' python -m unittest app.namespaces.job_submission.services.test.test_job_submission.TestJobSubmitter # - CONFIG_FILE_PATH='./configurations/ci_unit_tests_config.yml' python -m unittest functional_tests: stage: test_and_qa image: name: $IMAGE_TAG entrypoint: [""] script: - echo 'Disabled temporarily' # - rm -rf app/static/jobs_output || true # - rm -rf jobs_run || true # - CONFIG_FILE_PATH='./configurations/ci_functional_tests_config.yml' FLASK_APP=app flask run > functional_tests_run.log 2>&1 & # - sleep 5 # - head functional_tests_run.log # - SERVER_PID=$! # - pushd app/functional_tests # - ./run_functional_tests.py # - popd # - kill $SERVER_PID # - rm -rf app/static/jobs_output # - rm -rf jobs_run # ---------------------------------------------------------------------------------------------------------------------- # Deployment to staging # ---------------------------------------------------------------------------------------------------------------------- deploy_to_staging: stage: deploy_to_staging image: name: lachlanevenson/k8s-kubectl:latest entrypoint: ["/bin/sh", "-c"] when: manual only: - staging environment: name: staging url: http://hx-rke-wp-webadmin-04-worker-3.caas.ebi.ac.uk:31688/chembl/interface_api/delayed_jobs/ script: - set -x - echo "$KUBE_CA_PEM_HX" > "$(pwd)/kube.ca.pem" - kubectl config set-cluster ${KUBE_CLUS_NAME_HX} --server="${KUBE_URL_HX}" --certificate-authority="$(pwd)/kube.ca.pem" - kubectl config set-credentials ${KUBE_USER_HX} --token="${KUBE_TOKEN_HX}" - kubectl config set-context ${CHEMBL_NS_STAGING} --cluster=${KUBE_CLUS_NAME_HX} --user=${KUBE_USER_HX} - kubectl config use-context ${CHEMBL_NS_STAGING} - echo ${CHEMBL_NS_STAGING} ${KUBE_URL_HX} ${KUBE_CLUS_NAME_HX} ${KUBE_USER_HX} - kubectl get pods -n ${CHEMBL_NS_STAGING} - kubectl create secret generic ${ID_RSA_SECRET_NAME_STAGING} --from-file=ID_RSA_LSF=${ID_RSA_LSF_HX} -o yaml -n ${CHEMBL_NS_STAGING} --dry-run | kubectl replace -f - - kubectl create secret generic ${RUN_CONFIG_SECRET_NAME_STAGING} --from-file=RUN_CONFIG=${RUN_CONFIG_STAGING} -o yaml -n ${CHEMBL_NS_STAGING} --dry-run | kubectl replace -f - - cat ${RUN_CONFIG_STAGING} - sed -i "s~~${CHEMBL_NS_STAGING}~" k8s-deployment.yaml - sed -i "s~~${CBL_ADM_UID_HX}~" k8s-deployment.yaml - sed -i "s~~${CBL_PUB_GID_HX}~" k8s-deployment.yaml - sed -i "s~~${IMAGE_TAG}~" k8s-deployment.yaml - sed -i "s~~${NFS_MOUNT_PATH_STAGING}~" k8s-deployment.yaml - sed -i "s~~${NFS_FQDN_HX}~" k8s-deployment.yaml - sed -i "s~~${NFS_PATH_HX}~" k8s-deployment.yaml - sed -i "s~~${ID_RSA_SECRET_NAME_STAGING}~" k8s-deployment.yaml - sed -i "s~~${RUN_CONFIG_SECRET_NAME_STAGING}~" k8s-deployment.yaml - cat k8s-deployment.yaml - kubectl apply -n ${CHEMBL_NS_STAGING} -f k8s-deployment.yaml - kubectl get pods -n ${CHEMBL_NS_STAGING}