Jenkins(超详细的Docker安装Jenkins教程!!!)
创始人
2024-11-17 16:04:56
0

Jenkins

Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。

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

中文文档:https://www.jenkins.io/zh/

为什么需要Jenkins?

我们以前写完代码,如果要将项目部署到服务器中,那么我们需要经过一系列的更改、打包、上传等繁杂的操作。这些操作很浪费我们的时间,并且基本没什么技术含量。那么jenkins应运而生。jenkins只需要我们将写好的项目上传到我们的代码管理仓库中,例如gitlab,然后jenkins会自动进行拉取,打包,上传一系列操作,这样就让我们的工作量大大减少,我们只需要专注于业务的操作即可

什么是CI/CD?

CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖关系的。
CI/CD 并不是一个工具,它是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率。CI/CD 最终目的:让工程师更快 & 更高质量 & 更简单的交付软件!

具体大家可以看这篇文章:什么是 CI/CD ?

安装Jenkins

环境需要:Linux虚拟机硬盘20G,内存4G以上

安装JDK

官网下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html

现在下载java8JDK需要注册Oracle账户,下载即可,或者联系博主可以给安装包

我们Linux下记得一定要下载类似这样的包:jdk-8u261-linux-x64.tar.gz

  1. 将下载好的tar包上传到Linux中/usr/java目录中,如果没有java文件夹,请创建一个

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 使用解压命令解压我们的tar包

    tar -zxvf jdk-8u261-linux-x64.tar.gz 
  3. 创建一个挂载目录,用于存放jenkins数据

    //创建目录 mkdir -p /usr/docker/jenkins_data  mkdir /var/jenkins_home //授权权限 chmod 777 jenkins_home 
  4. 将我们刚才解压的jdk移动到jenkins_home目录下并且改一个比较简短的名字(也可以不改)

    mv /usr/java/jdk1.8.261 /var/jenkins_home/jdk1.8 
  5. 配置JAVA_HOME环境变量

    // 打开profile文件 vim /etc/profile  // 配置java环境 JAVA_HOME=/var/jenkins_home/jdk1.8 CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH :wq保存退出 // 使用更新配置文件 source /etc/profile 
  6. 执行java -version命令,出现以下内容即成功

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装Maven

下载官网:https://maven.apache.org/download.cgi

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 将下载后的tar包一样上传到我们的Linux的/usr/local/中,这块的目录大家可以自己定,也可以为了省事和博主一样

  2. 解压我们的tar

    tar -zxvf apache-maven-3.9.6-bin.tar.gz 
  3. 将解压后的文件夹移到jenkins_home目录下并且改一个比较简短的名字(也可以不改)

    mv /usr/local/apache-maven-3.9.6 /var/jenkins_home/apache-maven-3.9.6 
    1. 进入到/var/jenkins_home/apache-maven-3.9.6/conf中找到settings.xml文件,将镜像源换成国内的,这是为了保证我们拉取依赖的速度

                 ${user.home}/.m2/repository                        org.mortbay.jetty                                                      releases         ali         ali                       Snapshots         ali         ali                                         nexus       *        http://maven.aliyun.com/nexus/content/groups/public/                        nexus-public-snapshots       public-snapshots        http://maven.aliyun.com/nexus/content/repositories/snapshots/                        nexus-public-snapshots1       public-snapshots1        https://artifacts.alfresco.com/nexus/content/repositories/public/                             development                           central           http://central           truealways           truealways                                          central           http://central           truealways           truealways                                        public-snapshots                           public-snapshots           http://public-snapshots           false           truealways                                          public-snapshots           http://public-snapshots           false           truealways                                   development     public-snapshots           
  4. 配置maven环境

    // 打开profile文件 vim /etc/profile  // 配置java环境 export MAVEN_HOME=/var/jenkins_home/apache-maven-3.9.6 export PATH=${MAVEN_HOME}/bin:${PATH} :wq保存退出 // 使用更新配置文件 source /etc/profile 
  5. 执行mvn -v命令,出现以下内容即成功

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker下载安装Jenkins

