Jenkins部署与自动化构建

这篇具有很好参考价值的文章主要介绍了Jenkins部署与自动化构建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Jenkins笔记

一、安装Jenkins

docker 安装 Jenkins

  1. 拉取稳定版Jenkins镜像

    注意: docker拉取镜像的时候要拉取 jenkins/jenkins 而不是jenkins 要装稳定版,否则后面会有很多插件装不上

    docker pull jenkins/jenkins:lts
    
  2. 挂载对应的容器卷

    #给需要挂载的文件夹授权
    mkdir jenkins_home
    chmod 777 /docker/jenkins_home/
    
    #启动容器
    docker run -d -p 8090:8080 -p 8091:50000 --privileged=true --name jenkins_8090 -v /docker/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime 55860ee0cd73
    
    -d 后台运行镜像
    -p 8090:8080 将镜像的8080端口映射到服务器的8090端口。
    -p 8091:50000 将镜像的50000端口映射到服务器的8091端口
    -v /data/jenkins_home:/var/jenkins_home /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /data/jenkins_home目录
    -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
    –name jenkins_8090 给容器起一个别名
    http://mirror.esuni.jp/jenkins/updates/update-center.json
    
  3. 修改插件下载镜像源为清华镜像(可以先直接尝试一下是否可以安装成功)

    # 修改xml
    vim jenkins_home/hudson.model.UpdateCenter.xml 
    #将 <url>https://updates.jenkins.io/update-center.json</url>替换为 <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
    http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    
    # 修改jenkins/updetes/default.json文件
    ①把:“http://www.google.com/” 改成 “http://www.baidu.com/”
    ②把:“https://updates.jenkins.io/download” 全部替换成 “http://mirrors.tuna.tsinghua.edu.cn/jenkins”
    
    sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
    sed -i 's#https://www.google.com#https://www.baidu.com#g' default.json
    
    sed -i 's#https://updates.jenkins.io/download#https://mirrors.huaweicloud.com/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json 
    
    http://ip:9090/pluginManager/advanced
    https://cdn.jsdelivr.net/gh/jenkins-zh/update-center-mirror/tsinghua/current/update-center.json
    
    
    # 重启服务
     docker stop jenkins_8090
     docker start jenkins_8090 
    
    
  4. 访问web页面 http://IP:8090/

    Jenkins部署与自动化构建

  5. 去查看第一次登录的密码

    #查看输出日志
    docker logs jenkins_8090
    
    #在日志中会有一段密码
    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:
    
    800c8b5201284979a1ea16c1893358d5
    
    This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
    
    #或者也可以去它上面给的地址中查看密码
    将密码填入上面的文本框中
    
  6. 等待一会后,开始安装插件

    我这里选择的是按照推荐安装Jenkins部署与自动化构建

  7. 后续需要通过maven来构建我们的项目,所以需要在容器内安装mavne

    # 将maven下载好后解压
    unzip /mavne/apache-maven-3.8.6 -d ./
    
    # 修改maven的镜像源
    vim /mavne/apache-maven-3.8.6/conf/setting.xml
    
    #将里面的镜像换为阿里云镜像
    <mirror>  
    <id>alimaven</id>              
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
    <mirrorOf>central</mirrorOf>          
    </mirror>
    
    #增加软连接 (不需要进入到原来的路径也可以验证Maven安装)
    ln -s /maven/apache-maven-3.8.6/bin/mvn /usr/local/bin/mvn
    
    #验证是安装成功
    mvn -v 
    
    

Java启动war包直接安装

  1. 下载适合的war包 https://mirrors.jenkins.io/war-stable/

    我这里用的jdk1.8 所以下载的版本为jenkins 2.346.1

  2. 利用java命令启动

    touch temp.txt
    # 这种方式会在后台运行 不会被关闭
    nohup java -jar jenkins.war --httpPort=8090 >temp.txt &
    
  3. 访问 ip:8090 后续操作同上4⃣️

二、配置maven+Git自动构建jar包

  1. 安装maven插件

    Jenkins部署与自动化构建

    安装好后进入新增item,出现小猫头鹰即安装成功

