【运维知识高级篇】超详细的Jenkins教程1(安装部署+配置插件+创建自由风格项目+配合gitlab实现Jenkins自动触发)

news2024/11/26 5:32:21

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成的工具,用于监控持续重复的工作, 旨在提供一个开放易用的平台,使软件的持续集成变成可能,是持续集成的核心,可以与其他软件进行协作,例如,gitlab推送给测试环境代码,可以通过Jenkins省略步骤,实现自动推送,再例如Jenkins可以通过tag传递参数实现发布和代码回滚操作,再例如Jenkins还可以推送代码给SonarQube进行代码质量检测,等等流程,都需要Jenkins的参与。

目录

Jenkins安装部署

Jenkins修改密码

Jenkins插件安装 

Jenkins创建freestyle-job项目

一、创建freestyle-job项目

二、Gitlab上传代码

三、Jenkins端配置从git获取代码

四、手动构建获取代码

五、拉取代码到jenkins

六、配置构建步骤

七、配置自动触发构建

八、测试jenkins触发

九、配置jenkins返回构建状态到gitlab


Jenkins安装部署

关闭selinux和防火墙,安装JDK运行环境和Jenkins服务,下载链接放在文末

[root@Jenkins ~]# rpm -ivh jdk-8u181-linux-x64.rpm 
[root@Jenkins ~]# rpm -ivh jenkins-2.176.1-1.1.noarch.rpm

[root@Jenkins ~]# cat /etc/sysconfig/jenkins|grep JENKINS_USER
JENKINS_USER="root"
[root@Jenkins ~]# systemctl start jenkins
[root@Jenkins ~]# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
[root@Jenkins ~]# /sbin/chkconfig jenkins on    #设置开机自启动

访问 http://10.0.0.201:8080

