diff --git a/src/context/.gitlab-ci.yml b/src/context/.gitlab-ci.yml index a5f4204bb2ca60509cf7aa5c88dccc2022afaf2e..62f9824712b5514aabe5a60b0cf116dd26aa026a 100644 --- a/src/context/.gitlab-ci.yml +++ b/src/context/.gitlab-ci.yml @@ -1,51 +1,57 @@ -# build, tag and push the Docker image to the gitlab registry +variables: + IMAGE_NAME: 'context' # name of the microservice + IMAGE_NAME_TEST: 'context-test' # name of the microservice + IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) + +# build the Docker image build context: - variables: - IMAGE_NAME: 'context' # name of the microservice - IMAGE_NAME_TEST: 'context-test' # name of the microservice - IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) stage: build - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - docker build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile ./src/ + rules: + - changes: + - src/$IMAGE_NAME/** + - .gitlab-ci.yml + +# tags the Docker image +tag context: + stage: build + script: - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" + rules: + - changes: + - src/$IMAGE_NAME/** + - .gitlab-ci.yml + +# push the Docker image to the gitlab Docker registry +push context: + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" rules: - changes: - - src/$IMAGE_NAME/*.{py,in,yml} - - src/$IMAGE_NAME/Dockerfile - - src/$IMAGE_NAME/tests/*.py - - src/$IMAGE_NAME/tests/Dockerfile + - src/$IMAGE_NAME/** - .gitlab-ci.yml + # test if the Docker image can be pulled from the gitlab registry test context pull: - variables: - IMAGE_NAME: 'context' # name of the microservice - IMAGE_NAME_TEST: 'context-test' # name of the microservice - IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) stage: test needs: - - build context + - push context before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" rules: - changes: - - src/$IMAGE_NAME/*.{py,in,yml} - - src/$IMAGE_NAME/Dockerfile - - src/$IMAGE_NAME/tests/*.py - - src/$IMAGE_NAME/tests/Dockerfile + - src/$IMAGE_NAME/** - .gitlab-ci.yml # test if the Docker image can be executed test context run: - variables: - IMAGE_NAME: 'context' # name of the microservice - IMAGE_NAME_TEST: 'context-test' # name of the microservice - IMAGE_TAG: 'latest' # tag of the container image (production, development, etc) stage: test needs: - build context @@ -53,16 +59,18 @@ test context run: - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi script: - docker run -d -p 1010:1010 --name context --network=teraflowbridge --rm "$IMAGE_NAME:$IMAGE_TAG" - - docker ps + - docker ps > deploy_test_report.txt after_script: - docker stop context rules: - changes: - - src/$IMAGE_NAME/*.{py,in,yml} - - src/$IMAGE_NAME/Dockerfile - - src/$IMAGE_NAME/tests/*.py - - src/$IMAGE_NAME/tests/Dockerfile + - src/$IMAGE_NAME/** - .gitlab-ci.yml + artifacts: + when: always + paths: + - deploy_test_report.txt + expire_in: 1 day # apply unit test to the context component test context pytest: @@ -73,10 +81,7 @@ test context pytest: - docker build -t "$IMAGE_NAME_TEST:$IMAGE_TAG" -f ./src/$IMAGE_NAME/tests/Dockerfile ./src/ > pytest_report.txt rules: - changes: - - src/$IMAGE_NAME/*.{py,in,yml} - - src/$IMAGE_NAME/Dockerfile - - src/$IMAGE_NAME/tests/*.py - - src/$IMAGE_NAME/tests/Dockerfile + - src/$IMAGE_NAME/** - .gitlab-ci.yml artifacts: when: always @@ -85,14 +90,14 @@ test context pytest: expire_in: 1 day # Deployment of the monitoring service in Kubernetes Cluster -#deploy context: -# stage: deploy -# needs: -# - build context -# - test context run -# script: -# - kubectl version -# - kubectl get all -# - kubectl apply -f "manifests/contextservice.yaml" -# - kubectl get all -# when: manual +deploy context: + stage: deploy + needs: + - build context + - test context run + script: + - kubectl version + - kubectl get all + - kubectl apply -f "manifests/contextservice.yaml" + - kubectl get all + when: manual