jenkins实现项目自动部署
来源:互联网 发布:药品b2b网站源码 编辑:程序博客网 时间:2024/05/21 06:40
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[-]
- 背景
- 整体思路
- 实现方式
- 自动化部署脚本
- 远程执行
- 配置jenkins任务
- 背景
- 整体思路
- 实现方式
- 1 自动化部署脚本
- 2 远程执行
- 3 配置jenkins任务
背景
之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也没太搞清楚该怎么用,所以一直就只用了gitlab来做代码管理。最近要做一个项目自动部署的功能,使用过jenkins一定知道他的自动化功能。所以就从jenkins创建自动部署任务的方式来入手。
整体思路
jenkins可以配置触发器,当有新的提交时,触发执行相应的任务。由于jenkins和项目部署不在同一服务器上,所以我想用ssh到远程服务器后执行对应的部署脚本来做自动部署。
实现方式
我是按照倒推的思路来完成整个流程的。
1、 自动化部署脚本
项目是用Git管理的,首先脚本要能够实现切换到指定目录下后pull对应的分支。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
可以通过接收的参数,来决定切换的项目路径
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
2、 远程执行
首先在本地配置好在jenkins所在的服务器上可以免登录ssh到要部署的服务器上:利用ssh-keygen生成公钥后,粘贴到目标服务器上~/.ssh/authorized_keys文件中。此时在jenkins服务器上即可远程执行更新脚本/
- 1
- 1
3、 配置jenkins任务
(1)填写项目名称
(2)在源码管理的位置,选择git,在Repository URL里填写项目的URL,结果遇到报错
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
这种权限错误,一般是因为ssh公钥没有添加到git服务器上。但是这里需要注意的一点是,需要填写jenkins用户下的公钥。
执行su - jenkins后,发现没有任何反应。原因是/etc/passwd中的/bin/bash变成了/bin/false。
- 1
- 1
将
- 1
- 1
改为
- 1
- 1
这时执行su - jenkins 后可以切换用户,但是命令提示符的用户名显示的是
- 1
- 1
解决方法是在jenkins用户下的bash_profile添加命令行提示符环境变量
- 1
- 1
添加
- 1
- 1
加载修改完的bash_profile:
- 1
- 1
此时前面的用户名提示恢复正常:
- 1
- 1
我在开始安装jenkins时,使用以下命令生成过公钥jenkins.pub:
- 1
- 1
将公钥添加到gitlab后,仍然报权限错误。此时看到gitlab上添加ssh公钥说明,生成公钥需要选择-t rsa,而ssh-keygen默认使用的加密是dsa。
使用命令
- 1
- 1
将新生成的公钥添加到gitlab服务器上,
此时可能需要在jenkins服务器上,切换到jenkins用户后执行一下:
git ls-remote -h [项目的git地址] HEAD
参考jenkins host key verification failed
之后就不再报权限错误了。
Branch Specifier (blank for ‘any’)填写自己要响应的分支变化。
(3)构建触发器选择
首先需要在jenkins安装插件Gitlab Hook Plugin,安装完之后在构建触发器就能看到:
- 1
- 1
选中该选项。因为要在有push事件发生时,进行自动部署,因此勾选Build on Push Events。
(4)构建里选择增加构建步骤->Execute shell
Command 里写远程执行更新脚本的命令
- 1
- 1
(5)可选:如果想要一个失败的消息通知,可以在构建后操作里,增加构建后操作步骤->Email Notification,填写自己的邮箱即可
点击保存。
但是此时还没有配置完,我们需要通过gitlab的web hooks的功能,来让jenkins接收到push的消息。
4、 配置web hooks
刚才在构建触发器里有一项,里面提供的地址就是我们要在gitlab的web hooks里填写的地址(下面只是我的一个示例地址)
- 1
- 1
填写完之后,我们的整个自动部署流程就已经可以运行了。自己push一下试试吧。
参考:
shell执行git命令
shell 脚本执行后 ssh 连入远程服务器
ssh远程执行命令并自动退出
Jenkins+git+webhook自动触发部署和测试任务
在Centos系统中无法切换jenkins用户
ssh-keygen 的 详解
jenkins host key verification failed
- jenkins实现项目自动部署
- jenkins实现项目自动部署
- Jenkins 自动部署 项目
- Jenkins自动部署Tomcat项目
- Jenkins+svn项目自动打包和部署
- Jenkins+svn项目自动打包和部署
- Jenkins自动部署Maven 多个子项目
- Jenkins自动部署maven项目到tomcat
- Jenkins自动部署maven项目到tomcat
- 基于Jenkins 实现php项目的自动化测试、自动打包和自动部署
- 基于Jenkins 实现php项目的自动化测试、自动打包和自动部署
- 基于Jenkins 实现php项目的自动化测试、自动打包和自动部署
- 基于Jenkins 实现php项目的自动化测试、自动打包和自动部署
- 基于Jenkins 实现php项目的自动化测试、自动打包和自动部署(-)
- jenkins sonar tomcat git实现自动部署
- Jenkins~通过WebDeploy实现自动部署
- Jenkins~通过WebDeploy实现自动部署
- jenkins sonar tomcat git实现自动部署
- CAFFE源码学习笔记之batch_norm_layer
- linux常见进程与内核线程
- MySQL索引背后的数据结构及算法原理
- 关于HTTP协议,一篇就够了
- 机器人框架
- jenkins实现项目自动部署
- Servlet编程实例
- GDOI2017模拟 第一场(4.11~4.13)
- loadrunner 服务器端性能指标分析
- Jetty 的工作原理以及与 Tomcat 的比较
- Button 按钮的点击时候出现蓝色边框
- 统计从1-n的整数中1出现的次数(10进制)
- TensorFlow安装手册
- JDK安装,环境变量配置