Advertisement
Guest User

Untitled

a guest
Apr 6th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. image: docker:git
  2. services:
  3. - docker:dind
  4.  
  5. stages:
  6. - build
  7. - test
  8. - release
  9. - deploy
  10. - delivery
  11. - cleanup
  12.  
  13. variables:
  14. GIT_STRATEGY: none
  15. PROJECT_NAME: mdmEnpoint
  16. REGISTRY_APP_ROOT: mdm/backend
  17. REGISTRY_APP_NAME: enpoint
  18. CONTAINER_IMAGE: ${REGISTRY_ADDRESS}/${REGISTRY_APP_ROOT}/${REGISTRY_APP_NAME}/${CI_COMMIT_REF_NAME}
  19.  
  20. before_script:
  21. - export RELEASE=${CI_BUILD_REF_NAME}
  22. - docker version
  23. - docker login -u $REGISTRY_USER -p $REGISTRY_PASSWD $REGISTRY_ADDRESS
  24.  
  25. dockerize:
  26. stage: build
  27. variables:
  28. GIT_STRATEGY: fetch
  29. script:
  30. - docker build -t $REGISTRY_APP_NAME .
  31. - docker images
  32. - echo $CONTAINER_IMAG
  33. - echo $CONTAINER_IMAGE:$CI_COMMIT_SHA
  34. - docker save -o ${REGISTRY_APP_NAME}.tar $REGISTRY_APP_NAME
  35. cache:
  36. policy: push
  37. key: "$CI_BUILD_REF"
  38. untracked: true
  39.  
  40. test:
  41. stage: test
  42. script:
  43. - echo "test stage..."
  44. dependencies:
  45. - dockerize
  46. cache:
  47. policy: pull
  48. key: "$CI_BUILD_REF"
  49. untracked: true
  50.  
  51. dockerize:registry:
  52. stage: release
  53. script:
  54. - docker load -i ${REGISTRY_APP_NAME}.tar
  55. - docker tag $REGISTRY_APP_NAME $CONTAINER_IMAGE:$CI_COMMIT_SHA
  56. - docker push $CONTAINER_IMAGE:$CI_COMMIT_SHA
  57. dependencies:
  58. - dockerize
  59. - test
  60. only:
  61. - master
  62. - nightly
  63. - develop
  64. cache:
  65. policy: pull
  66. key: "$CI_BUILD_REF"
  67. untracked: true
  68.  
  69. review:
  70. stage: deploy
  71. tags:
  72. - on_host_linux
  73. variables:
  74. REGISTRY_IMAGE: $CONTAINER_IMAGE:$CI_COMMIT_SHA
  75. GIT_STRATEGY: fetch
  76. DOCKER_CLIENT_TIMEOUT: 220
  77. before_script:
  78. - |
  79. if [[ $(docker ps -a | grep $PROJECT_NAME) ]]; then docker rm -f $PROJECT_NAME; fi
  80. script:
  81. - docker pull $CONTAINER_IMAGE:$CI_COMMIT_SHA
  82. - 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
  83. dependencies:
  84. - dockerize
  85. - test
  86. - dockerize:registry
  87. when: manual
  88.  
  89. production:tsii:
  90. stage: delivery
  91. script:
  92. - |
  93. docker run --rm -i --privileged -v $(pwd):/tmp/ \
  94. -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 \
  95. --dns 8.8.8.8 ${REGISTRY_ADDRESS}/terminator/vpnc/master /sbin/my_init --quiet -- \
  96. /bin/sh -c "
  97. sleep 3 &&
  98. (which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )) &&
  99. mkdir -p \~/.ssh &&
  100. echo \"$TSII_PRIVATE_KEY\" | tr -d '\r' > ~/.ssh/id_rsa &&
  101. chmod 600 ~/.ssh/id_rsa &&
  102. ssh-agent sh -c \" ssh-add ~/.ssh/id_rsa &&
  103. scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /tmp/${REGISTRY_APP_NAME}.tar ${TSII_SERVER_USER}@${TSII_SERVER_IP}:/tmp/ &&
  104. ssh -o StrictHostKeyChecking=no ${TSII_SERVER_USER}@${TSII_SERVER_IP} <<end_cmd
  105. ls -l /tmp
  106. docker ps -a
  107. docker ps -aq --filter name=$PROJECT_NAME | grep -q . && docker stop $PROJECT_NAME && docker rm -fv $PROJECT_NAME || echo This project name is available
  108. docker rmi $REGISTRY_APP_NAME
  109. docker load -i /tmp/${REGISTRY_APP_NAME}.tar
  110. 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
  111. exit
  112. end_cmd \""
  113. only:
  114. - master
  115. - nightly
  116. cache:
  117. policy: pull
  118. key: "$CI_BUILD_REF"
  119. untracked: true
  120. dependencies:
  121. - dockerize
  122. - test
  123. - dockerize:registry
  124. when: manual
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement