jenkins快速入门

jenkins快速入门

jenkins介绍

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

jenkins非常的灵活,可以配合很多平台工作,所以这也是为什么自动化CI CD会使用Jenkins。只要给Jenkins安装上对应的插件,那么Jenkins就会变的很强大。

安装jenkins

# 安装jdk11
yum install -y java-11-openjdk

# 安装git
[root@jenkins jenkins]# yum install -y git

# 安装jenkins
yum install -y https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.419-1.1.noarch.rpm

# 修改插件下载源
[root@jenkins ~]# vim /var/lib/jenkins/hudson.model.UpdateCenter.xml 
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

# 启动jenkins
[root@jenkins ~]# systemctl start jenkins

image-20230825091101743

查看密码

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
8f0357be01e24b748adec405e7b94956

image-20230825091141101

image-20230825091217719

image-20230825091234815

# 删除plugins目录
[root@jenkins ~]# rm -fr /var/lib/jenkins/plugins/

# 解压jenkins插件包
[root@jenkins jenkins]# tar xf plugins.tar.gz 

# 授权
[root@jenkins jenkins]# chown -R jenkins.jenkins plugins

# 重启
[root@jenkins jenkins]# systemctl restart jenkins

如果jenkins起不来可以使用以下方法

[root@jenkins alternatives]# cd /etc/alternatives/
[root@jenkins alternatives]# rm -rf java
[root@jenkins alternatives]# ln -s /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64/bin/java /etc/alternatives/java
[root@jenkins alternatives]# systemctl restart jenkins.service 

jenkins插件安装的几种方式

方式一页面安装

image-20230825091953671

image-20230825092129577

安装简体中文插件

image-20230825092329066

image-20230825092402294

重启服务

[root@jenkins plugins]# systemctl restart jenkins

方式二 镜像源

手动解压

image-20230825093011666

image-20230825093051821

image-20230825093118464

# 下载插件
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/localization-zh-cn/latest/localization-zh-cn.hpi

# 解压插件
unzip localization-zh-cn.hpi -d localization-zh-cn

# 重启服务
systemctl restart jenkins

自动解压

image-20230825093627977

image-20230825093653441

image-20230825093708830

# 下载插件
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/localization-support/latest/localization-support.hpi

# 授权
chown -R jenkins.jenkins localization-support.hpi

# 重启服务
systemctl restart jenkins

网站上添加

image-20230825154639362

插件安装推荐(看不懂就看到一样的字勾选上就对了)

git
gitlab
pipeline
maven
ssh
blue ocean
sonar

没安装插件之前

image-20230825091329340

jenkins自由风格(插件安装之后)

image-20230825104942873

image-20230825105012382

image-20230825105135714

jenkins想要去gitlab中拉代码条件重点

jenkins想要去gitlab中拉代码
# 先遣条件
1)jenkins能识别gitlab的域名
2)jenkins要将公钥放在gitlab中
3)jenkins要有git命令

报错原因:没有将jenkins公钥放入到gitlab

image-20230825105908658

[root@jenkins ~]# ssh-keygen

报错原因:jenkins服务器上没有git命令

image-20230825110013071

报错原因:jenkins放入公钥和私钥都不好使

image-20230825155119130

因为jenkins服务使用jenkins用户启动的,放入的是root密钥对,无法使用
1)jenkins使用root启动
[root@jenkins jenkins]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"

2)给jenkins用户创建密钥对
[root@jenkins jenkins]# usermod jenkins -s /bin/bash
[root@jenkins jenkins]# su - jenkins
-bash-4.2$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:skD8+IHampa7kYMkxcuV5ViMCFcpUEzRP9V4eguScBw jenkins@jenkins
The key's randomart image is:
+---[RSA 2048]----+
|o*==.=E. o       |
| o+.=*+ o o      |
|  o.*+.o o       |
| o + += o .      |
|..o + +oSo .     |
|o. + o +  .      |
|. =.. o          |
|  o=             |
| .=o             |
+----[SHA256]-----+
# 查看公钥
-bash-4.2$ cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAcUeKXfSWKebgPhfSGdEA/KnERidSjxviXCFgs21QCG/aK0ZBMVg+QVxXlGHBs5HvmQ9x9DwC8/igwxFiKFPKuyez3yH/z5wBK8ArIP3SXABcf/VUvryp7oSVCs3EGBoQ4jvgH3u3p/JgxU7JBCUMin7gG2ssz2lnEL7OJFmwAqn5dQXjJ/IuFQv5cDFBmYiadFdETeCUjP3oZgfj7QZJfWX/MmSXRAizaXYssuTJ10bFIZb/X+1ARaz1yac3QPkx1XMBqBGkr30012mg8mHB5Pb92hJ56v976LrIkCYHx0tMEj7xXQrpr4uSfgJWgasslp93j1BxdDFtQWHNLZGl jenkins@jenkins