首先我们需要安装Docker,这里不再进行赘述,关于Docker的安装我在之前的博客中多次提到,不会的同学可以去看之前的文章,有详细的Docker教程

  1. docker拉取镜像,注意指定版本号,否则拉取的是比较旧的版本

    docker pull jenkins/jenkins:2.426.2-lts 
  2. 我们刚才已经创建了挂载目录,所以这里直接执行创建容器

    docker run -d -p 8082:8080 -p 50000:50000 -v /usr/docker/jenkins_data:/var/jenkins_home  -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker     -v /var/run/docker.sock:/var/run/docker.sock   --restart=on-failure  -u 0 --name myjenkins jenkins/jenkins:2.426.2-lts 

    指令解析:

    • -d :后台运行容器

    • -p:端口映射, 左边是本地端口,右边是docker容器端口 ,8080是Jenkins Web 界面的工作端口,50000是JNLP(Java Network Launch Protocol)工作端口。这个端口用于 Jenkins 节点和主控节点之间的通信。

    • -v :目录挂载,将主机上的 /usr/docker/jenkins_data 目录挂载到容器内的 /var/jenkins_home 目录,用于持久化 Jenkins 的数据。/etc/localtime:/etc/localtime:将本地主机上的时区信息文件挂载到容器内的 /etc/localtime 文件中,确保容器内的时间与主机上的时间一致

    • -v /usr/bin/docker:/usr/bin/docker: 将主机上的 /usr/bin/docker 文件挂载到容器中的 /usr/bin/docker,这样容器内的 Jenkins 可以直接使用宿主机上的 Docker 命令。在使用 GitLab/Jenkins 等 CI 软件的时候需要使用 Docker 命令来构建镜像,需要在容器中使用 Docker 命令;通过将宿主机的 Docker 共享给容器

    • -v /var/run/docker.sock:/var/run/docker.sock: 将主机上的 Docker socket 文件挂载到容器中的相同位置,这样容器内的 Jenkins 可以与宿主机上的 Docker 引擎进行通信。

    • –restart=on-failure:设置容器的重启策略为在容器以非零状态退出(异常退出)时重启。

    • -u 0:将容器内进程的用户身份设置为 root 用户,等同于-u root。

    • –name myjenkins:给容器指定一个名称为 myjenkins。

  3. 极其重要!!!!!!!!!!刚才我们将jdk、maven放到了jenkins_home下,这里我们需要将其放到我们的数据卷中,也就是刚才创建的/usr/docker/jenkins_data目录下

    cp -r /var/jenkins_home/jdk1.8 /usr/docker/jenkins_data cp -r /var/jenkins_home/apache-maven-3.9.6 /usr/docker/jenkins_data 

    这是因为docker和我们的主机是有环境隔离的,我们要将其映射到docker中,这样jenkins才能找到jdkmaven

  4. 验证Jenkins容器是否启动成功

    docker ps 

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 获取管理员密码

    查看日志

    docker logs myjenkins 

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  6. 开始使用

    在浏览器中输入192.168.48.133:8082这里的ip地址是和自己的虚拟机ip地址一样的,端口号是刚才创建容器时指定的端口号

    然后稍等一会,就会出现以下样式,然后输入进去我们的密码

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    然后出现新手入门,选择推荐插件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    等一会基本就下载完毕了,随后让我们创建一个账户,正常创建即可,然后就下一步最后我们的jenkins页面就出来了

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

温馨提示

为什么不去官网下载jenkins.war包进行安装?

这里我们下载的还是比较旧的jenkins,这样会导致我们在下载插件的时候,很多插件由于版本的问题,下载不了,会报错。经过多方面尝试,实际上我们用docker部署jenkins更为方便快捷

jenkins页面一直没有出现,为什么?

有可能你没有关闭防火墙,或者可以不关闭,开放8080端口即可,或者也有可能你此时此刻某一个进程占用了8080端口

# 关闭 systemctl stop firewalld # 禁止开机启动防火墙 systemctl disable firewalld 

使用Jenkins

因为我们要构建的是一个Maven项目,jenkins默认插件没有maven,所以我们需要去下载

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里搜索安装maven,选择第一个安装即可,这里因为我安装过了,所以无法再次安装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Git安装

yum install -y git 

随后回到首页,点击新建item

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入一个名称,选择maven项目,点击确定即可

Git配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果你是gitlab,接下来需要更换你的分支名称,因为gitlab默认分支名称是main

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Maven配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JDK配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Build配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的Root POM中填写自己在代码仓库中项目中pom.xml文件在哪里,就填写哪里,我的就在java-project下,就直接pom.xml就可以了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意

这里Git、Build配置都在创建的项目item中的配置中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Maven、JDK配置在系统管理中的全局工具配置中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结果

都准备好,我们点击构建

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以在控制台看到输出效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里可以看到是在/var/jenkins_home/workspace/first/target/下生成了一个jar包,但是这里这个目录是jenkins容器中的,实际上映射到了/usr/docker/jenkins_data/workspace/first/target

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进入到jenkins容器中就可以看到日志上打印出来的结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行以下命令,在页面访问即可出现项目中的结果

java -jar SpringBootHelloWord-1.0-SNAPSHOT.jar 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关内容

热门资讯

秒懂教程!微信群牛牛房间买房卡... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信玩炸金花怎么买房... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!微信斗牛购买房卡方法... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程!拼三张房卡链接在哪弄... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!微信链接拼三张房卡怎... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
安卓导航仪系统大小,揭秘不同容... 你有没有想过,为什么你的安卓导航仪系统有时候会那么卡,有时候又那么流畅呢?这背后其实和系统的大小有着...
秒懂教程!炸金花房卡从哪买的,... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
秒懂教程!微信玩拼三张房卡链接... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!微信群玩牛牛房卡在哪... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
安卓系统停用怎么回事,安卓系统... 最近你的安卓手机是不是突然有点儿“闹脾气”了?屏幕上突然弹出一个通知,告诉你安卓系统要停用了?别急,...
秒懂教程!斗牛如何开好友房间房... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程!拼三张房卡专卖店联系... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!微信里面炸金花房卡在... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!拼三张房间卡找谁买房... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
安卓系统到了什么等级,功能革新... 你有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?别急,别急,让我来给你揭秘安卓系统现在都到...
秒懂教程!微信牛牛房卡从哪买的... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信群链接炸金花房卡... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!微信群炸金花房卡怎么... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
秒懂教程!微信的牛牛房卡怎么弄... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信怎样开炸金房间卡... 牌九是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...