Jenkins安装与使用

一、概述

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

官方网站:https://jenkins.io/

二、基于Docker安装Jenkins

1./usr/local/docker/jenkins创建compose配置

mkdir jenkins
vi docker-compose

compose配置

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 数据卷 权限问题,用以下命令解决:

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

2.访问8080端口并且解锁Jenkins

Jenkins 第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins 即可方便的查看到初始密码
解锁界面
密码
注意: 安装时可能会因为网速等原因导致安装时间比较长,请大家耐心等待。如果长时间停留在安装页没反应,请尝试使用 F5 刷新一下。

3.插件安装

插件是 Jenkins 的核心,其丰富的插件(截止到 2018.10.29 共有 77350 个插件)可以满足不同人群的不同需求

插件地址:https://plugins.jenkins.io/
选择插件
注意: 除了默认勾选的插件外,一定要勾选 Publish over SSH 插件,这是我们实现持续交付的重点插件。
选择插件
开始安装了,根据网络情况,安装时间可能会比较长,请耐心等待
安装
很多插件装不上怎么办?不要慌,记住这些插件的名字,咱们稍后可以手动安装
失败截图保留

4.成功图片

  • 创建管理员
    创建账号
  • 安装完成,进入首页
    首页

5.手动安装插件(搜索)

  • Manage Jenkins -> Manage Plugins -> Avaliable
    位置
  • 过滤出想要安装的插件,然后点击 Download now and install after restart
    安装过程

6.手动安装插件(上传.hpi文件)

  • 点击进入插件中心
    插件中心
  • 点击 Archives
    下载位置
  • 下载需要的版本
    选择
  • 在插件管理器中选择 Advanced
    选择
  • 选择上传即可
    上传

7.重启Jenkins

docker-compose down
docker-compose up -d

注意: 请留意需要下载插件的警告信息,如果不满足安装条件,Jenkins 是会拒绝安装的。如下图:

三、配置Jenkins

配置JDK&Maven

  • 上传 JDK 和 Maven 的 tar 包到Jenkins服务器(容器数据卷目录)

  • Manage Jenkins -> Global Tool Configuration

  • 安装 JDK(JAVA_HOME 的路径是宿主机目录,切记!)

    /var/jenkins_home/jdk1.8.0_152

    jdk

  • 安装 Maven(MAVEN_HOME 的路径是宿主机目录,切记!)

    /var/jenkins_home/apache-maven-3.5.3

    maven

  • 别忘记保存

    配置本地化(显示中文)

  • 安装 Locale 插件
    插件搜索

  • Manage Jenkins -> Configure System -> Locale
    zh_CN

  • 本地化效果图
    效果

安装动态参数插件

该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚哦)
动态参数插件

四、实战

写在前面

Jenkins 的持续交付流程与 GitLab Runner 的持续集成差不多,但 GitLab Runner 已经默认是配置好了 Git,所以 Jenkins 需要额外配置多一个 GitLab 的 SSH 登录。按照之前 GitLab Runner 的持续集成流程,Jenkins 的持续交付流程大致如下:

  • 拉取代码
  • 打包构建
  • 上传镜像
  • 运行容器
  • 维护清理

1.配置 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

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

  • 查看刚才生成的文件

2.配置 Publish over SSH(链接到其它机器)

  • 系统管理 -> 系统设置 -> Publish over SSH

    机器信息
    其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录
  • 测试是否能够正常通信
  • 别忘记保存

    3.持续交付依赖管理项目

3.1为项目创建标签

在 GitLab 中为项目创建标签

3.2创建 Maven Project

在 Jenkins 中创建一个基于 Maven 的任务

3.3配置 Maven Project

  • 配置第一次构建(主要是clone项目到jenkins服务中)
  • 构建项目
  • 查看构建日志

  • 配置正式构建(增加参数化构建过程)

    这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:
    def ver_keys = [ '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 ' ]
    ver_keys.execute().text.tokenize('\n')
  • 关闭源码管理
  • 增加构建步骤
    echo $RELEASE_VERSION
    cd /var/jenkins_home/workspace/myshop-dependencies
    git checkout $RELEASE_VERSION
    git pull origin $RELEASE_VERSION
    mvn clean package
  • 使用参数化构建项目

  • 查看构建日志

4.持续交付用户服务提供者

  • 在 Jenkins 中创建一个基于 Maven 的任务

  • 配置 Maven Project

  • 配置第一次构建

  • 构建项目

  • 查看构建日志

  • 配置正式构建

  • 增加参数化构建过程

    这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:

    def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-service-user-provider;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
    ver_keys.execute().text.tokenize('\n')
  • 关闭源码管理

  • 增加构建步骤

  • Execute Shell(本地执行 Shell 脚本)

    echo $RELEASE_VERSION
    cd /var/jenkins_home/workspace/myshop-service-user-provider
    git checkout $RELEASE_VERSION
    git pull origin $RELEASE_VERSION
    mvn clean package
  • 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
  • 使用参数化构建项目

  • 查看构建日志


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 18846433665@163.com

文章标题:Jenkins安装与使用

文章字数:1.6k

本文作者:Xu Shengcai

发布时间:2019-10-29, 11:47:09

最后更新:2019-10-29, 13:40:50

原始链接:http://yoursite.com/2019/10/29/Jenkins安装与使用/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