1. [admin@pd-common-jenkins deployment-document]$ cat santak_dev_deploy_web_en.sh
    2. #! /bin/bash
    3. JNEKINS_HOME=/var/lib/jenkins
    4. PROJECT_NAME=santak
    5. DEPLOY_HOME=$JNEKINS_HOME/k8s-app-service
    6. DOCKER_BUILD_HOME=$JNEKINS_HOME/docker_images_build
    7. DOCKER_REGISTRY=harbor.wicrenet.com
    8. DOCKER_REGISTRY_HOME=$DOCKER_REGISTRY/santak
    9. DOCKER_REGISTRY_USER=admin
    10. DOCKER_REGISTRY_PASSWD=Harbor_12
    11. NAMESPACE=santak
    12. MICRO_SERVICE=$1
    13. IMAGE_NAME=$2
    14. #IMAGE_TAG=$3
    15. ###################################################
    16. # 部署脚本所在目录
    17. SCRIPT_DIR=$JENKINS_HOME/jenkins-deployment
    18. # 获取当前最新部署的commit id
    19. IMAGE_TAG=v`git rev-parse --short HEAD`
    20. ##################################################
    21. # 判断$PORJECT_NAME是否存在,不存则创建
    22. if [ ! -d "$DOCKER_BUILD_HOME/$MICRO_SERVICE/" ];then
    23. mkdir -p $DOCKER_BUILD_HOME/$MICRO_SERVICE
    24. else
    25. echo "$DOCKER_BUILD_HOME/$MICRO_SERVICE/ has exist"
    26. fi
    27. rm -rf $DOCKER_BUILD_HOME/$MICRO_SERVICE/*
    28. cp -r .nuxt env.js static server nuxt.config.js package.json $DOCKER_BUILD_HOME/$MICRO_SERVICE/
    29. #写入dockerfile文件
    30. cd $DOCKER_BUILD_HOME/$MICRO_SERVICE
    31. cat > Dockerfile<< EOF
    32. # Dockerfile for service manage of Byton Project
    33. # Build with:
    34. # docker build -t $DOCKER_REGISTRY_HOME/$IMAGE_NAME:$IMAGE_TAG .
    35. FROM node:8-alpine
    36. MAINTAINER Jordan
    37. WORKDIR /data/web
    38. COPY . /data/web
    39. RUN npm install
    40. EXPOSE 8080
    41. CMD ["npm","run","start-en"]
    42. EOF
    43. #bulid项目镜像
    44. docker build -t $DOCKER_REGISTRY_HOME/$IMAGE_NAME:$IMAGE_TAG .
    45. #把构建好的项目镜像上传到仓库
    46. docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWD $DOCKER_REGISTRY
    47. docker push $DOCKER_REGISTRY_HOME/$IMAGE_NAME:$IMAGE_TAG
    48. ##########################################
    49. # 部署最新镜像到k8s上
    50. cd $DEPLOY_HOME
    51. kubectl --kubeconfig /mnt/nfs/jenkins/.kube/config delete -f $PROJECT_NAME-$MICRO_SERVICE.yaml
    52. sleep 2
    53. rm $PROJECT_NAME-$MICRO_SERVICE.yaml
    54. cp sample-micro-service-deployment.sample $PROJECT_NAME-$MICRO_SERVICE.yaml
    55. sed -i "s#<IMAGE_NAME>#$IMAGE_NAME#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    56. sed -i "s#<PROJECT_NAME>#$PROJECT_NAME#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    57. sed -i "s#<MICRO_SERVICE>#$MICRO_SERVICE#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    58. sed -i "s#<IMAGE_TAG>#$IMAGE_TAG#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    59. sed -i "s#<NAME_SPACE>#$NAMESPACE#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    60. sed -i "s#<DOCKER_REGISTRY_HOME>#$DOCKER_REGISTRY_HOME#g" $PROJECT_NAME-$MICRO_SERVICE.yaml
    61. kubectl --kubeconfig /mnt/nfs/jenkins/.kube/config apply -f $DEPLOY_HOME/$PROJECT_NAME-$MICRO_SERVICE.yaml --record
    62. sleep 10
    63. kubectl --kubeconfig /mnt/nfs/jenkins/.kube/config get po -n $NAMESPACE
    1. #! /bin/bash
    2. source /var/lib/jenkins/deployment-document/build_script/env_variable.sh
    3. PROJECT_NAME=$1
    4. MICRO_SERVICE=$2
    5. NAMESPACE=$3
    6. packagePath=$4
    7. ENV=$5
    8. ###################################################
    9. # 获取当前最新部署的commit id
    10. CURRENT_IMAGE_TAG=`date +%Y-%m-%d-%H-%M-%S`-`git rev-parse --short HEAD`
    11. echo "current commit id: $CURRENT_IMAGE_TAG"
    12. ##################################################
    13. #判断项目目录是否存在,不存在则创建
    14. if [ ! -d "$DOCKER_BUILD_HOME/$MICRO_SERVICE/" ];then
    15. mkdir -p $DOCKER_BUILD_HOME/$MICRO_SERVICE
    16. else
    17. echo "$DOCKER_BUILD_HOME/$MICRO_SERVICE/ has exist"
    18. fi
    19. #把打包好的代码包拷贝到项目文件夹下
    20. case $packagePath in
    21. "vue-web")
    22. rm -rf $DOCKER_BUILD_HOME/$MICRO_SERVICE/*
    23. rm -rf $DOCKER_BUILD_HOME/$MICRO_SERVICE/.nuxt
    24. cd $JENKINS_HOME/workspace/$JOB_NAME
    25. cp -r .nuxt env.js static server nuxt.config.js package.json $DOCKER_BUILD_HOME/$MICRO_SERVICE/
    26. ;;
    27. "maven")
    28. echo "maven"
    29. ;;
    30. esac
    31. #写入dockerfile文件
    32. cd $DOCKER_BUILD_HOME/$MICRO_SERVICE
    33. case $ENV in
    34. "zh")
    35. cat > Dockerfile<< EOF
    36. FROM node:13.14.0-alpine
    37. MAINTAINER Jordan
    38. WORKDIR /data/web
    39. COPY . /data/web
    40. RUN npm install
    41. EXPOSE 8080
    42. CMD ["npm","start"]
    43. EOF
    44. ;;
    45. "en")
    46. cat > Dockerfile<< EOF
    47. FROM node:13.14.0-alpine
    48. MAINTAINER Jordan
    49. WORKDIR /data/web
    50. COPY . /data/web
    51. RUN npm install
    52. EXPOSE 8080
    53. CMD ["npm","run","start-en"]
    54. EOF
    55. ;;
    56. esac
    57. function buildDockerImages() {
    58. #bulid项目镜像
    59. docker build -t $DOCKER_REGISTRY/$PROJECT_NAME/$MICRO_SERVICE:$CURRENT_IMAGE_TAG .
    60. #把构建好的项目镜像上传到镜像仓库
    61. docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWD $DOCKER_REGISTRY
    62. docker push $DOCKER_REGISTRY/$PROJECT_NAME/$MICRO_SERVICE:$CURRENT_IMAGE_TAG
    63. echo "the images has been pushed"
    64. }
    65. buildDockerImages
    66. ##########################################
    67. #判断域名空间是否存在
    68. function nsIsExist() {
    69. NAMESPACE=`kubectl get ns|grep $NAMESPACE|awk '{print $1}'`
    70. if [[ ! -n "$NAMESPACE" ]]; then
    71. echo "$NAMESPACE 不存在,需要创建。"
    72. kubectl create ns $NAMESPACE
    73. echo "$NAMESPACE 创建完成。"
    74. fi
    75. echo "$NAMESPACE 已存在。"
    76. }
    77. nsIsExist
    78. # 判断要项目helm chart文件目录是否存在
    79. if [ ! -d "$DEPLOY_HOME/$MICRO_SERVICE" ];then
    80. mkdir -p $DEPLOY_HOME/$MICRO_SERVICE
    81. else
    82. echo "$DEPLOY_HOME/$MICRO_SERVICE has exist"
    83. fi
    84. # 部署最新镜像到k8s上
    85. cp -r $JENKINS_HOME/deployment-document/build_script/0helm-java-template/* $DEPLOY_HOME/$MICRO_SERVICE
    86. cd $DEPLOY_HOME
    87. sed -i "s#name:.*#name: $MICRO_SERVICE#g" $MICRO_SERVICE/Chart.yaml
    88. sed -i "s#tag:.*#tag: $CURRENT_IMAGE_TAG#g" $MICRO_SERVICE/values.yaml
    89. sed -i "s#namespace:.*#namespace: $NAMESPACE#g" $MICRO_SERVICE/values.yaml
    90. sed -i "s#name:.*#name: $NAMESPACE-pullimages-secret#g" $MICRO_SERVICE/values.yaml
    91. sed -i "s#repository:.*#repository: $DOCKER_REGISTRY/$PROJECT_NAME/$MICRO_SERVICE#g" $MICRO_SERVICE/values.yaml
    92. #helm install $MICRO_SERVICE
    93. /usr/local/bin/helm upgrade --install $MICRO_SERVICE -n $NAMESPACE ./$MICRO_SERVICE
    94. sleep 10
    95. kubectl get po -n $NAMESPACEll