jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, PHP等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成

jenkins服务器:192.168.239.134
测试服务器:  192.168.239.136 1.配置免密钥通信
实现自动化部署首先要解决的是免密码传输,配置jenkins至测试服务器之间免密钥ssh登录

 

 测试免密钥ssh登录

 

 在测试服务器上编写一个测试脚本,检测是否可以执行成功,正式环境可以写一个自动化部署的脚本

2.jenkins新建部署代码项目

 
 

 在构建这里选择执行shell命令 

 

 点击立即构建

 控制台输出日志:成功

 

 这样就实现了使用jenkins代码的自动化部署

 实际情况中我们通常使用版本控制系统管理代码,svn 或者 git

 二、gitlab利用webhook实现push代码后jenkins自动构建

 jenkins服务器:192.168.239.134

 gitlab服务器: 192.168.239.136

 PS:如果gitlab与jenkins在同一台服务器,需要更改其中一个的端口,默认都是8080

 之前部署了gitlab的代码托管平台和jenkins代码发布平台,通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins上的构建动作,有时显得过于繁琐。于是就想到了Gitlab的Webhook功能,通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,这样就不需要人工干预去执行发版操作了

 提前将jenkins本机的key添加到gitlab账户上

 

 1.jenkins安装gitlab hook plugin插件

 

 

 在auto_deploy项目工程里设置代码的git下载路径并关联构建的分支

 

 查看jenkins生成回调地址,在任务构建触发器下获取回调URL,下面的URL那一行只有gitlab hook plugina插件下载成功后才能显示

 

 设置代码发布的推送脚本

 

 注意:这里使用192.168.239.136的test用户是与jenkins服务器已经配置了ssh免密钥登录

#!/bin/bash
SOURCE_DIR=/root/.jenkins/workspace/${JOB_NAME}/
DEST_DIR=/var/www/html/
REMOTE_IP=192.168.239.136
/usr/bin/rsync -e "ssh -p 22" -avpgolr --delete-before --exclude=.git $SOURCE_DIR test@$REMOTE_IP:$DEST_DIR 通过上面的git将代码下载到jenkins本机jobs里对应任务的workspace下,jenkins部署路径是/root/.jenkins/workspace/,脚本中${JOB_NAME}是jenkins的内置变量
也可以指定下载目录,加--exclude忽略哪些文件不需要进行rsync传输
#!/bin/bash
SOURCE_DIR=/data/git_tmpdata
再通过rsync将下载的代码分发到远程目标机器上

在192.168.239.136上创建/var/www/html/目录并授权test用户

mkdir /var/www/html/ -p && chmod -R test.test /var/www/html/

在gitlab上添加webhooks(注意这里是管理员用户才能添加)

 Add Webhook添加完成后,在下方点击 test进行测试

 

 如果返回Hook successfully executed.表示配置成功。
 这样,下次push代码后,就会自动触发jenkins上相关的构建工程进行自动发布了!无需人工干预

 

 在gitlab上push一个文件hello.py,然后测试下是否自动发布了

 

 在jenkins上查看输出信息

 

 在目标机器192.168.239.136的/var/www/html/目录下发现hello.py文件已经发布过来了

 

 

 

 

 

jenkins代码自动部署的更多相关文章

  1. Jenkins代码自动部署相关文档

    环境 centos 7.0+ Java JDK 1.8+ jenkins 2.220 maven 3.0+ git 1.8+ 注意事项 一. linux 安装 JDK (jdk-8u201-linux ...

  2. Jenkins之自动部署、代码安全扫描、自动化接口测试

    搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...

  3. Java代码自动部署

    注:本文来源于<it小熊> [ ①Java代码自动部署-总结简介] 代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节.对于Java开发者来说,Java ...

  4. Gitlab+Jenkins实现自动部署

    Gitlab+Jenkins实现自动部署   系统环境: Gitlab主机 IP:192.168.1.2 Jenkins主机 IP:192.168.1.3 一.为何要做自动部署 #部署Tomcat的在 ...

  5. GIt+jenkins代码自动上线

    代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...

  6. 做了一个简易的git 代码自动部署脚本

    做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08)   阅读(200 ...

  7. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

    自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...

  8. Jenkins介绍和安装及配合GitLab代码自动部署

    Jenkins是什么? 基于JAVA的开源的自动化系统平台 加速自动化CI,CD任务及流水线,所有类型的任务:构建,测试,部署等 丰富的插件生态系统支持功能扩展,1400+插件和SCM,测试,通知,报 ...

  9. springboot+Jenkins+docker-compose自动部署项目实践

    DevOps思想 一个开发.测试.运维的整个过程的思想. plan:需求.计划 code:编码 build:构建 test: 测试 release:发布版本 deploy:部署 operate:项目运 ...

随机推荐

  1. Centos7安装lnmp环境

    系统版本:centos7 64位 PHP版本:PHP 7.0.21 Nginx版本:1.8.1 MySQL版本:5.5.17 注:1.所有安装都必须放在 /usr/local/src文件夹下 2.添加 ...

  2. c# 一维数组的声明方式

    1.直接指定数组元素 int [] arr = {2,4,1,8,4}; 2.只指定数组长度不指定元素值 指定一个长度为5的int型数组 int []  arr = new int[5]; 3.不指定 ...

  3. MongoDB自定义存储数据库文件位置

    mongodb下载地址:https://www.mongodb.com/download-center#community 本机安装目录如下: 配置步骤如下: 1.新建文件夹data(文件夹内再建一个 ...

  4. CodeForces 106C 【DP】

    题意: n g dough  m种商品? 每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks rest c0 dough -> d0 ...

  5. Spark Runtime概述

    从Spark Runtime的角度来讲由五大核心对象:Master.Worker.Executor.Driver.CoarseGrainedExecutorBacked: Spark在做分布式集群系统 ...

  6. 使用combobox下拉列表框实现省 市 县 的三级联动

    package com.hanqi.entity; //地区 public class Region { //地区id private String regionID; //地区名称 private ...

  7. ImportError: /lib64/libc.so.6: version `GLIBC_2.17' 问题解决

    安装最新的TensorFlow(>=1.10)后,载入TensorFlow时提示Glibc版本过低,需要升级到指定版本. ImportError: /lib64/libc.so.6: versi ...

  8. C# JObject将json字符串转为json对象

    static void Main(string[] args) { string json = "{\"name\": \"测试\",\"m ...

  9. BZOJ 2462 [BeiJing2011]矩阵模板 矩阵哈希

    昨天卡了一天常数...然后发现吧$unsigned\space long\space long$改成$unsigned$就可以过了$qwq$ 先把每一行的前缀哈希求出,然后再竖着把每个前缀哈希值哈希起 ...

  10. Luogu P2480 [SDOI2010]古代猪文 卢卡斯+组合+CRT

    好吧刚开始以为扩展卢卡斯然后就往上套..结果奇奇怪怪又WA又T...后来才意识到它的因子都是质数...qwq怕不是这就是学知识学傻了.. 题意:$ G^{\Sigma_{d|n} \space C_n ...