Jenkins+GitLab在CentOS7上的自动化部署方案

最近在安装jenkins实现微服务的自动发布,记录配置过程以免再次踩坑。

Centos7环境准备

jenkins、gitlab配置,全程使用ftpuser普通用户操作

(1)安装好jdk并配置好环境变量

安装路径/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64

(2)安装好maven并配置好setting文件,能连接maven仓库

安装路径/usr/local/maven3.5/

安装jenkins

http://mirrors.jenkins.io/war下载最新的jenkins安装包

cd /home/ftpuser

wget http://mirrors.jenkins.io/war/2.161/jenkins.war

Jenkins 的安装不用做任何配置,war包自带Jetty服务器,直接用java命令启动服务即可

ftpuser@localhost home\]$ java -jar jenkins.war \& 运行Jenkins 就启动成功了。/home/ftpuser/.jenkins/workspace为jenkins的工作空间。第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令,复制下来,然后在浏览器输入密码。 INFO: *** ** * ** *** *** ** * ** *** *** ** * ** *** Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 0cdc37ieue6540c08cde6e4c96f46da0f This may also be found at: /root/.jenkins/secrets/initialAdminPassword *** ** * ** *** *** ** * ** *** *** ** * ** *** 访问浏览器访问:http://localhost:8080/。输入:0cdc37ieue6540c08cde6e4c96f46da0f 进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6ea74898f5de4d94836198068ee62f3e.jpeg) 接下来是进入插件安装进度界面,插件一次可能不会完全安装成功,可以点击Retry再次安装,直到全部安装成功。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e2a244adce384e6d9336744d85308830.jpeg) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ac71b229dd63498aac4b8e8236c28f8f.jpeg) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0ed7dc4c0de34d06bed66c30bd7c5b2c.jpeg) 等待插件安装完成,配置用户名密码,保存即可完成安装。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9945fa0d577f455996db1a0eacd3893e.jpeg) ## **插件安装** 在上面安装jenkins的过程中,已经安装了大部分的插件。还有几个插件需要我们手动安装。 Git plugin、Maven Integration plugin、publish over SSH、SSH这四个插件。 系统管理-\>插件管理 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ba405be51c134833b903f8e8eb696919.jpeg) 搜索相应的插件直接安装即可,可以在已安装列表中查看插件是否已经安装。安装好这些插件我们就可以进行配置了。 ## **全局配置** 系统管理-\>全局工具配置 ### **maven 配置** 配置默认全局 settings文件,就是linux服务器上maven中的settings文件的路径。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/92345448e1f54fefb1818a25ece742b8.jpeg) 往下拉,配置maven的安装路径。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb6f20e27c964a83aa9850addfa97b32.jpeg) ### **jdk安装路径配置** 配置linux服务器上jdk的安装路径。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/84901cb5005b4b2bbfa6cab7843dffa1.jpeg) ## **密钥配置** Jenkins从gitlab或者git上clone代码的时候,可以用密钥登录或者用户名密码登录。在此我们用密钥登录。否则在下面配置maven的仓库地址的时候就会报无权限错误。 Failed to connect to repository : Command "/usr/bin/git ls-remote -h git@gitlab.xxx:cmnn/admin.git HEAD" returned status code 128: stdout: stderr: ssh: connect to host gitlab.xxx port 22: Connection refused fatal: Could not read from remote repository. ### **linux上生成密钥对** linux上生成密钥和在windows上生成密码一样,切换到当前用户目录下,进入.ssh目录。 \[ftpuser@localhost home\]$ cd \~ \[ftpuser@localhost \~\]$ ls -a . .bash_logout .bashrc .gitconfig .java jenkins.war .ssh ... .bash_history .bash_profile config .groovy .jenkins .m2 \[ftpuser@localhost \~\]$ cd .ssh 执行以下命令,一路enter默认即可。 \[ftpuser@localhost .ssh\]ssh-keygen -t rsa -C \["itpsc@qq.com"\](mailto:) \[ftpuser@localhost .ssh\]git config --global user.email \["itpsc@qq.com"\](mailto:) \[ftpuser@localhost .ssh\]git config --global user.name "itpsc" [itpsc@qq.com](mailto:itpsc@qq.com) 是登录gitlab账号,这个根据自己的实际情况修改。 可以看到生成了公钥id_rsa.pub和私钥文件id_rsa,这两个密钥的作用是:公钥需要添加到gitlab的SSHKey上,私钥要配置到jenkins上。下面会讲到。 \[ftpuser@localhost .ssh\]$ ls config id_rsa id_rsa.pub known_hosts \[ftpuser@localhost .ssh\]$ 我们对gitlab的域名进行了修改,所以增加了一个config文件 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0ecc6be69a5947f79cd2ee06c282b38c.jpeg) ### **gitlab配置公钥** 登录gitlab,点击Profiles settings-\>SSH Keys-\>ADD SSH KEY。将上述生成的id_rsa.pub文件中的内容粘贴到Key文本框中保存即可。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/772aaea46dfe43eea5d55f904bb269ff.jpeg) 将公钥配置到gitlab上后,可以用git命令克隆远程仓库的代码验证是否能连接上gitlab。可能会遇到"Bad owner or permissions on /home/ftpuser/.ssh/"的错误,解决办法是修改.ssh目录的权限。 \[ftpuser@localhost \~\]$ chmod 600 \* ### **jenkins配置全局密钥** 凭据 -\>添加凭据 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0e7ae6d735d0449386c59d06e1d1cf5b.jpeg) 输入任意的Username,将上述生成的id_rsa中的内容粘贴到Private Key中,保存。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1b82d5aebab84a2b8f1d402d958481b2.jpeg) 到此,密钥的配置已经完了,下面创建maven项目。 ## **新建maven项目** 登录jenkins,新建一个项目,选择"构建一个maven项目" ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a07554e399b24ba895514d31ffc3932a.jpeg) ### **General配置** 勾选丢弃久的构建,填写保存构建的天数和最大个数,这个数可以按自己的需求配置。比如"保存构建的天数"设置为5,表示保存5天内的构建记录,更早的构建记录就会被丢弃。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fce555e3ae884824a19c9b52a3a8075a.jpeg) ### **源码管理** 将项目的gitlab仓库地址复制到URL输入框中,选择Credentials,也就是上面创建的全局密钥,填写发布分支。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/18b1ab159eb74516a4a60ab6266ca6b7.jpeg) ### **构建触发器** 勾选Build whenever a SNAPSHOT dependency is built ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e27f4de4e8bc4d54a03873c85f9bafdd.jpeg) ### **构建环境** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a7628e3935c64b0b89c42a9cf5f4b856.jpeg) ### **Build** Root POM填写pom.xml Goals and options 填写clean install -Dmaven.test.skip=true -Ptest,意思是排除测试的包内容。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f873ee40e12e481d9d352ee9c7c41b3b.jpeg) ### **Post Steps** 方式1: 这个配置是为了构建成功后,自动执行脚本运行jar包,达到自动发布的目的。 nohup java -Dfile.encoding=utf-8 -jar /home/ftpuser/.jenkins/workspace/admin/target/admin-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev \> /dev/null 2\>\&1 \& 注意我们这里采用的是"nohup ... \> /dev/null 2\>\&1 \&"命令,它的作用是jenkins执行完shell脚本后结束构建任务,且让java进程后台进行。否则jenkins的job无法结束,一直处于构建状态。到此项目配置完了,就可以开始构建项目了。 方式2: Command部分 #!/bin/bash cd /home/ftpuser/deploy ./stop.sh ./replace.sh echo "Execute shell Finish" BUILD_ID=dontKillMe nohup /home/ftpuser/deploy/start.sh \& 在/home/ftpuser/deploy目录下增加stop.sh、start.sh、replace.sh三个脚本文件。 stop.sh echo "\>\>\>\>\>\>\>\>Stopping vpclub-wx-admin\>\>\>\>\>\>\>\>\>\>\>\>\>" pid=`ps -ef | grep vpclub-wx-admin-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'` if \[ -n "$pid"

