RHCE

RHCE.net
红帽RHCE认证网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

基于Java开发的一种持续集成工具,我是只使用2台机器

2023年3月22日 87点热度

一.基础知识GitLab:是一个基于Git实现的在线代码库房托管软件,是拿来提供代码托管的。我们可以用在企业内部网路搭建私服。jenkins:基于Java开发的一种持续集成工具,用于监控持续重复的工作。在提供一个开放易用的软件平台,使软件的持续集成弄成可能。maven:项目管理工具,在这儿我们可以执行maven命令来帮我们打包jdk:Java语言的软件开发工具包tomcat:轻量级应用服务器git:版本控制器二.整合目的

在日常开发中,原先的流程是须要把项目从gitlab上复制到本地,再打成war包,之后布署到tomcat服务器上运行。开发项目的过程中会时常布署测试环境来验证,重复以上操作会变得很繁杂,浪费大量时间,所以使用jenkins来实现持续集成,对整个开发项目的过程有着重要的战略意义。我们开发软件为了哪些?对,简化步骤,提升开发效率,节约时间。

三:流程示意图

请叫我灵魂画师~

四:软件安装

前提:此次整合,我是只使用2台机器,服务器A装jenkins,jdk,maven,服务器B装gitlab和tomcat,虽然应当是要个服务器C装tomcat,这样思路就更清楚了,具体情况诸位按照实际需求来定哈。

1)B服务器上gitLab安装

1.安装依赖

sudo yum install curl policycoreutils openssh-server openssh-clients policycoreutils-python
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

注意:sudosystemctlstartpostfix假如报错,如下边所示

Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details. 

解决办法:更改vi/etc/postfix/main.cf的设置

inet_protocols=all

inet_interfaces=all

2.yum配置镜像加速

我推荐复旦学院镜像源:

操作如下:vi/etc/yum.repos.d/gitlab_gitlab-ce.repo

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

3.更新本地云缓存`

sudo yum makecache`

