编写以下脚本:

-------------------------------------------------------------------------------------
#!/bin/sh
name=web-$(date +%F)-$(($RANDOM+10000))
host=$1
job_name=$2
cd /var/lib/jenkins/workspace/${job_name} && tar zcf /opt/${name}.tar.gz ./*
ssh ${host} "cd /usr/share/nginx && mkdir ${name}"
scp -r /opt/${name}.tar.gz ${host}:/usr/share/nginx/${name}
ssh ${host} "cd /usr/share/nginx/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"
ssh ${host} "cd /usr/share/nginx && rm -rf html && ln -s /usr/share/nginx/${name} /usr/share/nginx/html" ssh ${host} "nginx -s reload"
-------------------------------------------------------------------------------------
使用脚本方法:
sh -x jenkins.sh 10.0.0.66 my-freestyle-job 将 /var/lib/jenkins/workspace/my-freestyle-job 目录内容打包 传送到需要发布的服务nginx器中.部署完成后 重启服务器.
发布结果:
[root@node2 nginx]# ll
total 8
lrwxrwxrwx 1 root root 37 Dec 29 22:29 html -> /usr/share/nginx/web-2019-12-29-42021
drwxr-xr-x 2 root root 143 Dec 29 21:43 modules
-rw-r--r-- 1 root root 1731 Dec 29 22:29 web-2019-12-29-42021
-rw-r--r-- 1 root root 1731 Dec 29 22:19 web-2019-12-29-41061 #这样做的好处就是每次网站都会被备份,每次都会指向web根目录. 发布过程影响较小
#使用这种方法回退也非常简单,如: 我们发现 web-2019-12-29-42021 该版本有问题,回退方式就是:
rm -f /usr/share/nginx/web-2019-12-29-42021
ln -s /usr/share/nginx/web-2019-12-29-41061 /usr/share/nginx/html
#!/bin/sh
name=web-$(date +%F)-$(($RANDOM+10000))
host=$1
job_name=$2
cd /var/lib/jenkins/workspace/${job_name} && tar zcf /opt/${name}.tar.gz ./*
ssh ${host} "cd /usr/share/nginx && mkdir ${name}"
scp -r /opt/${name}.tar.gz ${host}:/usr/share/nginx/${name}
ssh ${host} "cd /usr/share/nginx/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"
ssh ${host} "cd /usr/share/nginx && rm -rf html && ln -s /usr/share/nginx/${name} /usr/share/nginx/html"
ssh ${host} "nginx -s reload"

Jenkins通过脚本进行自动发布的更多相关文章

  1. Linux配置SSH公钥认证与Jenkins远程登录进行自动发布

    公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密:另一个称为密钥(private key),只有拥有者才能看到,用于解密. 在使用jenkins ...

  2. jenkins+maven+svn+npm自动发布部署实践

    一.系统版本centos7.6 二.根据jenkins官方安装方法yum安装jenkins 1.进入jenkins官网下载页面https://jenkins.io/download/,选择Red Ha ...

  3. Jenkins + Gradle + pgyer + Android自动发布

    Jenkins配置与必要的环境配置 一:Jenkins服务端(Linux系统为例说明): 1.jdk安装与配置 2.SDK安装与配置 3.安装配置对应的gradle版本(建议gradle版本在4.1版 ...

  4. jenkins+gitlab+webhook实现自动发布

    实验环境   Jenkins:192.168.1.15 Gitlab:192.168.1.14   一.Jenkins配置   1:安装gitlab hook plugin插件 2:新建一个job 3 ...

  5. 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一

    首先说一下为什么写这篇文章,因为从正式参加工作就做javaweb开发,一路走来,碰到了很多的问题,每次问题都想从度娘那里得到准确的答案,但是,每个人遇到的问题不尽相同,问题的解决方案有时候也只是仅供参 ...

  6. Jenkins集成Docker镜像实现自动发布

    1. 思路&流程 Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:Jenkins 拉去远端源码 -- gitl实现应用打包 -- jenk ...

  7. 手把手教你用Jenkins自动发布dotnet core程序

    Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...

  8. gitlab+jenkins自动发布Python包到私有仓储

    背景 有个私有仓储,地址为https://your.repo.com/pypi/ 代码存储在gitlab, 地址为https://gitlab.company.com/software.git CI为 ...

  9. 2、jenkins+svn自动发布和回滚

    Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...

  10. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

随机推荐

  1. Linux 用户名显示为sh-

    前言 本来我们使用bash的时候一直显示是: 后来我操作linux的时候因为有一个新的需求,我使用: useradd -d /home/testuser -m testuser 去创建一个用户名,名字 ...

  2. redis 简单整理——持久化之RDB[十九]

    前言 简单介绍一下redis的持久化.先来整理一下RDB. 正文 redis 支持RDB 和 AOF两种持久化机制,他们能达到的效果不一致. 那么先来看一下RDB吧. RDB 是把当前进程数据生成快照 ...

  3. sweetviz工具避坑和简单使用

    网上关于sweetviz的文章比较少,有些坑这里说一下给大家避坑. 使用sweetviz遇到的错误如下: KeyError: "None of ['index'] are in the co ...

  4. NodeJs初探索

    练习1:模块之间的引用 a.js // 引入b.js模块 var b = require("./b"); // 调用对象里的方法: 对象.属性名 对象.方法名() b.add(); ...

  5. AHPA:开启 Kubernetes 弹性预测之门

    ​简介:阿里巴巴云原生团队和阿里达摩院决策智能时序团队合作开发 AHPA 弹性预测产品,该产品主要出发点是基于检测到的周期做"定时规划",通过规划实现提前扩容的目的,在保证业务稳定 ...

  6. WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响

    本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 远古时候,不知道大佬是故意还是失 ...

  7. dotnet 6 精细控制 HttpClient 网络请求超时

    本文告诉大家如何在 dotnet 6 下使用 HttpClient 更加精细的控制网络请求的超时,实现 HttpWebRequest 的 ReadWriteTimeout 功能 本文将介绍如何在 Ht ...

  8. Steam中将XBox手柄默认布局改为任天堂手柄布局的方法

    1. 在Steam菜单栏找到"查看",选择大屏幕模式. 2. 进入大屏幕模式后,在菜单界面找到"设置". 3. 在设置界面找到"控制器",选 ...

  9. 《Modern C++ Design》之上篇

    如下内容是在看侯捷老师翻译的<Modern C++ Design>书籍时,整理的code和摘要,用于不断地温故知新. 第一章 1. 运用 Template Template 参数实作 Po ...

  10. CentOS加载yum源时报错 [Errno 14] HTTP Error 404 - Not Found Trying other mirror.

    报错内容: [root@192 yum.repos.d]# yum repolist Loaded plugins: fastestmirror, product-id, search-disable ...