一、jenkins

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

大家在工作中,应该都有使用过jenkins 自动化打包或发布,就比如我经常用到的就是将开发的项目自动化打包成docker镜像,实现一键打包,大大减少了我们的工作量,下面就一起学习下,jenkins 的安装与使用。

二、基于docker 搭建 jenkins

本篇使用dockerdocker-composejenkins进行搭建,所以在安装前要保证服务器上已经安装了dockerdocker-compose。如果是内网服务器,可以先关闭服务的防火墙,外网的话下面注意开放相应端口。

由于我们要在jenkins容器内部使用外部的docker命令,需要依赖libltdl.so.7包,所以首先安装这个 library:

yum install libltdl.so.7

安装完之后,我的位置在/usr/lib64/libltdl.so.7,最好确认下你的是不是这个位置。

下面创建jenkin数据存储的地址:

mkdir /jenkins/jenkins_home

编写docker-compose-jenkins.yaml 文件,写入一下内容:

version: '3.1'
services:jenkins:image: jenkins/jenkins:ltsvolumes:- /jenkins/jenkins_home/:/var/jenkins_home- /var/run/docker.sock:/var/run/docker.sock- /usr/bin/docker:/usr/bin/docker- /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7ports:- "8010:8080"expose:- "8080"- "50000"privileged: trueuser: rootrestart: alwayscontainer_name: jenkinsenvironment:JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'

要在 CentOS7 的容器中使用宿主机上的命令,需要在容器中使用 root 用户,也可以以 jenkins 用户运行,但是需要把容器内的 jenkins 用户加入到 docker 组中,通过 grep docker /etc/group 命令查看 docker 组的 GID

所以 user: root 表示在容器中以 root 用户运行。
/var/run/docker.sock:/var/run/docker.sock 表示 Docker 守护进程监听的 Unix 套接字。要在 Jenkins 容器中使用 docker 命令,则此选项是必需的。

下面启动jenkins镜像:

docker-compose -f docker-compose-jenkins.yaml up -d


下面就可以在浏览器访问了:http://192.168.216.140:8010


第一次使用 jenkins,需要解锁,密钥上面已经提示在什么位置了,由于我们将根目录已经映射到本机的/jenkins/jenkins_home/下,所以查看密钥:

cat /jenkins/jenkins_home/secrets/initialAdminPassword


将上面密钥填入,继续可以看到新手入门,如果你不了解,就先下载推荐的插件,如果了解件下载针对性的插件,这里先安装推荐的插件:


等待一会下载完成后,需要创建用户,也可以使用admin用户,这里创建一个新用户user,然后继续:

下面一般不修改,直接继续,然后开始使用,就来到jenkins的主页面了:


到这里jenkins就算安装好了,如果要构建项目的话,还需要安装maven插件
,后面就可以构建maven项目了:

搜索Maven
然后等待一会下载完成。还需进行Maven的依赖下载:

直接新增一个maven,可以选择在线安装,也可以指定某个路径,这里直接从Apache进行安装:

下面就可以使用jenkins 实现SpringBoot项目的docker环境自动化打包和发布。

三、jenkins 自动发布 SpringBoot 镜像

首先我们需要创建一个Git仓库,也可以使用SVN,这里我在Gitee上新建了一个仓库,并放入了一个基本的SpringBoot项目:

Dockerfile 文件的内容:

FROM openjdk:8-jdk
COPY target/jenkins-demo-0.0.1-SNAPSHOT.jar /home/app/jenkins-demo.jar
ENV LANG=UTF-8
ENV TZ=Asia/Shanghai
WORKDIR  /home/app/
CMD java -jar /home/app/jenkins-demo.jar

测试接口:

下面在jenkin中创建项目:

由于上面下载了Maven的插件,这里我们可以直接选择Maven项目:

在General中,填写项目的描述,并使用参数化构建 ,将每次打包的镜像版本,传递进来:

参数命名为version,后面打包docker镜像时会使用到:

下面在源码管理中我们选择Git:

点击添加,输入git的用户名密码,ID可以为空,系统会自动生成一个唯一ID:

选择上面添加的用户和密码:

这里我就一个master分枝,这里填写master

在Build的地方,我们可以写上打包的命令,这里可以省略mvn

clean package


Post Steps中我们选择执行Shell的方式,可以写打包docker镜像的指令:

