Gogs+Jenkins自动化部署方案


     基于gogs代码管理系统下的jenkins自动化部署方案,主要是开发后提交代码(可以为push、tag、合并等事件)可以直接触发jenkins的构建来完成部署。


一、安装Generic Webhook Trigger插件

    首先jenkins需要进入系统管理→管理插件→可选插件安装Generic Webhook Trigger插件,主要步骤如下图所示。

    1、进入jebkins主页面的左侧就可以看到系统管理。

系统管理

2、进入插件管理

管理插件

3、搜索Generic Webhook Trigger插件,直接点击安装即可。这个插件是通用的,gogs可以用别的代码管理系统也同样可以用。

安装插件

二、设置webhook(Web钩子)

    登录代码管理系统,我当前的项目是使用的Gogs。进入仓库设置→管理Web钩子→添加Web钩子。

1、添加Web钩子

添加webhook

2、设置web钩子的详情

    这里的推送地址是http://jenkins地址:端口号/generic-webhook-trigger/invoke?token=密钥,这里的密钥是要与后面在jenkins里面的密钥设置一致。触发web钩子的事件可以自己设置什么样的事件去触发jenkins的构建。

设置钩子详情

    这里设置完了之后可以点击测试推送,点击测试记录可以看到发送给jenkins的推送详情了。其中ref就是推送过去的分支啦。以下的推送的内容都是可以通过文章后面设置jenkins变量来获得的。(底下绿色圈出的部分是我jenkins中需要用的变量)

二、调整Generic Webhook Trigger插件

1、设置Generic Webhook Trigger插件

    在构建触发器底下可以看到Generic Webhook Trigger插件。设置token信息,这里的token信息是需要与上文中webhook中的token设置一致,才会触发。

设置token

    接下来就要在Post content parameters下设置获取的变量了,variable中设置的ref这里定义的变量的名字,Expression中设置的$.ref是获取的推送内容中的值,这个值是赋给variable中的变量。同理推送内容中的$.repository.name赋值给name,name这里是仓库的名称

推送详情

    我当前的项目是多人开发,所以对指定分支的事件才会触发jenkins的构建,所以在Optional filter中我用^\S*refs/heads/master|refs/heads/developer$设置了对ref的进行过滤,只有master与developer才会触发构建。

optional filter

3、Excecute shell

    可以通过上面的方法获取到分支,我当前的项目是有测试开发与生产环境。所以每次触发构建需要打包不同的项目去部署到对应的服务器上,这里我是通过shell脚本来实现的。具体的代码我放到文章中。不同的情况可以脚本自己可以定义,这里只是适应我的项目。


excute shell

cp /opt/install/auto_server_install.sh ./

sh auto_server_install.sh $ref $JOB_NAME

auto_server_install.sh的脚本如下


shell 脚本

你可能感兴趣的:(Gogs+Jenkins自动化部署方案)