stages: - build - upload - deploy variables: PIPELINE_WORK_DIR_V1: "./v1" CONTAINER_NAME_V1: "etaapi" PIPELINE_WORK_DIR_V2: "./v2" CONTAINER_NAME_V2: "etaapi" PUBLIC_PORT_V1: 7001 PRIVATE_PORT_V1: 3000 PUBLIC_PORT_V2: 7002 PRIVATE_PORT_V2: 3000 .generic_build_job: &generic_build_job script: - cd $PIPELINE_WORK_DIR - . ./scripts/ci_functions.sh - build_docker $CONTAINER_NAME only: - master .generic_upload_job: &generic_upload_job script: - cd $PIPELINE_WORK_DIR - . ./scripts/ci_functions.sh - upload_image only: - master .generic_deploy_job: &generic_deploy_job script: - cd $PIPELINE_WORK_DIR - . ./scripts/ci_functions.sh - deploy only: - master build-v1-job: stage: build needs: [] variables: PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V1" CONTAINER_NAME: "$CONTAINER_NAME_V1" PUBLIC_PORT: "$PUBLIC_PORT_V1" PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_build_job # build-v2-job: # stage: build # needs: [] # variables: # PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" # CONTAINER_NAME: "$CONTAINER_NAME_V2" # PUBLIC_PORT: "$PUBLIC_PORT_V2" # PRIVATE_PORT: "$PRIVATE_PORT_V2" # <<: *generic_build_job upload-v1-job: stage: upload needs: ["build-v1-job"] variables: PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V1" CONTAINER_NAME: "$CONTAINER_NAME_V1" PUBLIC_PORT: "$PUBLIC_PORT_V1" PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_upload_job # upload-v2-job: # stage: upload # needs: ["build-v2-job"] # variables: # PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" # CONTAINER_NAME: "$CONTAINER_NAME_V2" # PUBLIC_PORT: "$PUBLIC_PORT_V2" # PRIVATE_PORT: "$PRIVATE_PORT_V2" # <<: *generic_upload_job deploy-v1-job: stage: deploy needs: ["upload-v1-job"] variables: PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V1" CONTAINER_NAME: "$CONTAINER_NAME_V1" PUBLIC_PORT: "$PUBLIC_PORT_V1" PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_deploy_job # deploy-v2-job: # stage: deploy # needs: ["upload-v2-job"] # variables: # PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" # CONTAINER_NAME: "$CONTAINER_NAME_V2" # PUBLIC_PORT: "$PUBLIC_PORT_V2" # PRIVATE_PORT: "$PRIVATE_PORT_V2" # <<: *generic_deploy_job