美文网首页
Docker搭建jenkins实现持续集成持续交付

Docker搭建jenkins实现持续集成持续交付

作者: onnoA | 来源:发表于2020-06-16 21:31 被阅读0次

    二、基于docker-compose安装jenkins

    version: '3.1'
    services:
      jenkins:
        restart: always
        image: jenkinsci/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 up过程中出现Docker 数据卷问题,可通过下面命令结局:

    chown -R 1000 /usr/local/docker/jenkins/data
    

    1. Jenkins 首次启动

    第一次启动jenkins时,可以通过docker logs jenkins 查看初始密码。

    cat /usr/local/docker/jenkins/data/secrets/initialAdminPassword

    2. 自定义安装插件

    image

    一定要安装的插件

    Dashboard View
    Publish over SSH
    Maven Integration plugin
    Locale 本地化插件 (显示中文)
    Choice Parameter 动态参数插件(支持一键回滚)
    

    3. 安装本地化插件后的设置

    系统管理-》系统设置-》 Locale Default -> 输入 zh_CN ->Ignore browser preference and force this language to all users(打√)

    上传javamaven 并解压

    javamaven的jar上传到jenkins的宿主机路径:/usr/local/docker/jenkins/data目录。并进行解压。

    解压:

    tar -zxvf xxx.tar.gz

    删除压缩包:
    rm -fr xxx.tar.gz

    4. 在jenkin页面配置jdkmaven

    系统管理-》global tool configuration(通用工具配置)-》JDK 安装 -》新增jdk

    JDK 别名: JDK 1.8.0.152 X64

    JAVA_HOME: 系统管理-》系统设置-》主目录:/var/jenkins_home/jdk1.8.0_152

    安装maven

    Name :Apache Maven 3.5.3

    MAVEN_HOME: /var/jenkins_home/apache-maven-3.5.3

    保存

    5. 配置 Jenkins 的 GitLab SSH 免密登录

    • 交互式进入 Jenkins 容器

    docker exec -it jenkins /bin/bash

    • 生成 SSH KEY

    ssh-keygen -t rsa -C "your_email@example.com"

    • 查看公钥

    cat /var/jenkins_home/.ssh/id_rsa.pub

    • 复制公钥到 GitLab

    gitlab -》 设置 -》 SSH秘钥

    • 手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息

    克隆之前,cd,后再 git clone gitlab项目地址
    此操作是为了拿到 cd .ssh/目录下的known_hosts文件。

    6. 配置 Publish over SSH

    • 系统管理-》系统设置-》Publish over SSH
    image

    其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录。
    在配置的远程服务器上配置usr/local/jenkins目录。

    • 测试是否能够正常通信

    Test Configuration

    7. 在jenkins配置项目

    • New Item -》 myshop-dependencies-》 丢弃旧的构建 :10 -》 源码管理: git : 项目的gitlab地址 -》 立即构建

    • gitlab为项目打标签(参数化构建,为了版本回滚)

    进入项目-》新建标签 :v1.0.0

    8. 配置正式构建

    项目-》配置-》源码管理:None;
    参数化构建过程-》添加参数:Extended Choice Parameter -》 Name: RELEASE_VERSION-》 Base Parameter Types: Single Select -》Choose Source for Value:Grovy Script :

    def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-operation;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
    ver_keys.execute().text.tokenize('\n')

    Post Steps(构建步骤)-》Add post-build step -》 Excute shell

    echo $RELEASE_VERSION
    cd /var/jenkins_home/workspace/myshop-dependencies
    git checkout $RELEASE_VERSION
    git pull origin $RELEASE_VERSION
    mvn clean install
    

    9. Send files or execute commands over SSH(发送文件或执行远程命令)

    • Source files:需要传输到远程目标服务器的文件
      **/*.jar,docker/**
    • Remove prefix:删除前缀。比如传输 **/*.jar,我们打包的 .jar 文件是在target 目录下的,传输时会一并创建target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。
    • Remote directory:在远程目标服务器创建操作目录myshop-service-user-provider
    • Exec command:在远程目标服务器执行控制台命令
    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.10.133:5000/myshop-service-user-provider:v1.0.0 .
    docker push 192.168.10.133:5000/myshop-service-user-provider:v1.0.0
    docker-compose down
    docker-compose up -d
    docker image prune -f
    

    准备工作完成之后就可以对项目进行构建,参数化构建时,第一次构建时,要确认使用groovy 脚本进行构建

    • 构建项目-》Build With Parameters -》 In-Process Script Approval-》Approve -》 然后再重新进行构建

    相关文章

      网友评论

          本文标题:Docker搭建jenkins实现持续集成持续交付

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