Skip to content

Instantly share code, notes, and snippets.

@behroozam
Last active February 20, 2020 20:15
Show Gist options
  • Save behroozam/7d1631975f28233a2d47fb5f25d2c383 to your computer and use it in GitHub Desktop.
Save behroozam/7d1631975f28233a2d47fb5f25d2c383 to your computer and use it in GitHub Desktop.
delete everything in openshift except opened merge requests on gitlab ( due resource limitation )
stages:
- test
- build
- deploy
variables:
OKD_REGISTRY: 'yourprivateregistry'
OKD_PROJECT: ${CI_PROJECT_NAME}
cleanup-okd:
stage: test
image: openshift/origin-cli
script:
- .okd/cleanup.sh
allow_failure: true
##################### test deployment on merge requests #####################
cleanup-merge-okd:
stage: test
image: openshift/origin-cli
script:
- ./okd/cleanup.sh
allow_failure: true
only:
- merge_requests
merge-validation:
stage: test
image: node:12.14
script: npm run mergeCheck
only:
- merge_requests
build-testing:
stage: build
image: docker:git
variables:
OKD_REGISTRY_IMAGE: "$OKD_REGISTRY/$OKD_PROJECT/$CI_PROJECT_NAME"
script: |
docker login -u gitlab-ci -p ${OKD_PWA_TESTING_TOKEN} ${OKD_REGISTRY}
docker build \
--build-arg NPM_REPO_PASSWORD=${NPM_REPO_PASSWORD} \
--build-arg NPM_REPO_USER=${NPM_REPO_USER} \
-t ${OKD_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} \
-f Dockerfile .
docker push ${OKD_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}
only:
- merge_requests
deploy-testing:
image: openshift/origin-cli
stage: deploy
before_script:
- oc version
- oc login https://okd.private.teh-1.snappcloud.io --token=${OKD_PWA_TESTING_TOKEN}
- oc project ${OKD_PROJECT}
- oc create configmap ${CI_COMMIT_REF_SLUG}-${CI_PROJECT_NAME}-env --from-env-file=.env.default.config --dry-run -o yaml | oc apply -f -
- oc process -f .okd/okd.yml --param ROUTE_HOST=${CI_ENVIRONMENT_URL} --param PROJECT_NAME=${CI_PROJECT_NAME} --param APP_NAME=${CI_COMMIT_REF_SLUG}-${CI_PROJECT_NAME} --param IMAGE_TAG=${CI_COMMIT_REF_SLUG} | oc apply -f -
- 'echo -e " ############# \033[0;31mThe Project Deployed On Following Url\033[0m ############# "'
- 'echo -e " ############# \033[0;32m$CI_ENVIRONMENT_URL\033[0m ############# "'
script:
- oc rollout latest dc/${CI_COMMIT_REF_SLUG}-${CI_PROJECT_NAME}
environment:
name: Testing
url: ${CI_COMMIT_REF_SLUG}-${CI_PROJECT_NAME}-${CI_PROJECT_NAMESPACE}.apps.public.teh-1.snappcloud.io
only:
- merge_requests
#!/bin/bash
exclude=/tmp/exclude.txt
echo "get branches"
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" --silent https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/merge_requests?state=opened | python -mjson.tool | grep -w source_branch | tr '[:upper:]' '[:lower:]' | awk -F'"' '{print $4}' > ${exclude}
echo "login to okd"
oc login https://okd-url --token=${OKD_PWA_TESTING_TOKEN}
oc project ${CI_PROJECT_NAME}
echo "delete old tags"
oc get ImageStream ${CI_PROJECT_NAME} -o yaml | grep tag | grep -v develop | grep -v -f ${exclude} | awk -v project=${CI_PROJECT_NAME} 'NR>1{print project":"$2}' | xargs -L1 oc tag -d
echo "delete old deployments"
oc get dc | grep -v develop | grep -v -f ${exclude} |awk 'NR>1{print $1}' | xargs -L1 oc delete dc
echo "delete old configmaps"
oc get cm | grep -v develop | grep -v -f ${exclude} | awk 'NR>1{print$1}' | xargs -L1 oc delete cm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment