乐趣区

关于java:还在手动部署jar包吗快速掌握Jenkins安装教你使用Jenkins实现持续交付

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: 配置第一次构建 初始化

    • General: 抛弃旧的构建
    • 源码治理: Git

      • Repository URL: ssh://git@192.168.32.255:8000/myshop/myshop-dependencies.git
      • Branches to build: */master
  • 第二次配置 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
退出移动版