Advertisement
ridhwanfaris

sample gitlab-ci.yml

Jun 10th, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. stages:
  2. - build
  3. - deploy
  4.  
  5. before_script:
  6. - |
  7. # docker variables for name and tag of new image
  8. export DOCKER_TAG="${CI_COMMIT_SHA:0:8}"
  9. export DOCKER_REPO="$CI_REGISTRY_IMAGE"
  10. export DOCKER_IMAGE="${DOCKER_REPO}:${DOCKER_TAG}"
  11. export DOCKER_CACHE_IMAGE="${DOCKER_REPO}:${CI_COMMIT_REF_NAME}"
  12.  
  13. # Build of docker image and push it to project Container registry
  14. build:
  15. # Lightweight image with support of running docker in docker
  16. image: docker:stable
  17. services:
  18. - docker:dind
  19. stage: build
  20. when: manual
  21. script:
  22. # Login to Container registry
  23. - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  24. # Load existing images for build optimisation
  25. - docker pull "$DOCKER_CACHE_IMAGE" || docker pull "${DOCKER_REPO}:master" || true # allow failure
  26. - docker pull "$DOCKER_IMAGE" || true # allow failure
  27. # Build our docker image
  28. - docker build --pull --cache-from "$DOCKER_IMAGE" --cache-from "$DOCKER_CACHE_IMAGE" --cache-from "${DOCKER_REPO}:master" -t "$DOCKER_IMAGE" .
  29. # Save built image to Container registry under branch name tag and commit hash tag
  30. - docker push "$DOCKER_IMAGE"
  31. - docker tag "$DOCKER_IMAGE" "$DOCKER_CACHE_IMAGE"
  32. - docker push "$DOCKER_CACHE_IMAGE"
  33. only:
  34. - dev
  35.  
  36.  
  37. deploy:
  38. # Lightweight image with ssh
  39. image: kroniak/ssh-client
  40. stage: deploy
  41. when: manual
  42. script:
  43. # Set right chmod on SSH key file
  44. - chmod 400 $MASTER_SSH_KEY
  45. # Login to Gitlab Container registry
  46. - ssh -o StrictHostKeyChecking=no -i $MASTER_SSH_KEY "${MASTER_SSH_USER}@${MASTER_HOST}" "docker login -u ${CI_DEPLOY_USER} -p ${CI_DEPLOY_PASSWORD} ${CI_REGISTRY}"
  47. # Remove old containers and images if exists
  48. - ssh -o StrictHostKeyChecking=no -i $MASTER_SSH_KEY "${MASTER_SSH_USER}@${MASTER_HOST}" "docker rm -f ${CI_PROJECT_NAME} || true"
  49. - ssh -o StrictHostKeyChecking=no -i $MASTER_SSH_KEY "${MASTER_SSH_USER}@${MASTER_HOST}" "docker rmi \$(docker images -q ${DOCKER_REPO}) || true"
  50. # Download and run new image
  51. - ssh -o StrictHostKeyChecking=no -i $MASTER_SSH_KEY "${MASTER_SSH_USER}@${MASTER_HOST}"
  52. docker run
  53. --name=$CI_PROJECT_NAME
  54. --restart=always
  55. --network="host"
  56. -v "/app/storage:/src/storage"
  57. -d $DOCKER_IMAGE
  58. only:
  59. - dev
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement