Skip to content
Snippets Groups Projects
.gitlab-ci.yml 9.72 KiB
Newer Older
workflow:
  rules:
    - if: $CI_MERGE_REQUEST_IID
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

before_script:
    - echo "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
    - echo "$CI_COMMIT_REF_NAME"
build base image:
    stage: build-base
    script:
        - docker build -t marconi.aoc.nrao.edu/ops/base:workspaces -f Condaless.dockerfile.v2 . ; \
    rules:
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
          changes:
            - Condaless.dockerfile.v2

# Push Base Image Stage
push base image:
    stage: push-base
    script:
        - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL 
        - docker push marconi.aoc.nrao.edu/ops/base:workspaces
    rules:
        - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
          changes:
            - Condaless.dockerfile.v2
          when: always

        - echo "Building PR branch - ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"
        - docker build -t marconi.aoc.nrao.edu/workspaces/workflow:"$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" -f services/workflow/Dockerfile.dev .
        - docker tag marconi.aoc.nrao.edu/workspaces/workflow:"$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" marconi.aoc.nrao.edu/workspaces/workflow:"$CI_COMMIT_SHORT_SHA"
        - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
          when: always
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
          changes:
            - .gitlab-ci.yml
            - services/workflow/**/*
            - apps/cli/**/*.{py,sh}
            - shared/**/*.{py,sh}
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
          changes:
            - Condaless.dockerfile.v2
build dev capability:
    stage: build-dev
    script:
        - echo "Building PR branch - ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"
        - docker build -t marconi.aoc.nrao.edu/workspaces/capability:"$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" -f services/capability/Dockerfile.dev .
        - docker tag marconi.aoc.nrao.edu/workspaces/capability:"$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" marconi.aoc.nrao.edu/workspaces/capability:"$CI_COMMIT_SHORT_SHA"
    rules:
        - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
          when: always
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
          changes:
            - .gitlab-ci.yml
            - services/capability/**/*
            - apps/cli/**/*.{py,sh}
            - shared/**/*.{py,sh}
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
          changes:
            - Condaless.dockerfile.v2
# Test Stages

# Push Stages
# push dev workflow:
#     stage: push-dev
#     script:
#         - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL
#         - |
#             if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "" ]; then \
#                 echo "Pushing PR branch image to registry: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"; \
#                 docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ; \
#                 if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "main" ]; then \
#                     docker tag marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/workflow:dev-branch ; \
#                     docker push marconi.aoc.nrao.edu/workspaces/workflow:dev-branch ; \
#                 fi
#             elif [ "$CI_COMMIT_TAG" != "" ]; then \
#                 echo "Pushing Tagged image to registry: ${CI_COMMIT_TAG}"; \
#                 docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_COMMIT_TAG ; \
#             fi
#         - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_COMMIT_SHORT_SHA
#     rules:
#         - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
#           when: always
#         - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
#           changes:
#             - .gitlab-ci.yml
#             - services/workflow/**/*
#             - apps/cli/**/*.{py,sh}
#             - shared/**/*.{py,sh}
#           when: manual
#         - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
#           when: manual
# push dev capability:
#     stage: push-dev
#     script:
#         - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL
#         - |
#             if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "" ]; then \
#                 echo "Pushing PR branch image to registry: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"; \
#                 docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ; \
#                 if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "main" ]; then \
#                     docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:dev-branch ; \
#                     docker push marconi.aoc.nrao.edu/workspaces/capability:dev-branch ; \
#                 fi
#             elif [ "$CI_COMMIT_TAG" != "" ]; then \
#                 echo "Pushing Tagged image to registry: ${CI_COMMIT_TAG}"; \
#                 docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_TAG ; \
#             fi
#         - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA
#     rules:
#         - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
#           when: always
#         - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
#           changes:
#             - .gitlab-ci.yml
#             - services/capability/**/*
#             - apps/cli/**/*.{py,sh}
#             - shared/**/*.{py,sh}
#           when: manual
#         - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
#           when: manual

# Cleanup
# clean runner:
#     stage: .post
#     script:
#         - docker images -q --filter=reference="marconi.aoc.nrao.edu/workspaces/*" | xargs docker rmi -f
### Deploy Stages ###

# Development 
# deploy dev:
#     stage: deploy-dev
#     script:
#         - |
#             if [ "$CI_COMMIT_BRANCH" != "" ]; then \
#                 if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then \
#                     echo "Deploying merged branch: ${CI_COMMIT_BRANCH} to dev environment"; \
#                     SWARM_NODE_ENV="dev" TAG_TO_DEPLOY="development" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev ; \
#                 else
#                     if [ "$CAPABILITY_BRANCH" != "" ]; then \
#                         echo "Updating Capability Service: ${CI_COMMIT_BRANCH} in dev environment"; \
#                         docker service update --image marconi.aoc.nrao.edu/workspaces/capability:"$CAPABILITY_BRANCH" workspaces-dev_capability
#                     fi
#                     if [ "$WORKFLOW_BRANCH" != "" ]; then \
#                         echo "Updating Workflow Service: ${CI_COMMIT_BRANCH} in dev environment"; \
#                         docker service update --image marconi.aoc.nrao.edu/workspaces/workflow:"$WORKFLOW_BRANCH" workspaces-dev_workflow
#                     fi
#                     if [ "$WORKFLOW_BRANCH" == "" && "$CAPABILITY_BRANCH" == "" ]; then \
#                         echo "Deploying branch: ${CI_COMMIT_BRANCH} to dev environment"; \
#                         SWARM_NODE_ENV="dev" TAG_TO_DEPLOY="${CI_COMMIT_BRANCH}" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev ; \
#                     fi
#                 fi
#             fi
#             if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "" ]; then \
#                 if [ "$CAPABILITY_BRANCH" != "" ]; then \
#                         echo "Updating Capability Service with PR Branch: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} in dev environment"; \
#                         docker service update --image marconi.aoc.nrao.edu/workspaces/capability:"$CAPABILITY_BRANCH" workspaces-dev_capability
#                     fi
#                     if [ "$WORKFLOW_BRANCH" != "" ]; then \
#                         echo "Updating Workflow Service with PR Branch: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} in dev environment"; \
#                         docker service update --image marconi.aoc.nrao.edu/workspaces/workflow:"$WORKFLOW_BRANCH" workspaces-dev_workflow
#                     fi
#                     if [ "$WORKFLOW_BRANCH" == "" && "$CAPABILITY_BRANCH" == "" ]; then \
#                         echo "Deploying branch: ${CI_COMMIT_BRANCH} to dev environment"; \
#                         SWARM_NODE_ENV="dev" TAG_TO_DEPLOY="${CI_COMMIT_BRANCH}" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev ; \
#                     fi
#                 echo "Deploying PR branch: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} to dev environment"; \
#                 SWARM_NODE_ENV="dev" TAG_TO_DEPLOY="dev-branch" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev ; \
#             fi
#     environment: development
#     rules:
#         - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
#           when: always
#         - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
#           when: manual
# deploy test:
#     stage: deploy-test
#     script:
#         |
#             echo "branch: ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"
#             echo "tag: ${CI_COMMIT_TAG}"
#             SWARM_NODE_ENV="test" TAG_TO_DEPLOY="${CI_COMMIT_TAG}" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev
#     rules:
#         - if: $CI_COMMIT_TAG
#           when: manual