GitLab流水线部署脚本(K8S)

stages:
  - maven_build_develop
  - maven_build_release
  - docker_build_develop
  - docker_build_release
  - deploy_develop
  - deploy_release

maven_build_develop:
  stage: maven_build_develop
  script: 
    - sed -i "s/EUREKA_SEVER_IP/xxxxxxxxxxxxx/g"                src/main/resources/bootstrap.properties
    - sed -i "s/EUREKA_SERVER_PORT/8080/g"                      src/main/resources/bootstrap.properties
    - sed -i "s/ZIPKIN_KAFKA_SERVER_IP/xxxxxxxxxxxxx/g"         src/main/resources/bootstrap.properties
    - sed -i "s/ZIPKIN_KAFKA_SERVER_PORT/xxxx/g"                src/main/resources/bootstrap.properties
    - sed -i "s/CONFIG_PROFILE_VALUE/test/g"                    src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_IP/xxxxxxxxxxxxx/g"             src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_USERNAME/admin/g"               src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_PASSWORD/xxxx/g"    src/main/resources/bootstrap.properties
    - sed -i "s/EUREKA_INSTANCE_VERSION/${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}/g"  src/main/resources/bootstrap.properties
    
    - mvn clean package -Dmaven.test.skip=true
    - mvn package -Dmaven.test.skip=true   
  artifacts:
    paths:
      - target/${CI_PROJECT_NAME}.war
  tags:
    - build-server-test
  only:    
    - develop
    
maven_build_release:
  stage: maven_build_release
  script:     
    - sed -i "s/EUREKA_SEVER_IP/xxxxxxxxxxxxx/g"                 src/main/resources/bootstrap.properties
    - sed -i "s/EUREKA_SERVER_PORT/8080/g"                      src/main/resources/bootstrap.properties
    - sed -i "s/ZIPKIN_KAFKA_SERVER_IP/xxxxxxxxxxxxx/g"         src/main/resources/bootstrap.properties
    - sed -i "s/ZIPKIN_KAFKA_SERVER_PORT/xxxx/g"                src/main/resources/bootstrap.properties
    - sed -i "s/CONFIG_PROFILE_VALUE/pro/g"                     src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_IP/xxxxxxxxxxxxx/g"             src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_USERNAME/admin/g"               src/main/resources/bootstrap.properties
    - sed -i "s/RABBITMQ_SERVER_PASSWORD/xxxx/g"    src/main/resources/bootstrap.properties
    - sed -i "s/EUREKA_INSTANCE_VERSION/${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}/g"  src/main/resources/bootstrap.properties
    
    - mvn clean package -Dmaven.test.skip=true
    - mvn package -Dmaven.test.skip=true   
  artifacts:
    paths:
      - target/${CI_PROJECT_NAME}.war
  tags:
    - build-server-release
  only:    
    - /^release*/
    
docker_build_develop:
  stage: docker_build_develop
  script: 
    - echo "build release"    
    - git clone http://gitlab.xxx.com/common-source/ci_cd_configs.git
    - cp ci_cd_configs/common/test/Dockerfile               Dockerfile
    - cp ci_cd_configs/common/test/server.xml               server.xml
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"          Dockerfile
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"          server.xml
        
    - docker login --username=xxx --password=xxx registry-vpc.cn-beijing.aliyuncs.com 
    - docker build -t registry-vpc.cn-beijing.aliyuncs.com/xxx/${CI_PROJECT_NAME}:v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID} .
    - docker push registry-vpc.cn-beijing.aliyuncs.com/xxx/${CI_PROJECT_NAME}:v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}
  tags:
    - build-server-test
  only:
    - develop
    
docker_build_release:
  stage: docker_build_release
  script: 
    - echo "build release"    
    - git clone http://gitlab.xxx.com/common-source/ci_cd_configs.git
    - cp ci_cd_configs/common/release/Dockerfile            Dockerfile
    - cp ci_cd_configs/common/release/server.xml            server.xml
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"          Dockerfile
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"          server.xml
        
    - docker login --username=xxx --password=xxx registry-vpc.cn-beijing.aliyuncs.com 
    - docker build -t registry-vpc.cn-beijing.aliyuncs.com/server_xxx_release/${CI_PROJECT_NAME}:v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID} .
    - docker push registry-vpc.cn-beijing.aliyuncs.com/server_xxx_release/${CI_PROJECT_NAME}:v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}
  tags:
    - build-server-release
  only:
    - /^release*/

deploy_develop:
  stage: deploy_develop
  script:
    - echo "will do deploy to test env"
    - git clone http://gitlab.xxx.com/common-source/ci_cd_configs.git
    - cp ci_cd_configs/common/test/deployment.yml                           deployment.yml  
    - sed -i "s/PROJECT_NAME_VERSION/${CI_PROJECT_NAME}${GRAY_VERSION}/g"   deployment.yml 
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"                          deployment.yml 

    - sed -i "s/VERSION_TAG_NUM/v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}/g"     deployment.yml
    - echo "version is v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}"
    - "kubectl apply -f deployment.yml"
  tags:
    - build-server-test
  only:
    - develop
    
deploy_release:
  stage: deploy_release
  script:
    - echo "will do deploy to release env"
    - git clone http://gitlab.xxx.com/common-source/ci_cd_configs.git
    - cp ci_cd_configs/common/release/deployment.yml                        deployment.yml  
    - sed -i "s/PROJECT_NAME_VERSION/${CI_PROJECT_NAME}${GRAY_VERSION}/g"   deployment.yml 
    - sed -i "s/PROJECT_NAME/${CI_PROJECT_NAME}/g"                          deployment.yml
    - sed -i "s/PROJECT_REPLICAS_NUM/${PROJECT_REPLICAS_NUM}/g"             deployment.yml
    - sed -i "s/VERSION_TAG_NUM/v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}/g"     deployment.yml

    - echo "version is v${major_version_num}.${minor_version_num}.${CI_PIPELINE_ID}"
    - "kubectl apply -f deployment.yml"
  tags:
    - build-server-release
  only:
    - /^release*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值