4.安装`

  sudo yum install gitlab-ce

5.更改配置项

默认是80端口,假如想要更改端标语的话,打开gitlab.rb文件,更改如下:

sudovim/etc/gitlab/gitlab.rb

#修改配置项
external_url 'http://:'
unicorn['port'] = 
prometheus['listen_address'] = 'localhost:'

sudogitlab-ctlreconfigure#重新配置服务;

6.重启gitlab

gitlab-ctl restart

打开:,会弹出一个设置初始密码的界面,根据要求输入初始密码,都会跳转到登入页面。gitlab管理员用户名为root。

我那边是自己创建了用户,右图是注册,完成后登录。

7.服务器A上配置免密码登入

顾客端命令行生成ssh

ssh-keygen -t rsa

它会生成私钥id_rsa.pub和公钥id_rsa,储存在.ssh目录下。复制私钥到Gitlab的用户设置中的SSHKeys中,点击保存。操作如右图所示

有人问这样做的目的是哪些?问得好!这样我们才能构建服务器A跟gitLab的安全联接,我们就可以通过git将gitlab库房里的代码拉出来或则推送到库房。

2)A服务器上安装jdk

centOS安装jdk有三种,随意选一种都可以,网上一大堆。我选中的是自动解压安装包。

卸载系统自带的jdk(此步骤构建在centOS7自带jdk1.8的情况,可以跳过,也可以自己安装想要的jdk)

查看当前系统jdk的版本:java-version。(如右图的话则代表自带,继续下边步骤)

列出匹配已安装的java的软件包:

yum list installed | grep java

卸载安装的jdk

yum -y remove java-1.7.0-openjdk*  
yum -y remove java-1.8.0-openjdk*

当结果出现了完毕!,就表示卸载成功。

输入java-version查看,验证是否卸载成功。

2.下载jdk1.8安装包

jdk下载地址:

下载jdk-8u152-linux-x64.tar.gz(按照自己的系统位数选择对应的包)

之后使用Xftp将下载好的jdk-8u152-linux-x64.tar.gz上传到CentOs起来,我选择的是在usr下创建一个文件夹来专门放压缩包。

3.在user/local目录下新建java文件夹

# cd /usr/local/
# mkdir java
# cd java

4.解压

进到压缩包所在的目录,将jdk-8u152-linux-x64.tar.gz解压到我所创建的java文件中。

tar -zxvf jdk-8u152-linux-x64.tar.gz -C /usr/local/java

5.配置环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_212
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

注释:

JAVA_HOME指明JDK安装路径,就是昨晚安装时所选择的路径,此路径下包括lib,bin,jre等文件夹(tomcat,Eclipse的运行都须要借助此变量)。

PATH促使系统可以在任何路径下辨识java命令

非常注意:环境变量值的结尾没有任何符号,不同值之间用:隔开(windows中用;)

6.使配置文件生效

source /etc/profile

7.测试配置是否成功

java -version

3)Maven安装

1.获取安装包:镜像。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

2.提早创建好maven文件夹,解压tar包至maven文件夹

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven

3.配置环境变量

更改profile文件

vim/etc/profile 

export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin

更改完重载这个文件使文件立刻生效,否则重启计算机即可生效。

source/etc/profile

4.验证版本

mvn  -v 

显示如下则代表成功

Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven/apache-maven-3.5.4
Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_212/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

4)安装jenkins

1.安装

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins

2.关掉防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

3.配置文件

 vi /etc/sysconfig/jenkins
 #修改下面内容
 JENKINS_USER="root"
 ...
 端口设置成为被占用的
 JENKINS_PORT="xxxx"

4.启动jenkins

systemctl daemon-reload
systemctl start jenkins
systemctl status jenkins

5)安装git

1.获取源码包

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz

2.git建立时须要的环境

yum groupinstall "Development Tools"

3.安装各类devel包

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 

openssh-clients

4.编译并安装,同时输出执行路径到环境变量中

make prefix=/usr/local/git all 
make prefix=/usr/local/git install 
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc

5.验证能够正常运行:

 git --version

五:详尽步骤

1.解锁jenkins

根据提示将代码复制到下边,之后点继续。

2.点击左侧的安装推荐的插件

好吧,等了好几分钟才装完中国linux,耐心等待吧。

3.创建管理员用户,实例配置

注意!安装配置jenkins的时侯,会出现插件安装失败的情况。

缘由:升级站点问题,站点坐落加拿大,访问上去比较费力。

解决方法:更换为国外的jenkins镜像就可以了。

操作:系统管理>>管理插件>>中级

将[升级站点]更换为

随即递交即可解决,如右图。

redhat安装git服务器_redhat安装telnet服务_谷歌安装器服务框架google

若果是告诉你须要升级jenkins就能搞定,那就在线升级jenkins。

yum安装的升级方式

1、servicejenkinsstop

2、yumupdatejenkins

3、servicejenkinsstart

升级完就应当没问题了。

4.配置jdk,maven,git

首先我们要配置jenkins编译所须要的jdk,maven,顺便把git也配置了。最后点击保存。

注意:jdkhome和mavenhome可以输入vim/etc/profile看见,直接复制粘贴就行。git的话输入whereisgit就可以查到了,通常是git/bin/git这个结尾的。

5.在jenkins上系统设置gitlab和git

安装Gitlab插件,GitlabHook插件,Git插件。打开设置,选择插件管理。点击可选插件,之后在搜索框里输入就可以了,搜索到后点击直接安装。没搞懂的可以看我第六那种步骤。

安装完以后,点击系统设置。

找到Gitlab这个配置。

那边须要添加账簿,我选用的类型是gitlabAPItoken。

从那里获取呢?打开gitlab,用户设置上面有个访问令牌选项。

成功后会如下显示。之后复制这个令牌,保存在你自己晓得的地方,不保存就之后就看不到了。

接着把刚刚复制的访问令牌粘贴到添加的账簿哪里去,点击添加redhat安装git服务器,之后后面的下拉框里选择你刚刚添加的账簿。

配置完gitlab后要配置git,2个选项一填就可以了,用户名和邮箱。好了,配置结束。

6.在jenkins上创建一个maven项目

点击新建Item,或则开始创建一个新任务,之后选择新建maven项目。好多人说没有,例如右图。

那是由于没有安装一个Maven插件。在可选插件里输入MavenIntegration,点击安装,不好意思我安装的比较快,没来得及截图。早已在我安装列表里了。

返回到主页面,点击新建,任务名子随意起,选择建立一个maven项目,最后点击确定。

7.配置源码管理

这儿我们拿来让jenkins联接gitlab库房的。

首先打开gitlab,新建一个库房。这儿我喜欢叫库房,但它翻译成项目。用过github的同事应当喜欢叫库房吧。随便啦,逼迫症。

写库房名子,设置私有的,描述可写可不写,之后创建。

库房列表中就有了你新建的库房,点击它步入库房。

复制库房url。

注意:一开始这个库房是空的,我那边是刚刚上传了个helloworld的maven项目,拿来测试下git能不能上传代码到这个库房,你们试下,前面jenkins配置须要这库房主分支不能为空。

我是自己windows上安装了git,通过配置idea中的git来push代码,其实也须要生成ssh锁匙在gitlab上添加sshkey。(后面步骤一开始我生成的ssh锁匙是在我安装jenkins的那台服务器A上操作的,和那边的是两码事)。不懂的同学可以百度下window安装git和生成ssh锁匙。

总结下:由于我们平常写代码是在windows下的idea里进行pull和push的,所以那边生成ssh锁匙并配置是为了能让我们在idea上传代码push到服务器B的gitlab里。而后面那种在jenkins服务器上生成ssh锁匙并配置是为了让服务器A能和服务器B的gitlab安全联接,也就是可以pull和push。

切回jenkins,在源码管理里,粘贴url起来,第二个是添加分支,点击添加,类型选择用户名和密码,输入你gitlab用户名和密码。虽然类型可以选择ssh密钥验证,gitlab访问令牌啊哪些的,看你喜欢。

添加完证书后选择证书,假若不报白色的字就说明ok,报的话说明错误。

注意:第三步中,jenkinsjob默认对master分支进行完善,你也可以自定义分支。这要求你的Gitlab代码库房中要存在这个分支,通常来说,就是要向代码库房递交一次修改,请自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,手动建立时会出错),这也就是前面先试试上传代码到gitlab是否成功的诱因啦。

8.配置完善触发器

如右图所示操作。我选了当一个push到gitlab的时侯才会手动建立,使用钩子webhook,建立URL是jenkins上创建的那种maven项目。记住这个url,旁边会用到!

点击中级,出现右图所示。

生成的口令虽然就是webhook的安全令牌,等会配置gitlab的时侯要用到。

打开gitlab,配置钩子。点击设置,之后集成。把里面记出来的jenkins项目url和webhook安全令牌写进去。

取消掉ssl验证,之后点击addwebhook。

点击test中的第一个选项pushevents模拟push,瞧瞧是否成功。

右图表示成功,假如报错自己上网查下为什么报错,由于局域网的问题,须要在gitlab上登录管理员帐号,配置上面有个选项就是说容许webhook发送本地指令之类的。

9.配置build命令

使用maven命令来打包。

10.PostSteps

暂时不用写,注意下边提及的模块六检验成果中开头提及的东西就行,再依照实际情况来定。

11.建立后操作

我使用的是tomcat热布署。首先要安装Deploytocontainer插件!!!linux 分区,该功能是“将成功编译的War/Jar包布署到远程的应用服务器上。

我们先来配置tomcat远程布署帐号,在tomcat目录下conf文件内tomcat-users.xml文件降低以下配置。






在conf文件中的context.xml里context标签中改成,这个是为了手动删掉之前旧版本的war包。

打开tomcat解压目录找到webapps/manager/META-INF里的context.xml,须要注释掉这个Value节点。

注意:配置完后验证是否生效,启动tomcat后点击ManagerApp。输入里面配置的用户名密码瞧瞧能不能步入。

选择Deploywar/eartoacontainer,操作如下。由于jenkins从git上拉出来代码但是打了war在jenkins的target目录下,所以如右图所示。

好了我们可以开始正片了!

##六:检验成果

注意!!!!!!!!!!!!!!!!!!!:

那边先讲下,我是构建在tomcat早已启动的情况下操作的,所以我没有写那种第10步。

commitpush,手动建立,成功。

成功了。

这么有些人想要在tomcat没有启动的情况下如何办呢?那肯定是要写脚本来启动tomcat。具体看模块七泣血坑!

##七:泣血坑

失败的事例1。

我在建立后操作里使用Deploywar/eartoacontainer,前面的步骤都有显示,也就是tomcat热布署,之后又在PostSteps里写了脚本,就是关掉tomcat和开启tomcat。并且建立会报错。

参考了这篇文章,然而没哪些用,仍然建立报错。报错跟下边链接里的一样,我就不贴下来了。

后来我看了下,tomcat热布署用tomcatmanager原本就有好多漏洞,所以我决定放弃热布署。

失败的事例2。

放弃热布署,改用SendbuildartifactsoverSSH,建立成功,tomcat启动失败,那个我也不晓得如何解决。我看网上是说在执行的脚本上加一句exportBUILD_ID=dontkillme,由于jenkins是会杀掉tomcat进程的。并且还是没用!

成功的反例。

我们须要执行shell脚本,先关掉tomcat,之后启动tomcat。注意,那边tomcat是装在服务器B的,所以先要实现服务器A免登入服务器B。

方式:先在服务器B的/root/.ssh下创建文件authorized_keys,之后把服务器A的生成的ssh私钥(id_rsa.pub)复制到哪个文件上。

注意authorized_keys文件的权限必须是600,假如权限不对会影响登陆。所以最后输入指令:chmod600authorized_keys就可以了。注意空格!

如右图在postSteps中输入shell命令。意思是ssh联接服务器B,执行B服务器(192.168.31.222)上的restart.sh。

#!/bin/bash
echo "执行脚本开始"
TOMCAT_HOME="/root/app/tomcat8.5.42"
ssh root@192.168.31.222  > /dev/null 2>&1 << eeooff
${TOMCAT_HOME}/bin/restart.sh
eeooff
echo done!
echo "执行脚本结束"

右图是restart.sh的脚本内容,这个文件是置于tomcat那台服务器上的,也就是服务器B。

#!/bin/bash
# export BUILD_ID=dontkillme
function shutdown_tomcat () {
    #tomcat_id=`jps | grep Bootstrap | awk '{print $1}'`
tomcat_id=`lsof -i:8765 | awk 'NR==2''{print $2}'`
if [ ! $tomcat_id ];then
echo "tomcat process in ${ip} is not exist."
else
echo "shoutdown ${ip} tomcat"
/bin/kill -9 $tomcat_id
fi
}
function start_tomcat () {
echo "start $ip tomcat"
/bin/sh /root/app/tomcat8.5.42/bin/catalina.sh start
/root/app/jdk1.8.0/bin/jps
}
function restart_tomcat () {
shutdown_tomcat
start_tomcat
}
restart_tomcat
echo "脚本执行完毕"

接着须要安装下PublishoverSSH这个插件,之后在全局设置里设置PublishoverSSH,密码是你jenkins所在的服务器生成ssh锁匙时设置的,没有设置就不填,Key里填的是你的公钥。

那边填的是ssh联接的主机IP,名子随意取,帐号名称就写root,路径写/就行,由于这是全局配置,下边每位项目都有路径配置,会重合一起,注意拼接。填完后测试下联接redhat安装git服务器,成功就ok。

接着回到jenkins项目的配置里,找到建立后操作,把上面步骤中配置好的Deploywar/eartoacontainer删除,我们不用tomcat热布署。我们使用SendbuildartifactsoverSSH。配置如下。

这样就可以了,点击保存,之后看下建立疗效吧。脚本执行成功了,这样tomcat开启了。

大功告成。虽然方式有好多种,热布署肯定是行得通的,并且没做下来。感谢你们阅读。有哪些错误帮我强调来,我们一起讨论。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: gitlab git命令 jenkins jenkins使用 持续集成
最后更新:2023年3月22日

红帽RHCE认证网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

红帽RHCE认证网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
firewalld防火墙与iptables的区别Firewalld/iptables/etc redhat安装 Redhat安装指南,零基础也能搞定! 初学Linux选哪个版本好的Linux操作系统比较好? 哪里能抓到红帽哥布林?神秘生物捕获技巧大揭秘! RedHat贡献的一种软件包管理程序(RedHatPackage) RedHat网络配置实战,轻松掌握! RedHat Yum注册,高效管理软件包! 为什么Linux和Unix系统下安装反病毒保护的软件? redhat linux as 深入解析RedHat Linux AS,9个方面全揭秘 linux系统软件安装程序复杂的两种形式安装包思路! 小红帽圣斗士:二次元IP成功打造 如何在Ubuntu和其他DebianLinux发行版上安装RPM软件包 红帽哥布林:小队传奇 redhat 安装软件包 德国RedHatEnterpriseLinux和SUSELinuxEnterpriseServer 南京的几家红帽认证相关的培训机构的介绍: redhat linux 64 64位RedHat Linux:特点与优势 红帽表情包 孔子、华佗、张仲景等古代先贤以漫画版形象现身 学习RHCA认证必备视频教程,轻松掌握Linux高级管理! RedHat(红帽)开源解决方案供应商标准普尔500指数成员 RedHat Linux5.5下载:地址及入手指南
简便高效:RedHat yum源系统最佳实践firewalld防火墙与iptables的区别Firewalld/iptables/etcVM12中安装RedHatRHEL7.2系统的详细步骤(图文)Linux添加Swap分区:快速实现优化红帽教育联手美国红帽公司组织RHCA全国巡讲会成功召开redhat linux培训 RedHat Linux培训的重要性与必要性——十大分析苏州思科网络工程师培训加考试费用一共需要多少钱使用Redhat Yum本地源的企业级Linux操作系统如何为你的CentOS服务器来设置简单的防火墙?轻松学会红帽7.0Linux命令,高效掌握Linux技能地铁逃生回归,biubiu免费加速畅玩!(免费畅玩海内外精品手游)Linux RedHat 90下载安装全攻略:9个注意事项解析2016年红帽认证工程师RHCA英文介绍下载红帽Linux系统,轻松入门!红帽子鱼头烂了怎么办?保护自己小技巧红帽认证工程师RHCE124系统管理I操作系统的安装管理redhat中文 红帽中文:中国市场发展历程、特点与影响中国制造业向何处走:构建“零信任”架构红帽6挂载磁盘 Linux服务器的操作是一个手熟的的过程红帽7系统软件下载安装技巧,轻松掌握
成为RHCE认证工程师,掌握Linux系统管理技能!西安RHCE培训,提升职场竞争力! 2016年红帽RHCE认证考什么,如何学习红帽认证? 快速安装redhat yum包,让Linux更高效! 无防火墙给予完全访问权并不做任何安全检查 敏捷开发方法与DevOps操作帮助企业达成持续开发的目标 红帽大中华区解决方案架构部高级总监王慧慧谈容器原生虚拟化 RedHatLinux或centos中自动运行程序 探秘蝙蝠侠、红帽和火魔——超级英雄、开源软件与社区的联系 使用ISO映像来安装RedHatEnterpriseLinux,而你是这样的 关于Linux安装软件的套路,你知道多少? (蒙古记忆)阜新市历史悠久的少数民族割据政权 “血红帽”下的芷菱馆:一个女子的传奇 IBM官方宣布收购开源软件公司红帽(RedHat)! 红帽Linux主题:领先企业级操作系统全球首选 如何报名红帽rhca考试?考试费用多少?红帽认证 学习RHCE必备!昆明RHCE培训课程内容详解 2022金华排名前十红帽认证培训推荐名单汇总 《血红帽》评测:小镇少女与狼人之间的情感纠葛 Linux或称GNU发行版本的特点及特点使用人群数量 redhat linux as 5 深入探究:RedHat Linux AS5操作系统
标签聚合
操作 软件 红帽认证 rhce认证 redhat 小红帽 rhce linux系统 linux服务器 云计算
书籍
课程
技术群
技术干货大合集↓
  • 2023年6月 / 6篇
  • 2023年5月 / 124篇
  • 2023年4月 / 118篇
  • 2023年3月 / 100篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源 | Linux系统

COPYRIGHT © 2023 RHCE.net ALL RIGHTS RESERVED.

京ICP备16058923号-2