diff --git a/src/gitlab-ci.yml_generator.py b/src/gitlab-ci.yml_generator.py index f254fcba6385f874fb1f78f6a855ba05bc6ef1d7..2fffbfaf19b7d4ede5bb2ea51df415c3e7fbbc47 100755 --- a/src/gitlab-ci.yml_generator.py +++ b/src/gitlab-ci.yml_generator.py @@ -116,7 +116,7 @@ test {microservice} pytest: reports: junit: src/$IMAGE_NAME/tests/report.xml -# Deployment of the {microservice} service in Kubernetes Cluster +# Deployment of the {microservice} service in development Kubernetes Cluster deploy {microservice} development: variables: IMAGE_NAME: '{microservice}' # name of the microservice @@ -126,19 +126,57 @@ deploy {microservice} development: - build {microservice} - test {microservice} run script: + - 'sed -i "s/image: .*/image: $CI_REGISTRY\/$CI_PROJECT_NAMESPACE\/$CI_PROJECT_NAME\/$IMAGE_NAME:$IMAGE_TAG/" manifests/$IMAGE_NAME.yaml' - kubectl version - kubectl get all - kubectl apply -f "manifests/$IMAGE_NAME.yaml" - kubectl get all + # environment: + # name: development + # url: https://example.com + # kubernetes: + # namespace: development rules: - - changes: - - src/$IMAGE_NAME/*.{py,in,yml} - - src/$IMAGE_NAME/Dockerfile - - src/$IMAGE_NAME/tests/*.py - - src/$IMAGE_NAME/tests/Dockerfile - - manifests/$IMAGE_NAME.yaml - - .gitlab-ci.yml + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' + when: manual + changes: + - src/$IMAGE_NAME/*.{{py,in,yml}} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - src/$IMAGE_NAME/tests/Dockerfile + - manifests/$IMAGE_NAME.yaml + - .gitlab-ci.yml + +# Deployment of the {microservice} service in production Kubernetes Cluster +deploy {microservice} development: + variables: + IMAGE_NAME: '{microservice}' # name of the microservice + IMAGE_TAG: '{tag}' # tag of the container image (production, development, etc) + stage: deploy + needs: + - build {microservice} + - test {microservice} run + script: + - 'sed -i "s/image: .*/image: $CI_REGISTRY\/$CI_PROJECT_NAMESPACE\/$CI_PROJECT_NAME\/$IMAGE_NAME:$IMAGE_TAG/" manifests/$IMAGE_NAME.yaml' + - kubectl version + - kubectl get all + - kubectl apply -f "manifests/$IMAGE_NAME.yaml" + - kubectl get all + # environment: + # name: production + # url: https://example.com + # kubernetes: + # namespace: production + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' when: manual + changes: + - src/$IMAGE_NAME/*.{{py,in,yml}} + - src/$IMAGE_NAME/Dockerfile + - src/$IMAGE_NAME/tests/*.py + - src/$IMAGE_NAME/tests/Dockerfile + - manifests/$IMAGE_NAME.yaml + - .gitlab-ci.yml """ f.write(yml_template.format(microservice = args.microservice, tag=args.tag)) print("File created in the following path: {file}".format(file=file))