then

echo "kill -9 的pid:" $pid

kill -9 $pid

fi

replace.sh

echo ">>>>>>>>Copy vpclub-wx-admin>>>>>>>>>>>>>"

cp /home/ftpuser/.jenkins/workspace/vpclub-wx-admin/target/vpclub-wx-admin-0.0.1-SNAPSHOT.jar /home/ftpuser/deploy

startup.sh

echo ">>>>>>>>Start vpclub-wx-admin>>>>>>>>>>>>>"

java -jar /home/ftpuser/deploy/vpclub-wx-admin-0.0.1-SNAPSHOT.jar

安全配置

安全配置,新增用户,给用户配置权限。

新建用户

系统管理->管理用户->新建用户。

系统管理->全局安全配置->授权策略->项目矩阵授权策略。点击"Add user group"添加用户并勾选相应的权限。一般开发人员给read、view与build的权限就可以,这个可以根据需求配置。

启用项目安全

启用项目安全的目的是,让指定的人可以操作相应的项目。点击已创建好的maven项目->配置,General 标签下,勾选"启用项目安全"并给该项目配置并授权用户操作。

jenkins还有很多强大的功能,也是springboot推荐使用的自动化部署工具。到此jenkins在centos7上的安装,以及与gitlab的配置介绍完了。

相关推荐
chenglin0164 小时前
ES_预处理
大数据·elasticsearch·jenkins
IT成长日记6 小时前
【自动化运维神器Ansible】Playbook调用Role详解:从入门到精通
运维·自动化·ansible·playbook·role
skywalk81636 小时前
设计简洁的Ansible:目前非常流行的开源配置管理和自动化工具
开源·自动化·ansible
2401_831501736 小时前
Linux之Ansible自动化运维(二)
运维·自动化·ansible
chenglin0166 小时前
ES_文档
大数据·elasticsearch·jenkins
画中有画9 小时前
使用AI来实现拼多多自动化运营脚本
运维·人工智能·自动化·ai编程·rpa·自动化脚本
qq_5260991310 小时前
六口网卡:工业级千兆以太网控制器,赋能智能制造与边缘计算
图像处理·自动化
王者鳜錸19 小时前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
Littlehero_12121 小时前
关于删除gitlab中的分支
gitlab