# 查看私钥
-bash-4.2$ cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwHFHil30linm4D4X0hnRAPypxEYnUo8b4lwhYLNtUAhv2itG
QTFYPkFcV5RhwbOR75kPcfQ8AvP4oMMRYihTyrsns98h/8+cASvAKyD90lwAXH/1
VL68qe6ElQrNxBgaEOI74B97t6fyYMVOyQQlDIp+4BtrLM9pZxC+ziRZsAKp+XUF
4yfyLhUL+XAxQZmImnRXRE3glIz96GYH4+0GSX1l/zJkl0QIs2l2LLLkyddGxSGW
/1/tQEWs9cmnN0D5MdVzAagRpK99NNdpoPJhweT2/doSeer/e+i6yJAmB8dLTBI+
8V0K6a+Lkn4CVoGrLJafd49QcXQxbUFhzS2RpQIDAQABAoIBAFHy60gc4n7fsRVk
27f4jmwhLBoM1cnuby1hlkUboz0lmpwJOY2hebZpFu2knkxiL48cWttn6fZH9mRf
LRPjoGsAb9PE/TF2MzS8cMTs86mUzAKX6tz/rE+g5oyhYSZULSVrcZvrTD/VIP3c
h8RKI4zHnWfJxUX7vSLKmrYl/JtaiI11NYwjEoJ0HlZWYHMasJ/roISkgjWhI6eY
9s1YNoXsKRLWyeahftEmGCMcCw2ekzHB4zWc6r/oTAAVeonvZdjS0oNow3f8TuJW
d7qNe1zONdpSg1jadOQE298zFaqgPsD6l2SMDkMlv+3mXj4PYnTbZ0RcrJL5+Uf5
nDdt4LECgYEA+2j9Frjbif0GhGSCzQeHgmUyAIaclzgvJS9d8LPDogw/c6POMFqa
M0kUKU+B9cLmx6WlEXaAhdn5hGs7HMGFv2sTBzxzBNXw2iojYEyN11/mri70u61+
WB3L3fUDJZBt4fkJWF/rW2mWagtWRF8iEt3wyLKYsI8k6zj5nmcaHecCgYEAw/Sx
4UiG6AyY9hNTHOJPofEL4kc0ZccJQn+/7p9PjWy7xdJ1S7Tx/lbgypivgE/npXaL
7GMKxUAJV9VufBT+VluArM4FGpjPO2Y8xL4ziggVYD/d/D+e5+LZKrkRmUXMK9qi
0fSEe5ap46shBq+WxmPgGsxpkmvYNNS+m1u1qpMCgYBZ0dqJ4aVdmS5Y4mfwxD3f
kjPZCD6tr/739AJF2pOMM3//2ofxsozgwb0YPTWbDfTRYxakNIgaShPhAUZvMZyN
FL4Jmckl8yFHcEKPRwpt5e9OT6xT2NoItSx+sehb5Uu8rfJuxmYZlJGOdVputuY/
g1dg/J2chqeT+hkERKWKBQKBgA4wyDjyUaK4VtNrLtemo/GsTRoD4g2EzmzcZ3/W
VaJ+P1LiHNBwuB2dGQZS7FK0dqgK37MssPj73DFaKXge5RRH6Bebi88TRd6dVsVA
qObUEwg3V9IOoWlVijiH0nhxD4oVeTkPJhD1JjRwjiG30YlobjBCoVqTKMMarPr/
Nza1AoGBAPT4hZFSFuVEMEc1c1694033bEAmXytygwdMe9+AVXgnBc37LuYDbUJY
3HJTDEKdYmt0T/79y6ZmsgHRbbMxJ1MQR3z5Q9miblP5G+l4QxuD8Ah+mCVd2Upr
/LBamkzOIWDYl/FH7262kXtOHsksdEYo82aKxF4GLd3jHz3/NcmR
-----END RSA PRIVATE KEY-----

