CentOS安装jenkins并集成GitLab自动部署
- 前言
- 一、检查当前服务器的配置情况以及安装环境
- 1、检查服务器的内存和磁盘
- 2、检查是否安装jdk
- 3、检查是否安装maven
- 4、检查是否安装git
- 二、安装环境
- 1、安装jdk
- (1)下载jdk包
- (2)安装jdk并配置环境变量
- 2、安装maven
- (1)下载maven包
- (2)配置环境变量
- 3、安装Git
- (1)下载Git包
- (2)编译配置Git环境变量
- 三、安装jenkins
- 1、下载Jenkins的war包
- 2、配置Jenkins环境和插件,以及项目的持续集成构建(这里以GitLab为例)
- (1)进入Jenkins页面,登陆
- (2)配置maven
- (3)配置jdk
- (4)配置git
- (5)配置GitLab项目,持续集成
前言
因为公司指定的是jdk8进行开发的,所以这里是以jdk8+jenkins的war包(jenkins 2.346.1版本)形式进行讲解的(高版本的jdk安装应该更顺滑),如果是rpm方式安装的朋友可以略过。
war包的下载地址:https://mirrors.jenkins.io/war-stable/2.346.1 war包的各个版本列表:https://mirrors.jenkins.io/war-stable
一、检查当前服务器的配置情况以及安装环境
这里只是检查是否有这些环境,没有也没关系,下文会有详细的安装教程(也方便我记性不好的时候查看)。
1、检查服务器的内存和磁盘
- jenkins官方给出的服务器基础要求是(官方地址):
最低推荐配置:
256MB可用内存
1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)为小团队推荐的硬件配置:
1GB+可用内存
50 GB+ 可用磁盘空间
在安装之前,查看服务器是否支持,避免内存占用100%。
- 查看内存和磁盘
## 查看可用内存:可以使用 free 命令来查看当前服务器的内存使用情况
## 显示内存的详细信息,包括总内存、已使用内存、空闲内存等
free -h
## 查看磁盘空间:可以使用 df 命令来查看当前服务器上各个挂载点的磁盘空间使用情况。
## 包括文件系统、总容量、已使用空间、可用空间等
df -h
2、检查是否安装jdk
jdk是Java运行基础,得保证安装了jdk
## 查看jdk版本
java -version
出现如下信息,表示安装了,如果不存在,下方有详细安装教程。
## 查看安装的jdk的位置
whereis java
这个就是jdk安装的位置
3、检查是否安装maven
## 检查Maven版本
mvn -v
出现如上内容,就表示maven环境存在,不用重复安装,如果不存在,按下方方式安装就好。
4、检查是否安装git
## 查看git版本
git --version
## 查看git在哪里
whereis git
如图就是git的安装位置,这个需要最后配置在jenkins的环境里。
二、安装环境
1、安装jdk
(1)下载jdk包
在官网上找到想要安装的版本,下载jdk-8u381-linux-x64.tar.gz包
oracle jdk下载地址:https://www.oracle.com/java/technologies/downloads/#java8 openjdk 地址(higher jdk8):https://jdk.java.net/archive/ openjdk 地址(jdk8):https://jdk.java.net/java-se-ri/8-MR5
(2)安装jdk并配置环境变量
将下载下来的包上传到服务器上(Windows可使用FinalShell界面工具,MacOS可使用royalTSX界面工具)
## 将包解压到指定目录 /java8(如果不存在,需创建文件夹)
tar -zxvf jdk-8u381-linux-x64.tar.gz -C /java8
## 查看文件是否上传成功
ll /java8/
## 配置环境变量
vim /etc/profile
## 在/etv/profile的最后一行添加
export JAVA_HOME=/jdk8/jdk1.8.0_381
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
## 重载配置文件
source /etc/profile
## 检查是否配置成功,出现版本信息即为成功
java -version
2、安装maven
(1)下载maven包
maven下载地址:https://maven.apache.org/download.cgi 各个版本下载地址:http://archive.apache.org/dist/maven/maven-3/
我这里下载的是apache-maven-3.9.4版本
(2)配置环境变量
将下载好的apache-maven-3.9.4-bin.tar.gz解压到指定位置,我这里解压到/usr/local目录
## 解压到/usr/local目录
tar -zxvf jdk-8u381-linux-x64.tar.gz -C /usr/local
## 查看解压后的文件
ll /usr/local
配置maven环境变量
## 配置环境变量
vim /etc/profile
## 在/etv/profile的最后一行添加,保存退出
export MAVEN_HOME=/usr/local/apache-maven-3.9.4
export PATH=$MAVEN_HOME/bin:$PATH
## 重载配置文件
source /etc/profile
## 检查是否配置成功,出现maven版本信息即为成功
mvn-v
3、安装Git
官方安装教程:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
(1)下载Git包
官方下载地址:https://git-scm.com/download/ 各个版本地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
选择自己想要的版本下载即可,这里以git-2.34.1.tar.gz为例。
(2)编译配置Git环境变量
将下载好的git-2.34.1.tar.gz包解压到指定位置。
## 解压到/usr/local目录
tar -zxvf git-2.34.1.tar.gz -C /usr/local/git
## 查看解压后的git文件夹
ll /usr/local/git
## 进入解压后的文件夹git-2.34.1
cd git-2.34.1
## 配置git安装路径,编译并且安装
make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
## 将git指令添加到bash中,配置环境变量
vim /etc/profile
编辑/etc/profile文件
## 在最后一行加入
export PATH=$PATH:/usr/local/git/bin
## 重载配置文件
source /etc/profile
## 查看git版本,验证是否安装成功
git --version
## 可以通过whereis git查看git的位置,方便下文的Jenkins环境配置
whereis git
三、安装jenkins
1、下载Jenkins的war包
官方下载地址:https://www.jenkins.io/zh/download/ 各个版本Jenkins下载地址:https://mirrors.jenkins.io/war-stable/
一般选择稳定版,因为我们使用的是jdk8环境,所以只能选择2.346及其以下版本的。我之前安装了一个2.1xxx版本的,下载插件的时候会提示版本过低,所以建议使用2.346版本,我之后改为了2.346.1版本。
将下载好的jenkins.war包,放在服务器上,我这里是放在/user/local/jenkins目录下。
为了减少之后启动,写了一个启动脚本start.sh,放在同级目录下。
脚本编写如下:
## 进入war包目录
cd /usr/local/jenkins
## 创建启动脚本文件start.sh
touch start.sh
## 给脚本赋予操作权限
chomd 777 start.sh
## 编辑脚本
vim start.sh
进入编辑界面,填写如下内容:
## war包名称
JAR_NAME="jenkins.war"
## 查找是否有运行的jenkins.war 返回pid
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
## 输出的日志位置 如果报文件不存在,就在jenkins目录下touch nohup.out,就ok了
LOG_PATH=/usr/local/jenkins/nohup.out
## 如果pid不存在,说明没有正在运行的jenkins.war,直接启动
if [ -z $pid ]; then
## 后台运行 jenkins.war --httpPort指定端口8080 ,如果端口被占用了,可指定其他端口
## 因为我使用了nginx代理端口,所以使用 --prefix 指定了请求前缀为/jenkins 这个需要在nginx中配置相同前缀/jenkins,就可以外网访问jenkins了
## 如果没有使用反向代理,就不需要添加 --prefix="/jenkins" 这一截
nohup java -jar $JAR_NAME --httpPort=8080 --prefix="/jenkins" > $LOG_PATH 2>&1 &
## 查看启动后的pid
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
echo "Service ${JAR_NAME} is started!pid=${pid}"
tail -f ${LOG_PATH}
## 如果pid存在,说明有正在运行的jenkins.war,需要先杀掉这个进程,再重新启动jenkins.war
else
## 杀掉已有进程
kill -9 $pid
## 重新运行jenkins.war
nohup java -jar $JAR_NAME --httpPort=8080 --prefix="/jenkins" > $LOG_PATH 2>&1 &
echo "Service ${JAR_NAME} is restarted!pid=${pid}"
tail -f ${LOG_PATH}
fi
另外:如果以后相对Jenkins进行升级,可以下载高版本的Jenkins的包直接替换掉当前这个jenkins.war。
2、配置Jenkins环境和插件,以及项目的持续集成构建(这里以GitLab为例)
(1)进入Jenkins页面,登陆
如果是本地安装,则直接访问 http://localhost:8080,即可进入页面;
如果是使用域名外网访问,则访问nginx配置的前缀对应的 http:域名/jenkins
推荐安装的插件比较多,我选择的是选择插件来安装,选择git对应的几个插件(Deploy to container Plugin、Git Parameter Plug-In、Git plugin、GIT server Plugin、GitHub Authentication plugin、GitHub API Plugin、GitHub Organization Folder Plugin、GitHub plugin等),以及Maven Integration。
安装的时候中途可能会出现插件下载失败,可能是因为版本不对应(有点插件影响不大,可以先不管它),等到都下载完毕(不管成功还是失败),可以先按照以下流程安装配置服务,能正常运行就表示ok啦。
如果进入页面没有安装,之后可以进入选项:Manage Jenkins —> Manage Plugin —> 可选插件 —>搜索maven—>选择安装 来选择需要安装的插件。
这里推荐安装Git Parameter,用于指定Git分支。
插件下载安装完成之后,需要重启jenkins才能生效。
(2)配置maven
进入选项:Manage Jenkins —> Global Tool Configuration
填写上文配置好的maven配置文件,以及maven的位置
(3)配置jdk
在图中位置配置好对应jdk位置
(4)配置git
在图中位置配置git的安装位置
(5)配置GitLab项目,持续集成
- 在Jenkins首页,点击New Item
- 新建一个maven项目,项目命名根据项目需求或者个人喜好
- 选择Git
- 配置用户名、密码,配置打包分支,在下方repositories配置项目的git地址URL
- 配置触发器,此处输入的是5个*号空格隔开,表示只要有代码提交则进行构建。
- 配置启动前执行脚本
#停止正在运行的项目,把test改成目标jar
echo "检查服务是否运行"
JAR_NAME="test.jar"
## 查找是否有运行的jenkins.war 返回pid
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
if [ -z "$pid" ];
then
echo "[ not find pid ]"
else
echo "find result: $pid "
kill -9 $pid
fi
配置打包跳过测试,clean package -Dmaven.test.skip=true
- 配置构建成功之后,执行脚本
JAR_NAME="test.jar"
echo "授予权限"
chmod 777 $JAR_NAME
echo "运行jar包"
sleep 1s
BUILD_ID=dontKillMe nohup java -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M -jar $JAR_NAME
## 如果需要运行多个模块,可以配置多个jar包脚本
配置完成之后,回到首页执行第一次构建,第一次构建失败,是由于脚本中的jar包路径不一致造成。可以在第一次构建完成之后,查看构建日志里的jar包路径,配置在脚本中的JAR_NAME位置。
再次执行构建,即可正常发版。以后每次提交新代码到指定分支,不需要自己手动打包,jenkins会帮助我们自动构建。