赞
踩
本篇文章介绍Ubuntu系统中安装jenkins,并使用jenkins完成自动化构建。
Jenkins自动构建部署流程通过git拉取代码,然后用maven打包成jar包,然后通过docker完成项目部署。这里的服务器需要安装jdk(openjdk也行),maven,git,docker,mysql,其他中间件(redis,mq等)。
Ubuntu的包管理工具是apt,不同操作系统的包管理工具不同,这里使用对应的管理工具进行安装,我这里是Ubuntu,使用apt
# 1. 更新包索引
sudo apt update
# 2. 安装maven
sudo apt install maven
# 3. 验证是否安装成功
mvn -version
# 4. 环境变量配置
export MAVEN_HOME=/usr/share/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
# 5. 环境变量更新
source ~/.bashrc
# 6.验证环境变量是否配置成功
echo MAVEN_HOME
echo PATH
## 看到输出东西就证明成功了
这里我的安装过程有点崎岖,我这就放两种方式吧。但是前提都是确保你的服务器安装了jdk或者openjdk
# 1. 更新包索引 sudo apt update # 2. 添加jenkins GPG密钥 wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - # 进行第二步的时候可能报错 “gpg: no valid OpenPGP data found” ,是wget命令版本过旧问题,这里用下面命令即可 wget --no-check-certificate -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - # 3. 将jenkins存储库添加到系统 sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' # 4. 更新包索引 sudo apt update # 5. 安装jenkins sudo apt install jenkins # 6. 启动jenkins sudo systemctl start jenkins ## 启动jenkins后可以使用下面命令查看 sudo systemctl status jenkins # 查看运行状态 lsof -i:8080 # jenkins默认端口是8080,查看端口运行状态
我这里使用前面的apt方式,安装jenkins一直失败不成功,解决一个问题又有新的问题,这里我又通过war包方式安装(这里我也不知道这个方式需不需要基于前面的步骤,我这直接下载war后,就成功了)
# 1. 下载jenkins的war包
# 1.1 这是下载最新版的jenkins,但是最新版的jenkins需要jdk11以上版本
wget http://updates.jenkins-ci.org/latest/jenkins.war
# 1.2 我这里是jdk8版本,所以下载2.346版本的jenkins
wget https://get.jenkins.io/war-stable/2.346/jenkins.war
# 2. 到war包目录下,启动war包就行了,使用java -jar
nohup java -jar jenkins.war > jenkins.log &
## 这里使用nohup + & 后台启动war包,将jenkins日志输出到jenkins.log中
启动jenkins后,可以通过lsof命令查看端口占用来看jenkins是否启动成功,启动成功后,日志会有个密码,初次登陆jenkins使用这个密码。
登陆成功后,安装推荐插件
首次安装,可能会像我这样出现很多错误,这是由于网络原因,我们给jenkins配置一个国内镜像重启一下就行了。
找到配置文件的位置,使用文本编辑器修改配置文件的镜像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
进入这个界面,jenkins就安装完成了。
新建任务,选择构建一个maven项目
在源码管理填入自己的git仓库地址,然后在下面选择账号,新安装的Jenkins没有账号,这里可以新增一个(注意:这里填的git账号需要保证可以拉取到这个git项目)
选择执行shell脚本,输入需要执行的shell
# $WORKSPACE这个会自动找到Jenkins的工作目录
ls $WORKSPACE/target
# 我这里将Jenkins目录下打包的项目jar包,复制到制定目录并重命名为demo.jar
cp $WORKSPACE/target/rabbitmq.jar /data/rabbimq/demo.jar
# 切换到jar所在目录,然后执行目录下的start.sh脚本
cd /data/rabbimq
sh start.sh
这里看一下jar所在目录下的文件
Dockerfile为构建docker镜像使用
FROM openjdk:8-jre
WORKDIR /
ADD /demo.jar /demo.jar
EXPOSE 9000
ENTRYPOINT ["java","-Xms256m","-Xmx512m","-jar","demo.jar"]
start.sh作用:
创建需要的相关路径,停止容器,删除容器,删除镜像,重新构建镜像,启动项目,具体如下:
# 定义变量(后面通过$变量名使用) dir=/data/rabbimq name=demo logs=/data/rabbimq/logs port=9000 temp=/data/rabbimq/temp if [ ! -d "$dir" ];then mkdir -p $dir else echo "文件夹已经存在" fi if [ ! -d "$logs" ];then mkdir -p $logs fi date=`date +%Y%m%d%H%M%S` # 停止容器(按照容器id停止) docker stop `docker ps -a|grep $name|awk '{print $1}'` # 删除容器(按照容器id删除) docker rm `docker ps -a|grep $name|awk '{print $1}'` # 删除镜像 docker rmi `docker images|grep $name|awk '{print $1}'`:`docker images|grep $name|awk '{print $2}'` # 构建镜像(名称为名字加当前时间,可以防止镜像名称重复) docker build -t $name:$date . # 启动镜像,挂载需要的目录 docker run -itd -p $port:$port -v $logs:/logs -v $temp:/temp --name $name $name:$date bash
这些做完后,点击立即构建就可以完成Jenkins自动构建部署了。
编写一个测试接口
@Api(tags = "jenkins测试")
@RestController
@RequestMapping("/test/jenkins")
public class JenkinsTest {
@GetMapping("/print")
@ApiOperation("输出")
public Result test(@RequestParam String text) {
return Result.success("Jenkins接收到参数:" + text);
}
}
提交到git
点击立即构建,等待完成,查看构建日志,可以看到是拉取到的我刚刚提交的最新代码。
完成后,访问我的swagger地址,可以看到刚刚新写的接口已经部署上去了,为最新的代码,查看服务器docker容器,也正在运行,到此就说明成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。