.gitlab-ci.yml 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. variables:
  2. DOCKER_REGISTRY: 883669802837.dkr.ecr.ap-southeast-1.amazonaws.com
  3. AWS_REGION: ap-southeast-1
  4. KUBECONFIG_ENV: coinvex-eco-eks-test-01
  5. DOCKER_ENV: coinvex-eco-test
  6. MYSELF_NAMESPACE: magic
  7. MYSELF_PROJECT_NAME: magic-node-web
  8. stages:
  9. - build
  10. - deploy
  11. before_script:
  12. - echo "Compiling the code..."
  13. - echo "Compile complete."
  14. - export
  15. - pwd && ls -lhc
  16. - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY
  17. - |
  18. source /data/.bash/set_build_env.sh
  19. echo ">> >> >>"
  20. echo -e "\033[1;33m-----------please check the following variables---------------------\033[0m"
  21. echo -e "\033[1;32mDOCKER_ENV: $DOCKER_ENV\033[0m"
  22. echo -e "\033[1;32mKUBECONFIG_ENV: $KUBECONFIG_ENV\033[0m"
  23. echo -e "\033[1;33m----------- please confirm the variables before continue ------------\033[0m"
  24. echo "<< << << "
  25. .build-template: &build-template
  26. stage: build
  27. script:
  28. - echo "start build"
  29. - docker build . -f $DOCKERFILE_PATH -t $DOCKER_REGISTRY/${DOCKER_ENV}/${MYSELF_NAMESPACE}:${IMAGE_TAG} --push --build-arg MYSELF_NAMESPACE=${MYSELF_PROJECT_NAME}SPACE --build-arg CI_PROJECT_NAME=${MYSELF_PROJECT_NAME} --build-arg CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA --build-arg DOCKER_ENV=$DOCKER_ENV
  30. .deploy-template: &deploy-template
  31. stage: deploy
  32. script:
  33. - kubectl --kubeconfig /root/.kube/${KUBECONFIG_ENV} config view -o jsonpath='{.users[*].name}'
  34. - echo "start deploy"
  35. - kubectl --kubeconfig /root/.kube/${KUBECONFIG_ENV} -n ${MYSELF_NAMESPACE} set image deployment/$DEPLOYMENT_NAME $DEPLOYMENT_NAME=$DOCKER_REGISTRY/${DOCKER_ENV}/${MYSELF_NAMESPACE}:$IMAGE_TAG
  36. ####
  37. # test pipeline
  38. ####
  39. # -----------test-----------
  40. build-test:
  41. <<: *build-template
  42. variables:
  43. DOCKERFILE_PATH: Dockerfile
  44. IMAGE_TAG: ${MYSELF_PROJECT_NAME}-$CI_COMMIT_SHORT_SHA
  45. # GIT_STRATEGY: none
  46. rules:
  47. - if: $CI_COMMIT_BRANCH != "main"
  48. when: manual
  49. - when: never
  50. deploy-test:
  51. <<: *deploy-template
  52. needs:
  53. - build-test
  54. variables:
  55. DEPLOYMENT_NAME: ${MYSELF_PROJECT_NAME}
  56. IMAGE_TAG: ${MYSELF_PROJECT_NAME}-$CI_COMMIT_SHORT_SHA
  57. GIT_STRATEGY: none
  58. rules:
  59. - if: $CI_COMMIT_BRANCH != "main"
  60. when: on_success
  61. - when: never
  62. ####
  63. # prd pipeline
  64. ####
  65. # -----------prd-----------
  66. build-prd:
  67. <<: *build-template
  68. variables:
  69. DOCKERFILE_PATH: Dockerfile
  70. IMAGE_TAG: ${MYSELF_PROJECT_NAME}-$CI_COMMIT_SHORT_SHA
  71. # GIT_STRATEGY: none
  72. rules:
  73. - if: $CI_COMMIT_BRANCH == "main"
  74. when: manual
  75. - when: never
  76. deploy-prd:
  77. <<: *deploy-template
  78. needs:
  79. - build-prd
  80. variables:
  81. DEPLOYMENT_NAME: ${MYSELF_PROJECT_NAME}
  82. IMAGE_TAG: ${MYSELF_PROJECT_NAME}-$CI_COMMIT_SHORT_SHA
  83. GIT_STRATEGY: none
  84. rules:
  85. - if: $CI_COMMIT_BRANCH == "main"
  86. when: manual
  87. - when: never