Newer
Older

Andrew Kapuscinski
committed
- build-base
- push-base
- build-dev

Andrew Kapuscinski
committed
- push-dev

Andrew Kapuscinski
committed
# - deploy-dev
# - deploy-test
variables:
PROJECT_NAME: "workspaces"
DEFAULT_DEPLOY_ENV: "dev"
image: docker:19.03.12

Andrew Kapuscinski
committed
workflow:
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
# Import Templates
include:
- '/ci/build.template.yml'
- '/ci/push.template.yml'
- '/ci/cleanup.template.yml'
# - '/ci/unit-test.template.yml'

Andrew Kapuscinski
committed
# Build Base Image

Andrew Kapuscinski
committed
build base image:
stage: build-base
script:
- docker build -t ${REGISTRY_URL}/ops/base:${PROJECT_NAME} -f Dockerfile.base .
- docker tag ${REGISTRY_URL}/ops/base:${PROJECT_NAME} ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}

Andrew Kapuscinski
committed
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
changes:

Andrew Kapuscinski
committed

Andrew Kapuscinski
committed
# Push Base Image Stage
push base image:
stage: push-base
script:
- echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY_URL
- docker push ${REGISTRY_URL}/ops/base:${PROJECT_NAME}
- docker push ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}

Andrew Kapuscinski
committed
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'

Andrew Kapuscinski
committed
changes:

Andrew Kapuscinski
committed
build dev workflow:
stage: build-dev
variables:
SERVICE_NAME: "workflow"
extends: .build
build dev capability:
stage: build-dev
variables:
SERVICE_NAME: "capability"
extends: .build
build dev notification:
stage: build-dev
variables:
SERVICE_NAME: "notification"
extends: .build
## Test Stages ##
.unit-test:
script:
- docker run --name "${SERVICE_NAME}-${CI_COMMIT_SHORT_SHA}" ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA} ./bin/run-tests.sh -b
- docker cp "${SERVICE_NAME}-${CI_COMMIT_SHORT_SHA}":/code/.coverage ./.coverage.${SERVICE_NAME}.${CI_COMMIT_SHORT_SHA}
- docker container stop "${SERVICE_NAME}-${CI_COMMIT_SHORT_SHA}" && docker container rm "${SERVICE_NAME}-${CI_COMMIT_SHORT_SHA}"
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
# Unit Tests
stage: unit-test-dev
variables:
SERVICE_NAME: "workflow"
extends: .unit-test
artifacts:
paths:
- .coverage.${SERVICE_NAME}.${CI_COMMIT_SHORT_SHA}
needs:
- build dev workflow
stage: unit-test-dev
variables:
SERVICE_NAME: "capability"
extends: .unit-test
artifacts:
paths:
- .coverage.${SERVICE_NAME}.${CI_COMMIT_SHORT_SHA}
needs:
- build dev capability

Andrew Kapuscinski
committed
unit test dev notification:
stage: unit-test-dev
variables:
SERVICE_NAME: "notification"
extends: .unit-test
artifacts:
paths:
- .coverage.${SERVICE_NAME}.${CI_COMMIT_SHORT_SHA}
needs:
- build dev notification

Andrew Kapuscinski
committed
unit test coverage:
- pip install pytest pytest-cov

Andrew Kapuscinski
committed
- coverage combine --append
- coverage report
- coverage xml
artifacts:
reports:
cobertura: coverage.xml
paths:
- coverage.xml
dependencies:
- unit test dev workflow
- unit test dev capability
- unit test dev notification

Andrew Kapuscinski
committed
push dev workflow:
stage: push-dev
variables:
SERVICE_NAME: "workflow"
extends: .push
needs:
- unit test dev workflow

Andrew Kapuscinski
committed
push dev capability:
stage: push-dev
variables:
SERVICE_NAME: "capability"
extends: .push
needs:
- unit test dev capability

Andrew Kapuscinski
committed
push dev notification:
stage: push-dev
variables:
SERVICE_NAME: "notification"
extends: .push
needs:
- unit test dev notification
stage: .post
variables:
SERVICE_NAME: "workflow"
extends: .cleanup

Andrew Kapuscinski
committed
allow_failure: true
stage: .post
variables:
SERVICE_NAME: "capability"
extends: .cleanup

Andrew Kapuscinski
committed
allow_failure: true
clean build notification:
stage: .post
variables:
SERVICE_NAME: "notification"
extends: .cleanup

Andrew Kapuscinski
committed
allow_failure: true
# Disabled until GL Pages are set up
.pages:
stage: deploy-coverage-page
image: python:3.8-slim
dependencies:
- unit test coverage
script:
- mkdir public
- mv htmlcov/ public/
artifacts:
paths:
- public
expire_in: 2 weeks
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always

Andrew Kapuscinski
committed
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# 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

Andrew Kapuscinski
committed
# 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