stages: - build - upload - deploy variables: PIPELINE_WORK_DIR_PROD: "./v1" PIPELINE_WORK_DIR_DEV: "./v1" APICONFIG_BASE64_PROD: ${CICD_APICONFIG_PROD} APICONFIG_BASE64_DEV: ${CICD_APICONFIG_DEV} CONTAINER_NAME_PROD: "etaapi_prod" CONTAINER_NAME_DEV: "etaapi_dev" .generic_build_job: &generic_build_job script: - cd ${PIPELINE_WORK_DIR} - . ./scripts/ci_functions.sh - build_docker ${CONTAINER_NAME} ${CICD_APICONFIG} .generic_upload_job: &generic_upload_job script: - cd ${PIPELINE_WORK_DIR} - . ./scripts/ci_functions.sh - upload_image build-prod-job: stage: build needs: [] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_PROD}" CONTAINER_NAME: "${CONTAINER_NAME_PROD}" CICD_APICONFIG: "${APICONFIG_BASE64_PROD}" only: - master <<: *generic_build_job upload-prod-job: stage: upload needs: ["build-prod-job"] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_PROD}" CONTAINER_NAME: "${CONTAINER_NAME_PROD}" only: - master <<: *generic_upload_job deploy-prod-job: stage: deploy needs: ["upload-prod-job"] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_PROD}" CONTAINER_NAME: "${CONTAINER_NAME_PROD}" only: - master script: - cd ${PIPELINE_WORK_DIR} - . ./scripts/ci_functions.sh - deploy_prod build-dev-job: stage: build needs: [] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_DEV}" CONTAINER_NAME: "${CONTAINER_NAME_DEV}" CICD_APICONFIG: "${APICONFIG_BASE64_DEV}" only: - develop <<: *generic_build_job upload-dev-job: stage: upload needs: ["build-dev-job"] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_DEV}" CONTAINER_NAME: "${CONTAINER_NAME_DEV}" only: - develop <<: *generic_upload_job deploy-dev-job: stage: deploy needs: ["upload-dev-job"] variables: PIPELINE_WORK_DIR: "${PIPELINE_WORK_DIR_DEV}" CONTAINER_NAME: "${CONTAINER_NAME_DEV}" only: - develop script: - cd ${PIPELINE_WORK_DIR} - . ./scripts/ci_functions.sh - deploy_dev