stages: - build - upload - deploy variables: PIPELINE_WORK_DIR_PROD: "./v1" PIPELINE_WORK_DIR_DEV: "./v1" 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 .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" 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" 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