Jenkins部署与自动化构建

  1. 创建一个任务

    Jenkins部署与自动化构建

  2. 选择Git ,此时下面会提示git连接错误

    Jenkins部署与自动化构建

    可以配置下凭证

    Jenkins部署与自动化构建

  3. 安装git

    yum install -y git
    # 安装完毕后验证一下
    git --verison
    
  4. 设置需要构建的分支

    Jenkins部署与自动化构建

  5. 配置maven路径

    Jenkins部署与自动化构建

    配置安装的maven路径

    Jenkins部署与自动化构建

  6. 设置需要构建的pom文件路径

    Jenkins部署与自动化构建

  7. 保存后开始构建

    Jenkins部署与自动化构建

    可以在构建中看到控制台输出(记得将maven的镜像地址换成阿里云地址

    Jenkins部署与自动化构建

三、自动化发布到测试服务器运行

  1. 安装服务器连接插件 Publish Over SSH

    Jenkins部署与自动化构建

  2. 进入配置后管理界面

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

    选择这个选项

    Jenkins部署与自动化构建

  3. 配置测试服务器连接

    因为我们需要增加一台远程服务器,所以我们需要做一些配置信息

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

  4. 添加一台远程服务器

    Jenkins部署与自动化构建

  5. 此时在原先的地方就有了我们刚添加的服务器

    Jenkins部署与自动化构建

    配置相关数据

    1. 构建前Pre Steps

    Jenkins部署与自动化构建

    构建后Post Steps

    Jenkins部署与自动化构建

超时机制

  1. 启动脚本问题会导致超时,从而导致启动不成功

    可以设置超时时间为0 这样就可以不会因为超时而不成功

nohup java -jar /jenkins/build_jar/first1/*.jar &
# 这条语句会超时,原因是因为没有指明日志输出到哪里,控制台会一直等待

#修改为如下
nohup java -jar /jenkins/build_jar/first1/*.jar >/jenkins/build_jar/first1/mylog.log 2>&1 &

# 也可以简化为
nohup java -jar /jenkins/build_jar/first1/*.jar &>/jenkins/build_jar/first1/mylog.log  &


数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方

# 标准输入:代码为0,使用<或者<<
# 标准输出:代码为1,使用>或者>>
# 标准错误输出:代码为2,使用2>或者2>>
# 若以>输出到一个已存在的文件中,那么这个文件会被覆盖
# > 覆盖写
# >> 追加写

编写清理Shell脚本

jps|grep -v Jps|awk '{print $1}'

#将 xxxx写入xxx.txt
echo "xxxx">xxx.txt

#!/bin/bash

#获取程序运行的pid
ps -ef|grep jenkins_demo #会获取到两条记录 有一条是grep的数据

#利用grep -v 再次过滤 grep -v 需要过滤掉的信息
ps -ef|grep jenkins_demo|grep -v grep

#利用grep '需要的信息' 进行过滤
ps -ef|grep jenkins_demo|grep 'SNAPSHOT'

#获取打印出来的信息的第二列数据PID
`ps -ef|grep jenkins_demo|grep 'SNAPSHOT'|awk '{printf $2}'`


部署前shell操作(删除原来的包,同时关闭上一次运行的pid)

#!/bin/bash
#删除原来的包
rm -rf /jenkins/build_jar/first1

#传入一个参数
appname=$1
if [ -z $appname ]
then
  appname='jenkins_demo'
fi
echo $appname

#获取pid
pid=`ps -ef | grep $appname | grep 'java -jar' | awk  '{printf $2}'`

echo $pid

#如果pid为空的话,提示一下,否则执行kill命令
if [ -z $pid ]
#使用-z来判断是否是空值
then
  echo "$appname not started"
else
  kill -9 $pid
  echo "$appname stoping..."
fi

#再次精准匹配 查看是否已经kill完 -w是精准匹配
check=`ps -ef|grep -w $pid |grep java`
if [ -z $check ]
then
  echo "$appname pid:$pid is stop"
else
  echo "$appname stop Failed"
fi
  1. 配置构建前执行shell脚本

    Jenkins部署与自动化构建

  2. 此时构建的话,Jenkins会自动帮我们删除以前的版本数据,同时kill掉以前运行的pid

    Jenkins部署与自动化构建

四、构建触发器

触发器可以通过一些事件触发Jenkins的自动构建,如:上传代码,合并代码等。

1. 生成API token

  • 1.1 进入jenkins安全设置,开启安全域及授权策略

    Jenkins部署与自动化构建

    配置开启

    Jenkins部署与自动化构建

  • 1.2 生成api token

    Jenkins部署与自动化构建

2. Jenkins项目配置触发器

  • 2.1 选择测试项目-配置-构建触发器,选择触发远程构建,将token粘贴在身份验证令牌处,保存

    Jenkins部署与自动化构建

  • 2.2 通过访问 JENKINS_URL/job/first/build?token=TOKEN_NAME 观察项目是否进入构建队列

    Jenkins部署与自动化构建

3. 远程Git仓库配置WebHooks

(GitLab GitHub)同理

  • 3.1在Jenkins中安装Gitee插件(同上)

  • 3.2在项目设置中配置Gitee令牌地址等

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

  • 3.3增加webHooks管理

    Jenkins部署与自动化构建

  • 3.4添加post地址和token 这里的地址直接用上面Jenkins的链接,token则是刚才生成的密码

    Jenkins部署与自动化构建

  • 3.5尝试重新上传代码,可以发现现在会自动触发构建

    Jenkins部署与自动化构建

4. 几种构建方式

Jenkins部署与自动化构建

1、快照依赖构建/Build whenever a SNAPSHOT dependency is built

  • 当依赖的快照被构建时执行本job

2、触发远程构建 (例如,使用脚本)

  • 远程调用本job的restapi时执行本job

3、job依赖构建/Build after other projects are built

  • 当依赖的job被构建时执行本job

4、定时构建/Build periodically

  • 使用cron表达式定时构建本job

5、向GitHub提交代码时触发Jenkins自动构建/GitHub hook trigger for GITScm polling

  • Github-WebHook出发时构建本job

6、定期检查代码变更/Poll SCM

  • 使用cron表达式定时检查代码变更,变更后构建本job

5. 定期构建cron表达式

在构建中Build periodically与Poll SCM接收的参数都是cron表达式

与标准的cron表达式不同,没有秒字段

cron表达式网站

第一个 * 表示每个小时的第几分钟,取值0~59

0 */1 * * *
H:每小时0分执行一次

第二颗 * 表示小时,取值0~23

* 15 * * * 表示每天下午3点
* 1 * * *  表示每天凌晨1点

第三颗 * 表示一个月的第几天,取值1~31
* 1 5 * *  表示每月5日凌晨1点

第四颗 * 表示第几月,取值1~12
* 15 5 1 *  表示每年一月5日15时的每一分钟执行

第五颗 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日

H (hash散列)

  • hash散列值,以job名取值,获取到以job名为入参的唯一值,相同名称值也相同,这个偏移量会和实际时间相加,获得一个真实的运行时间。

  • 意义在于:不同的项目在不同的时间运行,即使配置的值是一样的,比如 都是15 * * * * ,表示每个小时的第15分钟开始执行任务,那么会造成同一时间内在Jenkins中启动很多job,换成H/15 * * * *,那么在首次启动任务时,会有随机值参与进来,有的会在17分钟启动 有的会在19分钟启动,随后的启动时间也是这个值。这样就能错开相同cron值的任务执行减轻同一时间拉起的Job太多

  • H的值也可以设置范围

  • H * * * *表示一小时内的任意时间
    
    */10 * * * *每10分钟
    
    H/10 * * * *每10分钟,可能是7,17,27,起始时间定hash,后续不会变
    
    45 3 * * 1-6 每个周一至周六,凌晨3点45 执行1次
    
    45 3-5 * * 1-6 每个周一至周六,凌晨3点45 ,凌晨4点45,凌晨5点45 各执行1次
    
    H(40-48) 3-5 * * 1-6 在40~48之间取值 其他同上
    
    45 3-5/2 * * 1-6 每个周一至周六,凌晨3点45 ,凌晨5点45 各执行1次
    
    45 0-6/2 * * * 0点开始,6点结束,每间隔2小时执行一次 0:45、2:45、4:45、6:45
    
    
  • 如图 配置后会每天凌晨两点的某一分钟为我们构建 H 2 * * *

    Jenkins部署与自动化构建

6. Poll SCM(轮询)

​ 这个是由Jenkins服务发起对远程git仓库的访问,比较配置的分支上是否有新的内容,如果有则会发起一次构建,轮询频率控制是通过cron表达式控制。

Jenkins部署与自动化构建

五、配置邮箱接收构建信息

1. 设置管理员邮箱(发件邮箱)

  • 1.1 登录163邮箱,进入邮箱协议设置

    Jenkins部署与自动化构建

  • 1.2 获取授权密码(ZSJRNM*********)

    Jenkins部署与自动化构建

2. Jenkins邮件设置配置

  • 在管理界面Configure System中

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

    Jenkins部署与自动化构建

    此时可以点击下面的发送邮件测试是否能成功发送

    Jenkins部署与自动化构建

  • 在项目管理里配置构建后邮件通知

    Jenkins部署与自动化构建

  • 重新构建项目,可以看到已经有短信通知了

3.邮件设置中的坑

  1. 点击发送测试信息的时候,提示**AuthenticationFailedException: 550 User has no permission**错误

    那就是授权出现了错误,此时就需要重新获取授权码再授权一次,但记得邮箱设置页面中已获得授权的设备一定要记得删除,防止自己的邮箱账号被盗

  2. 点击发送测试信息的时候,提示MailConnectException: Couldn't connect to host, port: smtp.163.com, 25; timeout 60000;

    这个话是因为可能你使用的是Linux服务器,防火墙25端口没有开,有两种解决办法

    1.开启防火墙25端口

    注意:如果你和我一样使用的为阿里云服务器的话,阿里云为了安全考虑默认是关闭25端口的,如果你想要开启的话需要提交申请审批,大概需要3-5天

    2.使用SSL协议号

    • 下面配上网易163邮箱的相关服务器信息:

      Jenkins部署与自动化构建

    我这里使用的是465端口,同时启用SSL协议

  3. 点击发送测试信息的时候,提示MessagingException: Got bad greeting from SMTP host: smtp.163.com, port: 465, response: [EOF],则查看使用的端口是否需要使用SSL协议

    Jenkins部署与自动化构建

  4. 用来发送的邮箱要和管理员设置的邮箱一致

    Jenkins部署与自动化构建

    这样就可以开开心心的发邮件啦!以上这些坑不幸的我都踩到了😭

Jenkins部署与自动化构建文章来源地址https://www.toymoban.com/news/detail-402678.html

到了这里,关于Jenkins部署与自动化构建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • centos安装Jenkins并拉取git远程仓库的代码进行自动化构建部署

    在linux上安装jenkins的前提条件是已经安装了jdk、maven、git 这里是在centos上直接安装openjdk11 查看是否安装成功 安装好后,看下版本 首先下载maven安装文件,此处我选择的版本是3.6.3,下载地址, 下载后上传到服务器目录/usr/local目录下 修改目录名称为maven3, 所以服务器中maven的

    2024年02月04日
    浏览(44)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月15日
    浏览(60)
  • Jenkins自动化构建

    Jenkins 是一款开源 CICD 软件,用于自动化各种任务,包括构建、测试和部署软件 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序 安装方法 因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库: wget 是 Linux 中下载文件的

    2024年02月15日
    浏览(42)
  • Gitlab自动触发jenkins完成自动化构建 jenkins

     首先安装gitlab插件,我已经安装过了,首次请在 可选插件 中进行搜索。   进入项目配置--构建触发器: Build when a change is pushed to GitLab. GitLab webhook URL: 请复制此处的URL,后续有用。  然后点击高级   “Allowed branches”触发分支可以用默认的全部分支,也可以选择仅由指定名

    2024年02月16日
    浏览(63)
  • Ubuntu安装jenkins完成自动化构建

    本篇文章介绍Ubuntu系统中安装jenkins,并使用jenkins完成自动化构建。 Jenkins自动构建部署流程通过git拉取代码,然后用maven打包成jar包,然后通过docker完成项目部署。这里的服务器需要安装jdk(openjdk也行),maven,git,docker,mysql,其他中间件(redis,mq等)。 1.maven安装 Ubuntu的

    2024年02月12日
    浏览(40)
  • jenkins自动化构建保姆级教程(持续更新中)

    访问jenkins官网 https://www.jenkins.io/,进入到首页 点击【Download】按钮进入到jenkins下载界面 左侧显示的是最新的长期支持版本,右侧显示的是最新的可测试版本(可能不稳定),建议使用最新的长期支持版本,这里我使用2.401.3 使用虚拟机centos7系统,采用docker-compose方式安装 虚

    2024年02月13日
    浏览(45)
  • Jenkins-pipeline自动化构建Java应用

    本实验操作需要:Jenkins,git代码仓库(如gitlab,gitee等都可以),maven,docker,docker镜像仓库(habor,nexus或者阿里云ACR等)以及k8s环境。 本例需要Jenkins插件如下: Git Git Parameter Git Pipeline for Blue Ocean GitLab Credentials Credentials Binding Blue Ocean Blue Ocean Pipeline Editor Blue Ocean Core JS Pi

    2024年02月11日
    浏览(47)
  • Jenkins从配置到实战(二) - Jenkins如何在多台机器上自动化构建

    Jenkins的Master-Slave分布式构建,就是通过将构建过程分配到从属Slave节点上,从而减轻Master节点的压力,而且可以同时构建多个,有点类似负载均衡的概念。 简单理解就是,将Jenkins服务器上的构建任务分配到其他机器上,可以是linux,也可以是windows,这样不仅减轻了Jenkins服务

    2024年02月16日
    浏览(55)
  • DevOps—基于 Jenkins 构建 Vue 前端工程自动化流程

    一个完整的生产环境的 CI/CD 流程,往往会包括以下这些阶段: 编码 → 提交 → 构建 → 测试 → 交付 → 部署 这里只是演示,就省略了测试相关阶段,只包含提交、构建、发布、部署,一个简单的流程如下: vue 应用构建依赖于 Nodejs,需要在 Jenkins 上安装 Nodejs 插件,并且进

    2024年02月15日
    浏览(54)
  • Jenkins自动化部署-Jenkins的安装

    首先我们需要安装docker  安装 yum-utils包 yum install -y yum-utils            device-mapper-persistent-data            lvm2 --skip-broken    设置镜像地址 yum-config-manager     --add-repo     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo      sed -i \\\'s/download.docker.com/mirrors.aliyun.com/do

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包