技术标签: 乱七八糟
持续集成之增量发布
jenkins 提供了持续集成的功能,但是并没有提供增量发布的功能(也许是我没有找到合适的插件的原因)。但是jenkins提供了比较完备的自主集成的接口,可以在jenkins基础上实现自己发布的要求
进入到jenkins的系统配置
在系统配置中,需要配置 内容有 jdk路径
版本管理有git cvs,svn等都可以配置
编译工具ant和maven
下载Publish over SSH 插件(主要用于通过ssh命令传递文件和执行shell脚本)并配置如下:
从svn上更新文件这个比较简单,这里主要是从这之后的操作进行说明。
svn更新之后,首先需要进行编译。这里编译一般有几种方式,一个是用ant,一个是用maven。鉴于我们项目中一般很少使用maven,这里就不做maven的说明。
触发器是出发构建行为的一个配置。可以有如下几种配置方式
1:当其他项目发生构建
2:定时构建
3:通过scm构建
这里采用的是定时构建的方式。如下图配置,则是每天晚上8点进行构建
先添加一个ant构建,在添加一个执行windows批处理命令,结果如下:
通过这里的构建环境的配置,我们可以在构建发生前进行一些准备工作。我们不需要,就不需要配置。
用ant构建,会需要一个build文件,默认的会加载工作空间下的build.xml文件进行构建。这里不熟悉的同学可以看下ant相关文档。
当ant构建完成之后,执行windows批处理命令:
java -jar inte.jar "%JENKINS_HOME%" %JOB_NAME% %BUILD_ID%
这里其实比较简单,就是调用了java命令执行了一个jar文件。参数有三个,都是jenkins提供的参数。
"%JENKINS_HOME% 是jenkins的安装目录。得到的值“E:\ProgramFiles (x86)\Jenkins”
%JOB_NAME% 是构建的项目的名称
%BUILD_ID% 是构建的版本号
该jar的主要功能是这样的 :
1:解析“%JENKINS_HOME%\jobs\%JOB_NAME%\builds\%BUILD_ID%” 下的changelog.xml 文件,获得文件变更列表
2:获得该列表对应的文件。如果是java文件,则找到对应的编译后的class文件(需要处理内部类),如果是非java文件,则直接获得对应文件。
3:将所有文件按照编译后的目录结构,移动到该文件夹下
4:将该文件夹打包成changeFiles.tar文件并放置到工作空间下
增量发布包打完之后就是执行增量更新了。新增一个构建任务“send file or execute commands over ssh”并按照如下配置进行配置:
其中 exec command中需要填写:
/save/publish.sh dsideal_yy ${BUILD_ID}
这里是要执行远程主机上的 /save/publish.sh脚本。带有两个参数,第一个参数是要将增量文件拷贝到tomcat中的哪个工程下,第二个参数是构建的版本号。
到这里增量发布基本完成了。
inte 相关 包 下载地址 http://download.csdn.net/detail/sjbup/9669133
使用格式工厂批量视频旋转90度为例;1. 打开格式工厂,选择视频目录下你的视频对应格式,我这里选择MP4格式;2.点击“输出配置”、、3. 在“视频设置“中“高级”面板下的“旋转”,右是顺时针90度,左是逆时针90度,4.添加文件和设置输出路径5.点击“开始”...
带尾结点指针的单循环链表结构//带尾结点的单循环链表//可以不要头指针typedef int elementType;typedef struct LinkedList{ elementType data; struct LinkedList* next;}node;带尾结点指针的单循环链表初始化//R是尾结点 void initialList(node *&R){ R = new node;//申请头结点 R->next = R; } 求表长度//求表
/** 数组去重 相邻的2个数字要是相同只保留一个* @author Administrator**/public class ArrayPaichong { public static void main(String[] args) { int[] in=new int[] {1,2,2,3,4,5,2,4,4,7,7}; List a=ne...
建立工程工程源码下载mybatis-config.xml需要注意的是,定义元素的顺序按照下面的顺序定义<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/myba...
这里写目录标题一、新收获1、对文章段落的理解和收获abstract(1). Introduction(2). Related Work(3). Reinforcement Learning Background(4). Asynchronous RL Framework(5). Experiments(6). Conclusions and Discussion二、总结一、新收获1、对文章段落的理解和收获abstract(1). Introduction(2). Related Work(3).
Convolutional Pose Machine总结目录Convolutional Pose Machine总结目录Convolutional Pose Machine简介算法详细分析算法流程(使用阶段而非训练阶段)创新点数据集效果展示相关资料博客githubConvolutional Pose Machine简介 Con...
【初始化-系统时间】init_profile.sh#!/bin/bash##2014/10/20#profile,增加到最后cat<<_PROFILE>>/etc/profilealiasls='ls--color=tty'aliasll='ls-l--color=tty'aliasl.='ls-d.*--co...
本篇主要演示在Linux上基于Hadoop安装Hive。一 安装环境操作系统:Oracle Linux Server release 6.5;Java版本:java-1.7.0-openjdk-1.7.0.45;Hadoop版本:hadoop-2.7.6;Hive版本:hive-2.3.3;MySQL版本:5.7.22;二 安装前准备1 安装Hadoop具体安装过程参考:Hadoop 2.7.6安...
本文摘要:新增数据列1.直接赋值2.df.apply方法3.df.assgin方法4.按条件选择分组分别赋值直接赋值例子续接上回# df['High']、df['Low']其实是两个Series,相减返回仍是Series# 此处'High-Low'是要新增的新列名,新列数据为df表每行的High列和Low列的高低差df.loc[:, 'High-Low'] = df['High'] - df['Low']df.apply方法下面示例:新增一个’wendu_type’列,表示温度类
//这是data中的数据 pageIndex: 0, pageSize: 10,async getDataList() { this.loading = true let params = { size: this.pageSize, offSet: this.pageSize * this.pageIndex, describe: this.describe ? this.describe : '', }
转自 http://www.cnblogs.com/DaleSong/p/5289393.htmlSpyder是一个python的集成开发环境,其优点是模仿Matlab环境,可以方便的查看和修改数组取值。之前用过另一个开发环境PTVS(Python Tools for Visual Studio),顾名思义,是微软的Visual Studio的python开发环境,类似经典的vc,可以方便的设置断点
作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,首先他也有substr,trim等其他数据库都有的普通函数,这里我们介绍他更强大的一个函数substring,可以像python,java等编程语言一样使用正则表达式,强大到极点在此之前我们先了解一下正则表达式最基础的四个 %代表一个或多个字符 _代表一个字符 ^代表字符前 ...