美文网首页
微服务架构Day32-Dubbo之持续交付

微服务架构Day32-Dubbo之持续交付

作者: 攻城狮Chova | 来源:发表于2021-03-28 14:15 被阅读0次

    Jenkins

    • Jenkins:
      • 开源软件项目
      • 基于Java开发的一种持续集成工具
      • 用于监控持续重复的工作
      • 旨在提供一个开放易用的软件平台, 便于软件的持续集成

    基于Docker安装Jenkins

    与持续集成中的GitLab Runner应该分布在不同的服务器上

    • 创建工作目录: /usr/local/docker/jenkins
    • 因为要在docker-compose.yml中使用volumes创建数据卷,执行命令赋予Docker数据卷权限:
    chown -R 1000 /usr/local/docker/jenkins/data
    
    • 在/usr/local/docker/jenkins创建docker-compose.yml
    version: '3.1'
    services:
     jenkins:
      restart: always
      image: jenkins
      container_name: jenkins
      ports:
      # 发布端口
      - 8080:8080
      # 基于JNLP的Jenkins代理通过TCP端口50000与Jenkins master进行通信
      - 50000:50000
      environment:
       TZ: Asia/shanghai
      volumes:
       - ./data:/var/jenkins_home 
    
    • 执行docker-compose.yml文件启动Jenkins:
    docker-compose up -d
    
    • 解锁Jenkins: Jenkins第一次启动时需要输入初始密码解锁安装流程,使用命令查看初始密码
    docker logs jenkins
    
    • 使用自定义插件的方式安装Jenkins:
    Dashboard View
    Publish Over SSH
    Extend Choice Parameter
    
    也可以在Jenkins运行界面中的Manage Jekins中的Manage Plugins自定义下载安装
    

    配置Jenkins

    配置JDK&Maven

    • 上传JDK和Maven的tar包到服务器(容器的数据卷目录)
    • Manage Jekins -> Global Tool Configuration
    • 安装JDK,==注意:== JAVA_HOME的路径是==宿主机==目录:(宿主机是相对宿体而言的)
    /var/jenkins_home/jdk1.8.0_152
    
    • 安装Maven,==注意:== MAVEN_HOME的路径是==宿主机==目录:(宿主机是相对宿体而言的)
    /var/jenkins_home/apache-maven-3.5.3
    

    安装动态参数插件(Extend Choice Parameter)

    • 目的是方便在做项目构建时按照版本进行构建
    • 支持一键回滚

    使用Jenkins实现持续交付

    • Jenkins持续交付流程与GitLab Runner持续集成流程类似,只是GitLab Runner默认已经配置好Git,Jenkins需要配置多一个GitLab的SSH登录
    • Jenkins持续交付流程:
      • 拉取代码
      • 打包构建
      • 上传镜像
      • 运行容器
      • 维护清理

    配置Jenkins的GitLab SSH免密登录

    • 交互式进入Jenkins容器
    docker exec -it jenkins /bin/bash
    
    • 生成 SSH KEY
    ssh-keygen -t rsa -C "email@example.com"
    
    • 查看公钥
    cat /var/jenkins_home/.ssh/id_rsa.pub
    
    • 复制公钥到GitLab
    • 克隆项目获取到known_hosts文件

    配置Publish Over SSH

    在Jenkins管理页面中系统设置增加SSH Server配置

    • Name
    测试环境-192.168.32.255
    
    • Hostname
    192.168.32.255
    
    • Username
    root
    
    • Remote Directory(宿主机中可操作的目录)
    /usr/local/jenkins
    
    • 高级:Password
    123456
    
    • 高级:Port
    22
    
    • 高级:Timeout(ms)
    300000
    

    持续交付依赖管理项目

    第一步是实现所有项目的父工程依赖项目的持续交付

    • 项目创建标签: 在GitLab中给项目创建标签(版本号)
    • 创建Maven Project: 在Jenkins中新建一个基于Maven的任务
    • 配置Maven Project: 配置第一次构建初始化
    • 第二次配置Maven Project开始使用
      • General: 参数化构建过程
        • Extended Choice Parameter:
          • name: RELEASE_VERSION
          • Basic Parameter Types: Parameter Type
        • Choose Source for Value:
          • Groovy Script
          def var_key=['bash','-C','cd/var/jenkins_home/workspace/myshop-dependencies;git pull >/dev/null;git remote prune origin>/dev/null;git tag -l|sort -r |head -10']
          var_key.excute().text.tokenize('\n')
          
      • 源码管理: none
      • Post Steps: Add post-build step
        • Excute shell
        echo $RELEASE_VERSION
        cd /var/jenkins_home/workspace/myshop-depedencies
        git checkout $RELEASE_VERSION
        git pull origin $RELEASE_VERSION
        mvn clean package
        
      • Add post-build step: Send files or execute commands over SSH
        • SSH Publishers:
          • SSH Server:
            • name: 测试环境-192.168.32.255
            • Transfers:
              • Source files: */.jar, docker/ **(远程传送文件)
              • (Remove prefix): target(删除远程传送过程中前缀为target的文件,只适用于在上传过程中删除,不会删除已经上传成功到远程服务器上的文件)
              • Remote Directory: myshop-service-user-provider(远程创建目录,并把文件远程传送到此目录中)
              • Exec command (在远程服务器进行命令操作:进入provider目录,拷贝项目jar包到docker目录,进入docker目录,构建项目jar包的镜像,上传镜像,停止容器,启动容器,清理虚悬镜像)
              cd /usr/local/jenkins/myshop-service-user-provider
              cp target/myshop-service-user-provider-1.0.0-SNAPSHOT.jar docker
              cd docker
              docker build -t 192.168.32.133:5000/myshop-service-user-provider:v1.0.0
              docker push 192.168.32.133:5000/myshop-service-user-provider:v1.0.0
              docker-compose down
              docker-compose up -d
              docker image prune -f
              
    • 保存
    • Build with Parameters

    相关文章

      网友评论

          本文标题:微服务架构Day32-Dubbo之持续交付

          本文链接:https://www.haomeiwen.com/subject/fkpphltx.html