四时宝库

程序员的知识宝库

Jenkins企业部署图文干货-git钩子篇

一、Jenkins介绍及安装

Jenkins安装请参考其他文档,在这里就此略过啦,哈!

二、Jenkins插件

1.Gitlab Hook #gitlab钩子,push代码后自动触发拉取操作

2.Publish Over SSH # scp拷贝插件 (主要是将包拷贝到web服务器上)

3.Build Authorization # 钩子触发器

需要提前安装好gitlab

Gitlab插件安装 gitlab

SSH 插件安装 Publish Over SSH

Build Authorization

三、配置Jenkins

我们需要新建一个node项目

设置部分一

源码管理配置部分二

构建触发器配置部分三

#生成令牌

[root@www.abcdocker.com]# openssl rand -hex 10

5c7e3ab062f63aaace06

下面的Build when a change is pushed to GitLab. GitLab webhook UR是我们把钩子插件安装上就有的我需要开启就可以了。 别忘记点保存,这里Jenkins目前就先结束了

接下来就是gitlab的配置,SSH插件是最后我们才用上,最后用来拷贝文件所使用~

三、配置Gitlab

1.登陆到gitlab项目中,点击Settings

钩子配置

##Jenkins地址填写

例子

http://192.168.10.100:81/buildByToken/build?job=short-video-operation-release&token=ddecf363ce1c55a56d72a55d

http://Jenkins地址(ip+端口)/buildByToken/build?job=JenKins项目名称&token=Jenkins配置的令牌

我的地址如下,然后我们在gitlab上点击Add Web Hook

http://10.4.82.118/buildByToken/build?job=abcdocker-node&token=5c7e3ab062f63aaace06

添加完成后,我们点击Test Hook进行测试

四、SSH 插件配置

修改系统设置,配置ssh插件

有两种认证方式

第一种:用户名密码认证

第二种:ssh免密认证 (只需将私钥放在目录下)

[root@yzsjhl82-116 ~]# ssh-keygen

[root@yzsjhl82-116 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

ce:df:f7:d8:f3:be:e9:5c:e5:18:bf:b7:cd:c2:44:a5 root@yzsjhl82-116.opi.com

The key's randomart image is:

+--[ RSA 2048]----+

| |

| .|

| o |

| E |

| S .. .|

| o .=.|

| o o. +|

| . . ==*|

| . ..o@&|

+-----------------+

我这里使用用户名密码进行操作

我们要测试用户密码是否正确,然后别忘记点最下边的保存

返回配置Jenkins

我这里使用Node Js项目作为演示

工程目录如下

Jenkins Shell配置如下

#!/bin/bash

echo "##################################"

Dist=dist_`date +%F`

cd $WORKSPACE

if [ -d $Dist ];then

rm -rf $Dist

fi

if [ -f $Dist.tar.gz ];then

rm -rf $Dist.tar.gz

fi

echo "############################### NPM Install #############################"

cnpm install

npm run build

mv dist $Dist

tar zcvf $Dist.tar.gz $Dist

if [ -f $Dist.tar.gz ];then

echo "##################### Tar Is OK ###################"

else

echo "#################### Tar Is Error"

fi

接下来是拷贝程序的步骤,找到增加构建后操作

Name :这里是自定义的ssh远程服务器,如果有多台,点击add post-build step 继续添加

Source files :源文件地址,相对地址 比如 /root/.jenkins/workspace/jobname/target/xx.war 直接写成 target/xx.war就行

Remove prefix :这里指的是忽略前面的 target/ 远程服务器直接显示就是xx.war

Remote directory :远程服务器要保存的文件目录

Exec command :这里直接写 bash 脚本名称 xx.sh 这里也是远程服务器的脚本

我的工程目录的Node Js,ssh 配置如下

我们可以查

五、gitlab钩子测试

gitlab配置Jenkins钩子是需要有人push代码,现在我们push代码进行测试

#先构建第一遍,以便生成目录

[root@www.abcdocker.com]# git clone http://gitlab.fenqi.d.xiaonei.com/frontend/short-video-operation.git

#git push提交文件进行测试

echo "1234" >1.txt

git add 1.txt

git commit -m "text"

git push origin master

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接