#!/bin/sh
docker stop jenkins-demo
docker rm jenkins-demo
docker build -t jenkins-demo:${version}  .
docker run -itd --name jenkins-demo  -p 8088:8080 jenkins-demo:${version}

点击下面的保存,再次回到主页,就会看到刚才添加的项目了:

下面构建该项目:

需要输入版本:

在左下角可以看到执行进度:

点进入也可以看到控制台的打印:

第一次比较慢,等待一会就可以发现,SpringBoot项目就已经启动在docker中启动起来了。

查看docker中的进程:

已经有我们打包的SpringBoot项目了,接口也可以正常访问:

修改下程序,重新发布:

重新构建:

构建完成后,再次访问测试接口:


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

使用 docker 搭建jenkins 自动化工具相关推荐

  1. docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署

           阅读本文约需要7分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot如何实现全链路调用 ...

  2. docker搭建jenkins

    docker搭建jenkins实现持续集成.持续部署 一.搭建jenkins 1.使用docker安装jenkins 2.查看jenkins容器是否正常启动 3.查看jenkins的初始密码 4.登录 ...

  3. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  4. docker搭建upsource代码审查工具,通过gitlab检出项目

    docker搭建upsource代码审查工具,通过gitlab检出项目 机器配置 docker搭建upsource代码审查工具,通过gitlab检出项目 拉取镜像 创建挂载目录 启动容器 配置账号密码 ...

  5. Docker搭建jenkins(Vue自动化部署)

    前言 需要提前准备的条件 Docker环境 Docker官网:https://hub.docker.com/u/library 一.jenkins镜像 # 查询镜像 docker search jen ...

  6. [CIamp;CD]jenkins自动化工具使用教程

    自动化构建.测试.部署.代码检测越来越重要.主要有一下几点原因 1.  企业做大,项目变多,多端支持(web,h5,小程序等) 2.  微服务提倡高内聚低耦合,项目因拆分变多 3.  DevOps自动 ...

  7. [CICD]jenkins自动化工具使用教程

    自动化构建.测试.部署.代码检测越来越重要.主要有一下几点原因 1.  企业做大,项目变多,多端支持(web,h5,小程序等) 2.  微服务提倡高内聚低耦合,项目因拆分变多 3.  DevOps自动 ...

  8. 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?

     一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...

  9. docker 搭建Jenkins持续集成平台

    Jenkin是一个开源的CI&CD平台,提供持续集成和持续交付服务,有大量的插件来支持构建,部署,自动化等项目需求,自动化测试也可以利用Jenkins来自动构建执行,免去人工执行. 1.部署J ...

最新文章

  1. java中哈夫曼编码所用的函数_数据结构(java语言描述)哈夫曼编码
  2. PHP PDO函数库详解
  3. python输出最大值与最小值求成绩平均值_Python第3次作业
  4. xtragrid 某个值 查找_二分查找(下):如何快速定位IP对应的省份地址?
  5. html点击控制盒子左右移动,JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例...
  6. linux can设备,Linux CAN编程详解
  7. 反向微分运放电路波形_做到这三步,轻松实现运放电路稳定性
  8. DVD-Cloner 2022 for mac(DVD光盘刻录工具)
  9. 简单的遗传算法实例(MATLAB版)
  10. nicelabel java_EditPlus
  11. 快速傅里叶变换MATLAB代码实现
  12. python3爬取1024图片
  13. MATLAB机器人可视化
  14. 中科大计算机考研录取分数线_计算机专业学校考研难度排行榜 计算机考研难度排名...
  15. Triplet Loss 实现
  16. [Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确
  17. c#中在一个窗体中触发另一个窗体的事件
  18. 多线程实例之售卖车票
  19. 服务器最大连接数问题
  20. 小白入门Arduino,一步一图搭建开发环境

热门文章

  1. 基于深度学习的智能问答
  2. 蓝叠安卓模拟器开启开发人员模式 VS ADB连接蓝叠
  3. 宇宙简史 李向东 期末试题
  4. FFmpeg 小白入坑指南
  5. 用Kotlin实现抖音爆红的文字时钟,征服产品小姐姐
  6. VS 关于 .sln 文件和 .suo 文件
  7. 2022电大国家开放大学网上形考任务-教育法学非免费(非答案)
  8. 视频压缩编码及视频文件格式
  9. win10安装conda
  10. NetSuite:企业中最常见的云ERP运维问题(下)