stages:
    - build-dev
    - push-dev
    - deploy-dev
    # - .post

workflow:
    rules:
        # - if: $CI_COMMIT_MESSAGE =~ /\A(?i)-wip/
        #   when: never
        # - if: '$CI_PIPELINE_SOURCE == "push"'
        - if: $CI_MERGE_REQUEST_IID
        - if: $CI_COMMIT_TAG
        - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_DEFAULT_BRANCH


image: docker:19.03.12

# variables:
#     # Docker Variables
#     DOCKER_TLS_CERTDIR: "/certs"

# services:
#     - name: docker:19.03.12-dind

before_script:
    - echo "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
    - echo "$CI_COMMIT_REF_NAME"

# Build
build dev workflow:
    stage: build-dev
    script:
        - 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
    rules:
        - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
          when: always
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
          changes:
            - .gitlab-ci.yml
          when: always
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
          changes:
            - services/workflow/**/*
            - apps/cli/**/*.{py,sh}
            - shared/**/*.{py,sh}

build dev capability:
    stage: build-dev
    script:
        - 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
          when: always
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
          changes:
            - services/capability/**/*
            - apps/cli/**/*.{py,sh}
            - shared/**/*.{py,sh}

# Push
push dev workflow:
    stage: push-dev
    script:
        - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL
        - docker tag marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/workflow:dev
        - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_COMMIT_SHORT_SHA
        - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
        - docker push marconi.aoc.nrao.edu/workspaces/workflow:dev
    rules:
        - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"'
          when: manual
    # needs: ["build dev workflow"]

push dev capability:
    stage: push-dev
    script:
        - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL
        - docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:dev
        - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA
        - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
        - docker push marconi.aoc.nrao.edu/workspaces/capability:dev
    rules:
        - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"'
          when: manual
    # needs: ["build dev capability"]

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

# Tests


# # Deploy
# deploy dev:
#     stage: deploy-dev
#     script:
#         - docker-compose --version
#     when: manual

# Deploy
# deploy dev:
#     stage: deploy-dev
#     script:
#         - env SWARM_NODE_ENV="dev" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev
#     when: manual