环境:centos7.3
IP:192.168.2.109
搭建gitlab官方推荐内存至少4G,测试过内存小了确实带不动,如果搭这一套在服务器上的话个人觉得8G以上最好。
防火墙、selinux均已关闭
一.环境安装
1. 将下载好的jdk+maven+nodejs上传到服务器上,并解压安装
下载jdk网址如下:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
wget https://nodejs.org/dist/v12.9.0/node-v12.9.0-linux-x64.tar.gz
2.创建解压目录并解压
mkdir -pv /usr/java
tar xvf jdk-8u221-linux-x64.tar.gz -C /usr/java/
tar xvf apache-maven-3.6.0-bin.tar.gz -C /usr/java
tar xvf node-v12.9.0-linux-x64.tar.gz -C /usr/java/
3.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_221
export maven_HOME=/usr/java/apache-maven-3.6.0
export nodejs_HOME=/usr/java/node-v12.9.0-linux-x64
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin:$maven_HOME/bin:$nodejs_HOME/bin:
source /etc/profile
检查一下
# java -version
# javac -version
# mvn -v
# node -v
cnpm 淘宝镜像,主要是打包的工具(因为搭jenkins是参考的朋友给我的笔记,有些地方自己会稍作修改,而我还不了解怎么打包,安装了这个以后也不知道怎么使用,所以这一步暂时可以省略,安装这个非常的慢,我是开了单独开了个窗口让它慢慢装去了。。)
# yum -y install npm
# npm install -g cnpm --registry=https://registry.npm.taobao.org
# npm -v
# cnpm -v
二.安装git客户端及部署gitlab
gitlab搭建 参照以前的搭建方式
git的话可以直接yum安装,默认的yum源中, git的版本就是1.X,到目前为止,这个版本应该算是比较老的版本了,也可以按照下面的方式安装git2.X版本。
1.配置base源和epel源
vim /etc/yum.repos.d/aliBase.repo
[aliBase]
name=aliBase
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever
vim /etc/yum.repos.d/aliEpel.repo
[aliEpel]
name=aliEpel
baseurl=https://mirrors.aliyun.com/epel/$releasever\Server/$basearch/
enabled=1
gpgcheck=0
2.下载安装包、配置ius仓库
wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-15.ius.centos7.noarch.rpm
yum install ius-release-1.0-15.ius.centos7.noarch.rpm
通过ius仓库安装git2.X版本
yum install -y git2u
3.设置用户名和邮箱
git config --global user.name "tanxiao"
git config --global user.email "tanxiao@qq.com"
随时可以使用如下命令,查看自己的用户名和邮箱设置
git config --global --list
查看版本
# git --version
4.制作ssh的git秘钥,并配置公钥。
ssh-keygen -t rsa -C "tanxiao@qq.com"
连续按三次回车,生成id_rsa和id_rsa.pub文件夹。
5.查看公钥文件内容并复制公钥到gitlab配置ssh key。
cd /root/.ssh/&&cat id_rsa.pub
可以测试一下
# ssh -T git@192.168.2.109
6.创建gitlab的api访问令牌
保存好制作的令牌,待会要复制到jenkins上制作gitlab的api凭证
三、安装jenkins
下载jenkins.war包
# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.191/jenkins.war
1.安装jenkins
方法一:将下载好的jenkins.war包移动到tomcat的webapps目录下,用tomcat启动。
方法二:使用nohup java -jar jenkins.war --httpPort=9999 & 在后台运行。
这里我使用的是方法二启动jenkins服务,并指定端口为:9999放后台运行。
# mv jenkins.war /home/&&cd /home/
# nohup java -jar jenkins.war --httpPort=9999 &
通过http://服务器ip:9999来访问
稍等一会~
按提示走
安装推荐的插件
选择推荐的插件后,会自动新手安装。(休息会吧,这个比较慢~)
部分插件安装失败了,先记录下是啥插件没装,然后继续,待会回头再来装其余的插件
创建一个属于自己的管理员用户
配置jenkins的实例访问网址,并保存,这里是jenkins默认的访问网址,可以自定义。
2.安装jenkins自动部署的相关插件如下:
需要安装的插件:gitlab 、Gitlab Authentication 、Gitlab Hook 、Publish Over SSH 、Maven lntegration 、Build Authorization Token Root 、 nodejs。
点击系统管理
点击插件管理
在过滤栏搜索上述插件,顺带还有先前安装失败的一些插件再装一次
安装后重启jenkins
又是一阵耐心等待,如果在web端一直安装失败的插件,可以服务器端直接安装(是真的慢,我应该直接下好插件包去服务器端安装的。。)
提取码:7mi1
以上是下载好的一些jenkins常用的插件包
将插件包解压后再拷贝到jenkins存放插件包的目录,重启jenkins即可
# tar xfP jenkins-plugins.tar.gz
# ll plugins/ | wc -l #插件包共计文件数是191个
# cp -a plugins/* /root/.jenkins/plugins
插件下载地址:
http://updates.jenkins-ci.org/download/plugins/
3.jenkins全局工具配置
选择全局工具配置
全局工具配置如下:
以上需要在服务器上安装了才能生效,配置完了保存即可。
4.jenkins凭证制作如下:
凭据是为了访问Gitlab拉取代码使用的
下面的地方修改成gitlab的api凭证
5.全局系统设置
进入jenkins系统设置。
在jenkins上配置gitlab的地址
cat /root/.ssh/id_rsa
复制私钥串粘贴到Jenkins系统设置内。
到这里就完成了,我试了一下自动构建没啥问题,但是没有自动部署,还得再研究是一下是哪里需要设置。。
昨天又问了下朋友怎么设置自动部署,然后研究了下,现在记录下过程
还是先全局设置
再开一台有web服务的机器用来部署,tomcat和nginx我都试过了没多大区别,现在测试用nginx
新建个项目
这里需要gitlab的仓库地址用来拉取代码,在gitlab上新建一个项目
在仓库里新建一个测试文件,名称index.html
<html>
<body>
Hello,tandabao!
</body>
</html>
回到test仓库,点克隆得到地址
回到jenkins继续设置刚才新建的项目
构建后操作
构建后远程部署有两种方式,一种是在这里设置直接传送,但是我测试了多次都没有成功,
先看第一种,下面截图中命令那里写错了,必须写绝对路径,不然会找不到命令
点击构建
可以看到构建成功了,但是没有传输,也不知道是什么原因,难不成又有哪里设置错了。。?
下面来用第二种,直接使用scp传输
构建后操作只执行命令
在构建中添加shell脚本
scp -r /root/.jenkins/workspace/nginx/index.html 192.168.2.113:/usr/local/nginx/html/
使用这种方式的话,需要事先让jenkins的机器给web服务端的机器发送公钥
# ssh-copy-id 192.168.2.113
如果没做过密钥的话先制作一下
# ssh-keygen
再次手动执行构建
OK,访问下远程服务器
最后设个触发器,每两分钟拉取一次gitlab的代码进行构建
把gitlab上的测试页修改一下
完成
构建定时触发器可以参考下面这篇博客
今天测试的时候还突然出了个问题,一点击构建web页面就一直处于等待状态,无法响应任何操作,先前几次都没有问题的,改完构建配置以后突然就这样了,把jenkins进程杀掉再启动又可以做别的操作了,但是一点构建就一直转圈圈等待中,网络也没问题,然后我又装了个tomcat,用tomcat来启动jenkins就没问题了,所以以后还是用tomcat来启动jenkins吧。同时运行几个服务内存占用非常的高,4G勉强够用,我后来把虚拟机调成了6G,如果是在服务器上部署个人觉得需求要8G内存比较稳定。