? 作者:微枫Micromaple
? 主页:欢迎关注Micromaple
? 简介:Java程序员、后端全栈工程师
? 点赞?➕收藏⭐➕留言? 您的支持就是我前进的动力???
目录
一、Jenkins1、创建目标文件夹2、创建docker-compose.yml3、启动容器4、解锁 Jenkins5、插件安装6、安装成功效果图6.1、创建管理员账号6.2、进入首页 7、Jenkins手动安装插件8、配置 JDK & Maven9、安装动态参数插件10、配置 Jenkins 的 GitLab SSH 免密登录10.1、配置 Publish over SSH 11、持续交付 Maven 项目11.1、为项目创建标签11.2、在 Jenkins 中创建 Maven Project11.3、配置第一次构建11.3.1、构建项目11.3.2、查看构建日志 11.4、配置正式构建11.4.1、增加参数化构建过程11.4.2、关闭源码管理11.4.3、增加构建步骤11.4.4、使用参数化构建项目 12、发送文件或执行远程命令
一、Jenkins
Jenkins是一个用Java编写的开源的持续集成工具,Jenkins提供了软件开发的持续集成服务。
1、创建目标文件夹
$ cd /usr/local$ mkdir docker$ cd docker$ mkdir jenkins$ cd jenkins$ vi docker-compose.yml2、创建docker-compose.yml
内容如下:
version: '3.1'services:  jenkins:    restart: always    image: jenkins/jenkins    container_name: jenkins    ports:      # 发布端口      - 8080:8080      # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信      - 50000:50000    environment:      TZ: Asia/Shanghai    volumes:      - ./data:/var/jenkins_home安装过程中会出现数据卷目录权限问题,用以下命令解决:
chown -R 1000 /usr/local/docker/jenkins/data3、启动容器
docker-compose up -d启动完成后访问:http://ip:8080。
4、解锁 Jenkins

Jenkins 第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins 即可方便的查看到初始密码。也可以根据提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword文件。
docker logs -f jenkins***************************************************************************************************************************************************************************************Jenkins initial setup is required. An admin user has been created and a password generated.Please use the following password to proceed to installation:67b9966bc4334a17ad7a7daef043bac8This may also be found at: /var/jenkins_home/secrets/initialAdminPassword***************************************************************************************************************************************************************************************5、插件安装
插件是 Jenkins的核心,其丰富的插件可以满足不同人群的不同需求。
Jenkins 官网插件地址:https://plugins.jenkins.io/
输入初始密码后,选择自选方式安装插件。

注意:除了默认勾选的插件外,一定要勾选 Publish over SSH 插件,这是我们实现持续交付的重点插件。

点击安装后,根据网络情况,安装时间不一样,耐性等待即可。
出现部分插件安装失败时,点击重试按钮,多次重试,如果还是无法安装,记住这些插件的名字,稍后可以手动安装。

6、安装成功效果图
6.1、创建管理员账号

6.2、进入首页

7、Jenkins手动安装插件
如下例子为安装中文插件
Manage Jenkins -> Manage Plugins -> Avaliable

Download now and install after restart。 

下载好后,重启Jenkins。
docker-compose downdocker-compose up -d8、配置 JDK & Maven
上传 JDK 和 Maven 的 tar 包到服务器(容器数据卷目录),进行解压缩。
Manage Jenkins -> Global Tool Configuration(系统管理->全局工具配置)。
安装 JDK
/var/jenkins_home/jdk1.8.0_152
Maven 
9、安装动态参数插件
该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚)
Manage Jenkins -> Manage Plugins -> Avaliable
搜索 Extended Choice Parameter
点击Download now and install after restart。

10、配置 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

手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息
jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.gitCloning into 'test'...The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established.ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts.remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.jenkins@730898bc8b96:~$ 查看生成文件
jenkins@730898bc8b96:~$ cd .ssh/jenkins@730898bc8b96:~/.ssh$ ls -altotal 20drwx------  2 jenkins jenkins 4096 Apr  9 19:03 .drwxr-xr-x 16 jenkins root    4096 Apr  9 19:03 ..-rw-------  1 jenkins jenkins 2602 Apr  9 18:57 id_rsa-rw-r--r--  1 jenkins jenkins  572 Apr  9 18:57 id_rsa.pub-rw-r--r--  1 jenkins jenkins  222 Apr  9 19:03 known_hostsjenkins@730898bc8b96:~/.ssh$ 10.1、配置 Publish over SSH
系统管理 -> 系统设置 -> Publish over SSH 
Remote Directory 是指 Jenkins 可以在目标服务器操作的目录,选择 Use password, 输入目标服务器密码 

11、持续交付 Maven 项目
11.1、为项目创建标签
在 GitLab 中为项目创建标签


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

这里没有Maven 项目选项,需要安装插件 Maven Integration  、Pipeline Maven Integration


11.3、配置第一次构建

11.3.1、构建项目

11.3.2、查看构建日志


11.4、配置正式构建
11.4.1、增加参数化构建过程



这里使用了 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')11.4.2、关闭源码管理

11.4.3、增加构建步骤


shell 脚本代码如下:
echo $RELEASE_VERSIONcd /var/jenkins_home/workspace/myshop-dependenciesgit checkout $RELEASE_VERSIONgit pull origin $RELEASE_VERSIONmvn clean package11.4.4、使用参数化构建项目

批准 groovy 脚本


 再次点击参数化构建


查看构建日志


12、发送文件或执行远程命令


Source files:需要传输到远程目标服务器的文件
**/*.jar,docker/**Remove prefix:删除前缀。比如传输 **/*.jar,我们打包的 .jar 文件是在 target 目录下的,传输时会一并创建 target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。
Remote directory:在远程目标服务器创建操作目录
myappExec command:在远程目标服务器执行控制台命令
cd /usr/local/jenkins/myappcp target/myapp-1.0.0-SNAPSHOT.jar dockercd dockerdocker build -t 192.168.50.128:5000/myapp:v1.0.0 .docker push 192.168.50.128:5000/myapp:v1.0.0docker-compose downdocker-compose up -ddocker image prune -f