Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- image: docker:git
- services:
- - docker:dind
- stages:
- - build
- - test
- - release
- - deploy
- - delivery
- - cleanup
- variables:
- GIT_STRATEGY: none
- PROJECT_NAME: mdmEnpoint
- REGISTRY_APP_ROOT: mdm/backend
- REGISTRY_APP_NAME: enpoint
- CONTAINER_IMAGE: ${REGISTRY_ADDRESS}/${REGISTRY_APP_ROOT}/${REGISTRY_APP_NAME}/${CI_COMMIT_REF_NAME}
- before_script:
- - export RELEASE=${CI_BUILD_REF_NAME}
- - docker version
- - docker login -u $REGISTRY_USER -p $REGISTRY_PASSWD $REGISTRY_ADDRESS
- dockerize:
- stage: build
- variables:
- GIT_STRATEGY: fetch
- script:
- - docker build -t $REGISTRY_APP_NAME .
- - docker images
- - echo $CONTAINER_IMAG
- - echo $CONTAINER_IMAGE:$CI_COMMIT_SHA
- - docker save -o ${REGISTRY_APP_NAME}.tar $REGISTRY_APP_NAME
- cache:
- policy: push
- key: "$CI_BUILD_REF"
- untracked: true
- test:
- stage: test
- script:
- - echo "test stage..."
- dependencies:
- - dockerize
- cache:
- policy: pull
- key: "$CI_BUILD_REF"
- untracked: true
- dockerize:registry:
- stage: release
- script:
- - docker load -i ${REGISTRY_APP_NAME}.tar
- - docker tag $REGISTRY_APP_NAME $CONTAINER_IMAGE:$CI_COMMIT_SHA
- - docker push $CONTAINER_IMAGE:$CI_COMMIT_SHA
- dependencies:
- - dockerize
- - test
- only:
- - master
- - nightly
- - develop
- cache:
- policy: pull
- key: "$CI_BUILD_REF"
- untracked: true
- review:
- stage: deploy
- tags:
- - on_host_linux
- variables:
- REGISTRY_IMAGE: $CONTAINER_IMAGE:$CI_COMMIT_SHA
- GIT_STRATEGY: fetch
- DOCKER_CLIENT_TIMEOUT: 220
- before_script:
- - |
- if [[ $(docker ps -a | grep $PROJECT_NAME) ]]; then docker rm -f $PROJECT_NAME; fi
- script:
- - docker pull $CONTAINER_IMAGE:$CI_COMMIT_SHA
- - docker run --name $PROJECT_NAME -e RABBIT_USERNAME=$RABBIT_USERNAME -e RABBIT_PASSWORD=$RABBIT_PASSWORD -e RABBIT_HOSTNAME=$RABBIT_HOSTNAME -e RABBIT_PORT=$RABBIT_PORT -e RABBIT_SOURCE=$RABBIT_SOURCE -p 8383:8080 -d $CONTAINER_IMAGE:$CI_COMMIT_SHA
- dependencies:
- - dockerize
- - test
- - dockerize:registry
- when: manual
- production:tsii:
- stage: delivery
- script:
- - |
- docker run --rm -i --privileged -v $(pwd):/tmp/ \
- -e VPNC_GATEWAY=$VPNC_GATEWAY -e VPNC_ID=$VPNC_ID -e VPNC_SECRET=$VPNC_SECRET -e VPNC_USERNAME=$VPNC_USERNAME -e VPNC_PASSWORD=$VPNC_PASSWORD \
- --dns 8.8.8.8 ${REGISTRY_ADDRESS}/terminator/vpnc/master /sbin/my_init --quiet -- \
- /bin/sh -c "
- sleep 3 &&
- (which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )) &&
- mkdir -p \~/.ssh &&
- echo \"$TSII_PRIVATE_KEY\" | tr -d '\r' > ~/.ssh/id_rsa &&
- chmod 600 ~/.ssh/id_rsa &&
- ssh-agent sh -c \" ssh-add ~/.ssh/id_rsa &&
- scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /tmp/${REGISTRY_APP_NAME}.tar ${TSII_SERVER_USER}@${TSII_SERVER_IP}:/tmp/ &&
- ssh -o StrictHostKeyChecking=no ${TSII_SERVER_USER}@${TSII_SERVER_IP} <<end_cmd
- ls -l /tmp
- docker ps -a
- docker ps -aq --filter name=$PROJECT_NAME | grep -q . && docker stop $PROJECT_NAME && docker rm -fv $PROJECT_NAME || echo This project name is available
- docker rmi $REGISTRY_APP_NAME
- docker load -i /tmp/${REGISTRY_APP_NAME}.tar
- docker run --name $PROJECT_NAME -e RABBIT_USERNAME=$TSII_RABBIT_USERNAME -e RABBIT_PASSWORD=$TSII_RABBIT_PASSWORD -e RABBIT_HOSTNAME=$TSII_RABBIT_HOSTNAME -e RABBIT_PORT=$TSII_RABBIT_PORT -e RABBIT_SOURCE=$TSII_RABBIT_SOURCE -p 8080:8080 -d $REGISTRY_APP_NAME
- exit
- end_cmd \""
- only:
- - master
- - nightly
- cache:
- policy: pull
- key: "$CI_BUILD_REF"
- untracked: true
- dependencies:
- - dockerize
- - test
- - dockerize:registry
- when: manual
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement