JenKins集成GitLab——jenkins篇

机器环境请看目录篇章

安装:
###关闭防火墙.

systemctl stop firewalld
systemctl disable firewalld

###安装依赖环境jdk.

yum -y install java-1.8.0-openjdk

###安装jenkins.

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.204.1-1.1.noarch.rpm
yum -y localinstall jenkins-2.204.1-1.1.noarch.rpm

###修改jenkins用户(我这里直接修改成root,为的就是省麻烦,简单粗暴)

vim /etc/sysconfig/jenkins
JENKINS_USER=“root”

###然后直接启动,并查看对应的端口进行访问(默认是8080的端口).

systemctl start jenkins
ss -anput | grep 8080

###jenkins的日志目录

/var/log/jenkins/jenkins.log

###直接页面访问,然后解锁,页面上有路径,cat文件复制粘贴就进去了.
新人建议安装推荐插件,不过时间很久.
这里我就直接安装推荐插件
安装完后是直接汉化的页面,因为推荐安装里面就有汉化的插件;并且让你创建一个管理员角色,听他的.

多图警告

###jenkins的微调(更换插件站点)

安装插件的加速:
我选择的是清华大学源–>下拉看到update-center.json–>复制链接地址.——根据下面图片指示接着操作:

找到系统管理

JenKins集成GitLab——jenkins篇_第1张图片

接着找到插件管理

JenKins集成GitLab——jenkins篇_第2张图片

然后点击高级

在这里插入图片描述

把页面拉到最下面,如图位置;然后把复制好的json文件地址贴上去

JenKins集成GitLab——jenkins篇_第3张图片

检查及安装jenkins与gitlab相关的插件(有些插件在推荐安装的时候会带有)

插件名							作用
Credentials Plugin				允许在jenkins中存储认证的凭据
Git Client Plugin				允许jenkins使用git 
Git Plugin						允许jenkins集成git
Gitlab Plugin					允许gitlab触发jenkins构建并在gitlab中显示
Gitlab Hook						允许gitlab自动出发jenkins构建项目
gitlab Authentication plugin   	gitlab身份验证插件
Git Parameter					增加gitlab选择分支、标签、版本功能
Qy Wechat Notification			企业微信通知功能
conditional-buildstep

注明: 插件不要随便升级!有可能会造成与jenkins不兼容的情况.

—————————————————————————————————————————————————

接下来就是正式集成gitlab:

(接下来非常的图文并茂)

实验步骤:
###首先创建自己的组与成员:

gitlab页面—>新建组(test_group)—>新建成员(test)—>成员规划到组里(包括自 己)—>新建项目—>项目名称(php_test)—>项目的url选择建好的组(test_group)–> 选择私有—>点击create project

###然后到gitlab的终端命令行(这里我就不多解释命令了,不懂查下百度git的使用):

git clone [email protected]:test_group/php_test.git
cd php_test/
echo v1.1 > index.php
echo “.php文件测试” > README.me
git add .
git commit -m “test .php file”
git push -u origin master
git tag -a “v1.1” -m “test v1.1”
git push origin v1.1

###接着去到gitlab页面,刷新后可以看到你刚才新建的项目.
###然后到jenkins页面,新建项目:
这里我就跟gitlab的项目同名:

JenKins集成GitLab——jenkins篇_第4张图片

###然后如图:
描述就是说明一下项目的情况.
丢弃旧的构建
——因为项目一般是多次更新,版本多次迭代什么的.
——这里我选择保留的天数是7天
——保留构建最大数20个
按自己情况进行修改就可以了

JenKins集成GitLab——jenkins篇_第5张图片

接下来就是跟gitlab做个免密拉取项目内容的操作:

回到jenkins服务器上生成密钥:
ssh-keygen
###一路回车生成
cat ~/.ssh/id_rsa.pub
###查看并复制公钥,留着下面使用

回到gitlab页面:
右上角用户头像,点击设置,找到图中红框:

JenKins集成GitLab——jenkins篇_第6张图片

然后把复制好的公钥内容贴到图中标记位置:

JenKins集成GitLab——jenkins篇_第7张图片

然后jenkins终端命令行下测试:

git clone [email protected]:test_group/php_test.git
####能免密拉取仓库内容就证明成功
rm -rf php_test
cat ~/.ssh/id_rsa ###顺便查看root的密钥,并复制好留着下面使用

然后回到jenkins的网页页面,下拉看到如图:
——URL就写上gitlab项目上的链接,ssh拉取形式.
——添加Credentials:

JenKins集成GitLab——jenkins篇_第8张图片
——添加Credentials:
类型处选择SSH Username with private key
描述最好写明白
然后是Username
然后点击ADD输入刚才复制好的密钥
然后添加出去
JenKins集成GitLab——jenkins篇_第9张图片

然后是参数化构建过程

前面提到Git Parameter插件,就是这里的作用
如图标记,按步骤往下写(写的是什么样,一会呈现出来就是什么样)
JenKins集成GitLab——jenkins篇_第10张图片

继续往下,接下来就是集成shell

参考图中内容填写即可
脚本内容下面会贴出来供大家参考
JenKins集成GitLab——jenkins篇_第11张图片

回到jenkins终端命令行:

mkdir /scripts
vim php_test.sh

#!/bin/bash
###变量
DATE=$(date +%Y-%m-%d-%H-%M-%S)
WEB_PATH=/usr/local/nginx/html
DIR=/data
DA_VER=${DATE}-${git_version}

###函数形式存在
###进入到项目目录里,然后打包至指定目录
get_code(){
        cd ${WORKSPACE} && \      ### workspace , 是属于jenkins自带的变量
        tar czf  ${DIR}/web-${DATE}-${git_version}.tar.gz  ./*     #### git_version 是前面写的,这里调用jenkins生成的变量即可
 }


###创建存储目录,并做软连接指向web站点目录
web_html(){
        mkdir -p ${DIR}/web-${DA_VER} && \
        tar zxvf ${DIR}/web-${DA_VER}.tar.gz  -C  ${DIR}/web-${DA_VER} && \
        rm -rf ${WEB_PATH} && \
        ln -s ${DIR}/web-${DA_VER}  ${WEB_PATH}
        /etc/init.d/php-fpm restart
}


###回退时的操作
rollback(){
       ROLLBACK_FILE=$(find /data/ -maxdepth 1 -type d -name "web-*-${git_version}")
        rm -rf ${WEB_PATH} && \
        ln -s ${ROLLBACK_FILE}  ${WEB_PATH}
        /etc/init.d/php-fpm restart
}

deploy(){
        get_code
        web_html
}


####判断之前是否有部署过的版本,如果有,就退出,相反则部署;回退不受限.
###GIT_COMMIT是gitlab自带的变量,详情请查看  gitlab可用的环境变量列表
###GIT_PREVIOUS_SUCCESSFUL_COMMIT  同上
if [ $Option == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
                echo "你已经部署过该${git_version}版本"
                exit 1
        else
                        deploy
        fi

elif [ $Option == "rollback" ];then
                rollback
fi

然后应用保存回到jenkins界面:
刷新一下可以看到,这里变成了 Build with Parameter
原因可以回头看下前面的插件
然后如图中操作,选择你是要部署还是要回滚
第一次操作肯定就是deploy:

JenKins集成GitLab——jenkins篇_第12张图片

然后在这里可以看到有一个控制台输出:
点击进去后可以看到你脚本跑的情况:
这里就不贴出来了

JenKins集成GitLab——jenkins篇_第13张图片

接下来是去集成企业微信:
但凡风吹草动,都能发送信息到企业微信群里:
这里图片我就不贴了,图片莫名失踪,懒得再截图了
文字描述可以了,不懂的可以自行百度,极其简单

jenkins页面
	|
系统设置
	|
下拉最下面
	|
企业微信通知配置(填写“构建环境名称”,“默认Webhook地址”,“默认通知UserID”——框框后面都有说明,这里就不废话了)
	|
电脑登陆你的企业微信
	|
选中群,右击选中添加机器人
	|
跟着提示操作,最后得到“Webhook地址”
	|
写到jenkins页面中,保存推出
	|
随便构建个项目就可以收到信息

你可能感兴趣的:(jenkins,gitlab)