linux下jenkins实现自动化部署(超详细)

本文参照:https://blog.csdn.net/achuDk/article/details/78925081
但是有给出我在搭建中遇到的问题,和我解决的方法。现在我的配置是需要手动一键点击部署。后面再持续更新

1,环境准备,安装jenkins的的前提是要先安装jdk,git,maven

大佬些,我相信这对你们来说都是很easy的。

2,安装jenkins

cd /etc/yum.repos.d/
wget http://pkg.jenkins.io/redhat/jenkins.repo

rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key

yum install -y jenkins
##启动jenkins服务
systemctl start jenkins

在浏览器打开输入http://IP:8080/访问jenkins。一般你会看到这样的页面
在这里插入图片描述

为了安全考虑,需要解锁jenkins,把/var/lib/jenkins/secrets/initialAdminPassword文件内容复制到administrator password下方即可。

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

2862d2ffc9aa40e1b80039e8ad9810ea

选择安装的插件:只需要安装gitlab plugin,git plugin,还有ssh plugin插件即可,其他插件无须安装。

gitlab 和 git插件:我们的代码都放在gitlab上面,这两个插件用来做源码管理。

ssh插件:需要使用jenkins来执行shell命令

在这里插入图片描述
创建admin用户:按照提示填写即可

3,Jenkins密钥配置

(1)jenkins生成密钥对
设置jenkins的shell终端为/bin/bash

root@node1 ~]# grep jenkins /etc/passwd

jenkins❌993:990:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash

正常的是出现像上面的那样,但是我这里出现了问题
在这里插入图片描述
解决办法:修改passwd

sudo vim /etc/passwd

最后一行改成:

jenkins:x:998:995:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash

再看:

grep jenkins /etc/passwd

这下就对了
在这里插入图片描述
然后登录到jenkins用户生成密钥:
su - jenkins
ssh-keygen -t rsa
cat .ssh/id_rsa.pub
在这里插入图片描述

把这个密钥添加到gitlab还有jenkins服务器的root用户

为什么把jenkins公钥添加到root用户?
因为jenkins执行部署操作,会出现很多权限问题,一个一个解决比较麻烦(而且不同项目权限问题都不同),就算sudo授权也是需要授予最少10几条命令的权限,而且不能保证以后不会出现新的命令,所以我直接让jenkins用户通过root方式执行部署操作,简单粗暴。

添加ssh key大家都会的,我就不写了、

添加公钥到jenkins服务器root用户,用来执行部署脚本

ssh-copy-id
-i .ssh/id_rsa.pub root@ip

root@ip's password:

4,jenkins触发式构建

(1)准备一个测试脚本,看开发如何提交代码就执行这个构建操作。

[root@slt3bkcqzaq shell]# vi depload.sh 
 kill -9 $pid
 nohup java -jar mfe-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod&
 scp /var/lib/jenkins/workspace/Metadata-Function-Enhance-test/target/mfe-0.0.1-SNAPSHOT.jar /usr/web/
pid=$(ps -ef | grep "mfe-0.0.1-SNAPSHOT.jar" | grep -v grep | awk '{print $2}')
echo $pid
if [ -z '$pid']
then
 echo "stop"
else
 echo "kill pid"
 kill -9 $pid
 echo "delete ex jar file"
 rm -rf /usr/web/mfe-0.0.1-SNAPSHOT.jar
 echo "scp jar file"
 scp /var/lib/jenkins/workspace/Metadata-Function-Enhance-test/target/mfe-0.0.1-SNAPSHOT.jar /usr/web/
 echo "source env"
 source /etc/profile
 echo "execute new jar file"
 nohup java -jar mfe-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod&
fi

(2)创建一个触发构建的项目,选择构建maven项目
在这里插入图片描述
在往下源码管理,我遇到这样的问题:

Failed to connect to repository : Command "git ls-remote -h git@gitlab.xpaas.lenovo.com:zengjian3/ludp-mtadata-management-view.git HEAD" returned status code 128:

在这里插入图片描述
解决:加上服务器上用户到jenkins就好了

-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub metadatafe@10.122.47.95
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '10.122.47.95 (10.122.47.95)' can't be established.
ECDSA key fingerprint is SHA256:RHy25keGgWs+/k9ETi13P8KLjvaFS0P0kV1W9DLQgW8.
ECDSA key fingerprint is MD5:25:c5:04:8e:5f:16:21:f1:53:9d:b2:bb:00:36:0e:08.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
metadatafe@10.122.47.95's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'metadatafe@10.122.47.95'"
and check to make sure that only the key(s) you wanted were added.

继续构建,选择execute shell,执行部署脚本即可,就是之前创建的脚本。
在这里插入图片描述
点击保存。回到主页可以看到刚刚的构建。点击这个按钮执行自动打包部署
在这里插入图片描述
点击按钮,查看控制台输出:
在这里插入图片描述
在这里插入图片描述
说明执行成功了。谢谢大家。
后面再更新更详细的版本。任何问题请comment。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值