[root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
c8f3b50a4ed747dea3a5ccc9d1c17f15

Jenkins修改密码

我们修改密码为固定值,不能每次都去获取,太麻烦了

 

再次登录使用设置的密码即可 

Jenkins插件安装 

此处我们跳过安装插件,直接上传插件至目录,插件下载链接放在文末

 

#jobs为每次构建后构建的结果目录,plugins为插件目录
[root@Jenkins ~]# cd /var/lib/jenkins/plugins/
[root@Jenkins plugins]# tar xf jenkins_plugins.tar.gz
[root@Jenkins plugins]# rm -rf jenkins_plugins.tar.gz 
[root@Jenkins plugins]# mv plugins/* .
[root@Jenkins plugins]# rm -rf plugins/
[root@Jenkins plugins]# systemctl restart jenkins

/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里
/etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置
/var/lib/jenkins/:默认的JENKINS_HOME
/var/log/jenkins/jenkins.log:Jenkins日志文件

在系统管理,插件管理,可以看到安装的插件

Jenkins创建freestyle-job项目

一、创建freestyle-job项目

下拉确定

 丢弃旧的构建

 执行一条shell命令、查看运行的当前路径,构建后的产物储存在/var/lib/jenkins/workspace/

二、Gitlab上传代码

Jenkins远程仓库上传小霸王游戏的源码,下载链接放到文末

[root@Gitlab ~]# mkdir git_xiaobawang
[root@Gitlab ~]# cd git_xiaobawang
[root@Gitlab git_xiaobawang]# rz -E
rz waiting to receive.
[root@Gitlab git_xiaobawang]# unzip 小霸王_FC怀旧游戏机-HTML源码.zip
[root@Gitlab git_xiaobawang]# rm -rf 小霸王_FC怀旧游戏机-HTML源码.zip
[root@Gitlab git_xiaobawang]# mv 小霸王\ FC怀旧游戏机-HTML源码/* .
[root@Gitlab git_xiaobawang]# rm -rf 小霸王\ FC怀旧游戏机-HTML源码/
[root@Gitlab git_xiaobawang]# ls
bgm.mp3  images      js    shuoming.html
css      index.html  roms
[root@Gitlab git_xiaobawang]# git init
Initialized empty Git repository in /root/git_xiaobawang/.git/
[root@Gitlab git_xiaobawang]# git add .
[root@Gitlab git_xiaobawang]# git commit -m "create xiaobawang"

[root@Gitlab git_xiaobawang]# git remote add origin git@10.0.0.200:root/xiaobawang.git
[root@Gitlab git_xiaobawang]# git push -u origin masterCounting objects: 99, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (97/97), done.
Writing objects: 100% (99/99), 7.49 MiB | 3.54 MiB/s, done.
Total 99 (delta 3), reused 0 (delta 0)
To git@10.0.0.200:root/xiaobawang.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

三、Jenkins端配置从git获取代码

在源码管理,输入git的url,报红色,提示我们需要认证,所以我们坐下jenkins服务器到git的免密钥 

[root@Jenkins plugins]# ssh-keygen
[root@Jenkins plugins]# cat ~/.ssh/id_rsa.pub     #复制到gitlab上
[root@Jenkins plugins]# ssh -T git@10.0.0.200     #测试是否能连接,输入一次yes
The authenticity of host '10.0.0.200 (10.0.0.200)' can't be established.
ECDSA key fingerprint is SHA256:zQvI/tCFYssR7l6cr90EtaIA93FXJp8FmUhGtkZshlA.
ECDSA key fingerprint is MD5:0b:a1:ee:d2:75:92:1a:62:05:63:5e:d1:e8:42:13:84.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.200' (ECDSA) to the list of known hosts.
Welcome to GitLab, Administrator!

点击保存再次打开配置的源码管理,发现没有问题 

 

四、手动构建获取代码

执行完成后点击可以看控制台输出,我们的构建后执行的shell也会在此处显示 

五、拉取代码到jenkins

写一个脚本把从git仓库里获取的代码上传到web服务器站点目录下

可以写到jenkins固定位置,也可以写到gitlab,推送的时候一起推送过去,注意在gitlab写,需要提交至远程仓库

web端先配置好nginx,创建好代码目录,方便脚本推送

[root@Web01 ~]# mkdir -p /code/xiaobawang      #web端需要先创建好
[root@Web01 code]# cat /etc/nginx/conf.d/xiaobawang.conf
server {
	listen 80;
	server_name game.koten.com;
	root /code/xiaobawang/game;
	index index.php index.html index.htm;

	location ~\.php$ {
		root /code/xiaobawang/game;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}
[root@Web01 code]# systemctl restart nginnx
Failed to restart nginnx.service: Unit not found.
[root@Web01 code]# systemctl restart nginx
#windows修改本地hosts
10.0.0.7 game.koten.com

可以在此处查看环境变量,将环境变量与脚本结合 

脚本操作 

[root@Jenkins plugins]# ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.7    #此脚本需要推送内容,所以需要先做免密钥
[root@Gitlab git_xiaobawang]# cat git_to_web.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/freestyle-job"
WEB_DIR="/code/xiaobawang"

get_code_tar(){
        cd $CODE_DIR && tar zcf /opt/xiaobawang_${BUILD_ID}.tar.gz ./*
}

scp_code_web(){
        scp /opt/xiaobawang_${BUILD_ID}.tar.gz 10.0.0.7:$WEB_DIR
}

code_tarxf(){
        ssh 10.0.0.7 "cd $WEB_DIR &&mkdir xiaobawang_${BUILD_ID} && tar xf xiaobawang_${BUILD_ID}.tar.gz -C xiaobawang_${BUILD_ID}"

}
ln_html(){
         ssh 10.0.0.7 "cd $WEB_DIR && rm -rf game && ln -s xiaobawang_${BUILD_ID} game"
}

main(){
        get_code_tar;
        scp_code_web;
        code_tarxf;
        ln_html;
}
main
[root@Gitlab git_xiaobawang]# git add .
[root@Gitlab git_xiaobawang]# git commit -m "create git_to_web.sh"
[master 71cb483] create git_to_web.sh
 1 file changed, 29 insertions(+)
 create mode 100644 git_to_web.sh
[root@Gitlab git_xiaobawang]# git push -u origin master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 567 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@10.0.0.200:root/xiaobawang.git
   9ff9bc1..71cb483  master -> master
Branch master set up to track remote branch master from origin.

六、配置构建步骤

使用jenkins调用部署脚本测试(此处写脚本全路径名称)

sh /var/lib/jenkins/workspace/freestyle-job/git_to_web.sh

立即构建

查看推送文件

[root@Web01 xiaobawang]# ll
total 7884
lrwxrwxrwx 1 root root      13 May 23 14:31 game -> xiaobawang_10
drwxr-xr-x 6 root root     128 May 23 14:31 xiaobawang_10
-rw-r--r-- 1 root root 8072532 May 23 14:31 xiaobawang_10.tar.gz

windows访问game.koten.com,访问正常

七、配置自动触发构建

需要设置安全令牌Secret token,勾选,生成令牌

 生成令牌,复制到gitlab

在设置、集成的位置,输入jenkins地址和安全令牌

增加事件进行测试,显示200,没有问题

八、测试jenkins触发

克隆代码到master上更改代码进行推送测试是否自动触发,实现自动推送,方便开发在测试环境进行测试

#如果本地仓库与远程仓库不一致需要先clone
[root@Gitlab git_xiaobawang]# git clone git@10.0.0.200:root/xiaobawang.git


[root@Gitlab git_xiaobawang]# cat index.html|grep 超级魂斗罗    #超级魂斗罗v1.1改为超级魂斗罗v1.2
                    ['超级魂斗罗v1.2', 'roms/cjhdl.nes'],
[root@Gitlab git_xiaobawang]# git add .
[root@Gitlab git_xiaobawang]# git commit -m "modify index.html"
[master b2ccba6] create git_to_web.sh
 1 file changed, 2 insertions(+), 2 deletions(-)
[root@Gitlab git_xiaobawang]# git push -u origin masterCounting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 296 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@10.0.0.200:root/xiaobawang.git
   b45a728..b2ccba6  master -> master
Branch master set up to track remote branch master from origin.

自动拉取的jenkins列表里显示字 

九、配置jenkins返回构建状态到gitlab

系统管理-系统设置选项下,name和url直接天,认证方式需要去添加

先进入gitlab点击用户设置找到访问令牌Access Tokens

复制到记事本里防止丢失

添加好后test测试,没有问题就保存选中  

设置项目中的构建后操作。然后进行构建测试返回结果

 提交远程仓库测试,也可以直接在jenkins里点立即构建进行测试

[root@Gitlab git_xiaobawang]# cat index.html |grep 1.3
                    ['超级魂斗罗v1.3', 'roms/cjhdl.nes'],
[root@Gitlab git_xiaobawang]# git add .
[root@Gitlab git_xiaobawang]# git commit -m "v1.3"
[master 5419cba] v1.3
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@Gitlab git_xiaobawang]# git push -u origin masterCounting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 279 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@10.0.0.200:root/xiaobawang.git
   97f9a0d..5419cba  master -> master
Branch master set up to track remote branch master from origin.

得到反馈 


JDK下载链接:https://pan.baidu.com/s/1sGftvjyOtGI4ji4zRMFi1Q?pwd=nlyo

Jenkins安装包下载链接:https://pan.baidu.com/s/1k9uv3FE8BwOd3eNjik4O4w?pwd=owom

Jenkins插件下载链接:https://pan.baidu.com/s/1MoMyeNVykLakPsuQy3xg9w?pwd=dib1 

小霸王游戏项目下载链接:https://pan.baidu.com/s/1eDZoMkwq87gnmQ5Q5OyKJA?pwd=3vhb 

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/875921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么骑友对太过商业化的景点如此反感?

一骑友小李最近在社交媒体上分享了他的旅行经历。他去了一个著名的景点,原本期待满满,却发现这个曾经心中的旅行圣地已经变得过分商业化。小卖部、纪念品摊位、过度开发的风景……让他感到十分失望。他的故事引发了骑友们的热议,很多人表示深…

vue.draggable浅尝

介绍 Vue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动,可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作,总之是一款非常优秀的vue拖拽组件。本篇将介绍如何搭建环境及简单的…

网工最常犯的9大错误,越早知道越吃香

下午好,我的网工朋友 我们常说,人要学会避免错误,尤其是对在职场生活的打工人来说,更是如此。 学生时代,我们通过错题本收集错误,提高刷题正确率和分数,但到了职场,因为没有量化的…

2023年京东宠物食品行业数据分析(京东大数据)

宠物食品市场需求主要来自于养宠规模,近年来由于我国宠物数量及养宠人群的规模均在不断扩大,宠物相关产业和市场规模也在蓬勃发展,宠物食品市场也同样保持正向增长。 根据鲸参谋电商数据分析平台的相关数据显示,2023年1月-7月&am…

Live Market:个人如何做跨境电商?带你从0到1了解跨境电商

跨境电商是指通过互联网技术,将商品从一个国家或地区销售到另一个国家或地区的商业活动。为消费者提供更加丰富、优质、实惠的商品选择,促进国际贸易的发展和经济的繁荣。跨境电商还可以帮助企业降低成本,提高效率,提升品牌知名度…

创建一个 React+Typescript 项目

接下来 我们来一起探索一下用TypeScript 来编写react 这也是一个非常好的趋势,目前也非常多人使用 那么 我们就先从创建项目开始 首先 我们先找一个 或者 之前创建一个目录 用来放我们的项目 然后 在这个目录下直接输入 例如 这里 我想创建一个叫 tsReApp 的项目…

【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解

7-8 人工智能打招呼 号称具有人工智能的机器人,至少应该能分辨出新人和老朋友,所以打招呼的时候应该能有所区别。本题就请你为这个人工智能机器人实现这个功能:当它遇到陌生人的时候,会说:“Hello X, how are you?”其…

终端里执行qtcreator命令报错xcb

使用rpm 安装libxkbcommon-x11-0.8.4-3.ky10.x86_64.rpm包

新能源充电桩运营管理平台解决方案含开源代码

标准化产品 、 快速接入 、 自主可控 、 安全合规 、 互联互通 √快速接入通过数据交互协议实现业务交互,提供专业的协议开发文档及Demo代码,助力桩企快速实现适配及开发工作。 √标准化产品通过私有化部署帮助企业快速构建自主可控的充电桩运营管理平台…

后院失火、持续亏损!Mobileye半年报「不回避」竞争压力

"客户在2023年上半年非常谨慎,导致增长率低于正常水平,但我们已经看到下半年回暖趋势,预计下半年交付将比去年同期增长16%,远高于上半年。"这是Mobileye在近日公司半年报发布会上的预判。 公开数据显示,今年…

好用的免费音频转换器大揭秘

你是否曾经遇到过这样的情况:你有一首喜欢的歌曲或者音频文件,但是你的播放器或设备不支持该文件格式?这时候,你需要一款好用的音频格式转换器来帮助你。说到这,你可能会问,“我都不知道免费的音频格式转换…

Java 中的强引用、弱引用、软引用和虚引用

一、继承结构 1.1 四大引用的继承关系 在 Java 中一共有四种引用类型,分别是强引用、弱引用、软引用和虚引用,其中,我们常用的是强引用,而其他三种引用都需要引入特定的 java.lang.ref 才能使用,他们的继承结构如下…

干货分享:制作婚礼请柬的技巧,从零基础起步

在现代社会,婚礼请柬已经成为了婚礼必备的一部分。而如何制作一个个性化的婚礼请柬呢?今天,我们将分享一个简便而可靠的制作方法,那就是使用乔拓云平台。 乔拓云平台是一个可靠的第三方制作工具,提供了丰富的H5模板&am…

教你如何为博客网站申请阿里云的免费域名HTTPS证书

如何为博客网站申请阿里云的免费域名HTTPS证书 文章目录 如何为博客网站申请阿里云的免费域名HTTPS证书前置条件:步骤1 例如阿里云控制台,选择SSL证书步骤2 申请购买免费证书步骤3 创建证书步骤3.1 证书申请步骤3.2 DNS域名验证 步骤4 等待证书审核成功&…

徐明君:品牌定位塑造独特价值与关键差异的新思维

在当今竞争激烈的市场环境中,品牌定位已成为企业生存与发展的关键要素。近年来,随着消费者需求的不断变化和市场的持续发展,品牌定位的内涵和方法也在不断演进。本文将探讨品牌定位的核心概念、作用以及如何有效运用品牌定位策略,…

手把手指点用piwigo与cpolar结合共同搭建一个能分享的旅行相册网站

文章目录 前言1. 使用piwigo这款开源的图片管理软件2. 需要将piwigi网页复制到phpstudy3. “开始安装”进入自动安装程序4. 创建新相册5. 创建一条空白数据隧道6.将cpolar云端保留的空白数据隧道与本地piwigo网页关联起来总结 前言 每逢节假日到各处去旅行,到不同的…

Nuxt.js快速上手

Nuxt.js快速上手 Nuxt.js快速上手1、为什么用nuxtvue-cli本身问题预渲染服务端渲染(通过SSR)项目解决seo的方案选择 2、Nuxt安装和使用Nuxt安装和使用nuxt安装和目录结构nuxt生命周期nuxt路由nuxt导航守卫nuxt Vuex状态树 3、Nuxt配置项nuxt配置之headnuxt配置之cssnuxt配置之p…

如何有效开展网络安全事件调查工作

网络安全事件调查是现代企业网络安全体系建设的关键组成部分。为了防止网络攻击,仅仅关注于安全工具的应用效果远远不够,因为安全事件一直都在发生。安全团队只有充分了解攻击者的行踪和攻击路径,才能更好地防范更多攻击时间的发生。 做好网…

Ffmpeg分布式视频转码问题总结

云原生分布式转码 在计算资源招之即来的云计算时代,正在重构着软件架构的方方面面。 对软件架构师或者运维管理者影响比较大的一个点便是不需要在做容量规划,不需要提前评估为了应对某个活动应该准备多少台机器,这个特点也深刻影响软件架构的…

航顺HK32F030M怎么样 航顺HK32F030M应用领域介绍

航顺HK32F030M是一款基于ARM Cortex-M0内核的32位微控制器,具有高性能、低功耗、经济适用等特点。以下是颖特新关于航顺HK32F030M的详细介绍: 一、性能表现 航顺HK32F030M采用ARM Cortex-M0内核,主频最高可达64MHz,具有出色的计算…