# 只要在终端上执行一次就没有报错
-bash-4.2$ git ls-remote -h git@gitlab.xiaoyuanwiki.com:root/code.git
The authenticity of host 'gitlab.xiaoyuanwiki.com (10.0.0.91)' can't be established.
ECDSA key fingerprint is SHA256:VPW92P67TtEKcpIlM1gLyXvaM7dm0HXg/1jQD0ccpFI.
ECDSA key fingerprint is MD5:13:53:f1:ec:55:0e:47:b7:70:95:85:3d:5f:59:bf:5c.
Are you sure you want to continue connecting (yes/no)? yes

image-20230825111141838

image-20230825111954141

image-20230825155632684

# 推送公钥给web端(免密)
-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7

# 编写上线脚本文件
echo "----------------------------------------------"
code_dir='/www/code'

cd $WORKSPACE &&\
tar zcf web_${GIT_COMMIT}.tar.gz ./* &&\
for ip in 7;do
scp web_${GIT_COMMIT}.tar.gz root@172.16.1.${ip}:${code_dir} &&\
ssh root@172.16.1.${ip} "cd ${code_dir} && tar xf web_${GIT_COMMIT}.tar.gz"
done

image-20230825114424635

image-20230825114434613

参数化构建

image-20230825120754219

image-20230825164013409

image-20230825164036456

image-20230825171442320

# 脚本编写
## 创建脚本目录
mkdir /var/lib/jenkins/scripts

## 编写脚本
vim /var/lib/jenkins/scripts/canshu.sh
#!/bin/bash
code_dir=/www/code
web_package="web_${tag}.tar.gz"
version_dir="/www/version"
ssh_user=root
ssh_port=22
prod=7
test=8
dev=9

cd $WORKSPACE &&\
tar zcf ${web_package} ./*
for num in ${!env};do
  scp ${WORKSPACE}/${web_package} ${ssh_user}@172.16.1.$num:${version_dir}
  ssh ${ssh_user}@172.16.1.$num "tar xf ${version_dir}/${web_package} -C ${code_dir}"
done

## 给脚本执行权限
[root@jenkins jenkins]# chown -R jenkins.jenkins /var/lib/jenkins/scripts/
[root@jenkins scripts]# chmod +x canshu.sh 

## 推送公钥到其他web端
usermod jenkins -s /bin/bash
su - jenkins
ssh-keygen
-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.5
-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7
-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.8

image-20230825171320633

gitlab的钩子(自动触发代码上线)

gitlab钩子(触发器)功能:触发jenkins的webhook

gitlab调用jenkins接口(API)

## 全自动,开发提交了代码之后,自动将代码部署到测试环境
#1.Jenkins触发器功能:Jenkins通知地址
http://10.0.0.92:8080/project/freestyle-code-webhook

#2.Jenkins获取令牌:Jenkins生成tocken令牌
5ce2d4a022106c4901acca860359610e

#3.gitlab开启功能
管理中心-设置-网络设置-外发请求-允许钩子和服务访问本地网络

#4.gitlab配置url地址和令牌
找到对应项目-设置-集成(新版本webhooks)
- 链接:Jenkins通知地址
- 令牌:Jenkins对应令牌

#5.开发上传代码,web检查结果

image-20230828101454781

image-20230828101810012

image-20230828101842452

gitlab上的操作

image-20230828102046791

image-20230828102330699

在项目中

image-20230828102544854

image-20230828102724983

image-20230828102801336

钩子展示

[root@web01 code]# vim style.css 

[root@web01 code]# git add .

[root@web01 code]# git commit -m '官网红色'
[master bca2aa9] 官网红色
 7 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 .tar.gz
 create mode 100644 web_a46c09c05b8fa893024ca504711e22584b4221a7.tar.gz
 create mode 100644 web_ec5e855e0fc04c708a56271a3a72d178170f97c2.tar.gz
 create mode 100644 web_v1.3.tar.gz
 create mode 100644 web_v1.5.tar.gz
 create mode 100644 web_v1.6.tar.gz

[root@web01 code]# git tag -a '官网红色' -m '红色'

[root@web01 code]# git push --all
Counting objects: 11, done.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 458.61 KiB | 0 bytes/s, done.
Total 9 (delta 4), reused 0 (delta 0)
To git@gitlab.xiaoyuanwiki.com:root/code.git
   ec5e855..bca2aa9  master -> master

[root@web01 code]# git push --tag
Counting objects: 1, done.
Writing objects: 100% (1/1), 174 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@gitlab.xiaoyuanwiki.com:root/code.git
 * [new tag]         官网红色 -> 官网红色

image-20230828103950192

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