Skip to content
Snippets Groups Projects
Commit f800bcfd authored by Andrew Kapuscinski's avatar Andrew Kapuscinski
Browse files

Moved build, push and cleanup to template files to organize gitlab-ci.yml

Added Push stage to push docker images to our registry when PR is merged
parent 09429b20
No related branches found
No related tags found
1 merge request!11Moved build, push and cleanup to template files to organize gitlab-ci.yml
Pipeline #308 passed
......@@ -2,7 +2,7 @@ stages:
- build-base
- push-base
- build-dev
# - push-dev
- push-dev
- clean-images
# - deploy-dev
# - deploy-test
......@@ -53,6 +53,20 @@ before_script:
changes:
- Dockerfile.base
.push:
script:
- echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY_URL
- docker push ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA}
- docker push ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_DEFAULT_BRANCH}
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- .gitlab-ci.yml
- services/${SERVICE_NAME}/**/*
- apps/cli/**/*.{py,sh}
- shared/**/*.{py,sh}
when: always
.cleanup:
script:
- |
......@@ -99,66 +113,24 @@ build dev capability:
# 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 workflow:
stage: push-dev
variables:
SERVICE_NAME: "workflow"
extends: .push
needs:
- build dev workflow
push dev capability:
stage: push-dev
variables:
SERVICE_NAME: "capability"
extends: .push
needs:
- build dev capability
# 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 build workflow:
......@@ -166,7 +138,7 @@ clean build workflow:
variables:
SERVICE_NAME: "workflow"
extends: .cleanup
dependencies:
needs:
- build dev workflow
clean build capability:
......@@ -174,7 +146,7 @@ clean build capability:
variables:
SERVICE_NAME: "capability"
extends: .cleanup
dependencies:
needs:
- build dev capability
### Deploy Stages ###
......
# CI Build Template
.build:
script:
- '[ -z "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ] && BRANCH=$CI_COMMIT_BRANCH || BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- echo "Building branch -- ${BRANCH}"
- |
if [ $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ] ; then \
docker build -t ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_BRANCH} -f services/${SERVICE_NAME}/Dockerfile.dev . ; \
else
docker build -t ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} -f services/${SERVICE_NAME}/Dockerfile.dev . ; \
fi
- docker tag ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${BRANCH} ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA}
- echo "BRANCH_TAG=$BRANCH" >> build.env
artifacts:
reports:
dotenv: build.env
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
- if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- .gitlab-ci.yml
- services/${SERVICE_NAME}/**/*
- apps/cli/**/*.{py,sh}
- shared/**/*.{py,sh}
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
changes:
- Dockerfile.base
\ No newline at end of file
# Cleanup Images Template
.cleanup:
script:
- |
printf "%s\n" "- Removing Images -" \
"${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${BRANCH_TAG}" \
"${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA}"
- docker image rm "${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${BRANCH_TAG}" "${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA}"
\ No newline at end of file
# Push Images Template
.push:
script:
- echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY_URL
- docker push ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_COMMIT_SHORT_SHA}
- docker push ${REGISTRY_URL}/${PROJECT_NAME}/${SERVICE_NAME}:${CI_DEFAULT_BRANCH}
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- .gitlab-ci.yml
- services/${SERVICE_NAME}/**/*
- apps/cli/**/*.{py,sh}
- shared/**/*.{py,sh}
when: always
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment