jenkins构建项目
文件如果存放在C:\Program Files (x86)或者C:\Program Files需要进行设置系统权限,不然创建文件或目录会失败
1.设置好对应的svn仓库

2.GCPI配置的脚本:
@echo off
::创建文件夹APL用来打包
md GCPI
cd projects/server/GCPI
:: compile code from svn
echo start compiling java source code ...
javac -encoding UTF-8 -classpath .;WebRoot\WEB-INF\lib\* src_main\com\zhyd\gcpi\common\controller\*.java src_main\com\zhyd\gcpi\common\dao\*.java src_main\com\zhyd\gcpi\common\service\*.java src_main\com\zhyd\gcpi\common\test\*.java src_main\com\zhyd\gcpi\common\util\*.java src_main\com\zhyd\gcpi\filter\*.java src_main\com\zhyd\gcpi\job\*.java src_main\com\zhyd\gcpi\job\task\*.java src_main\com\zhyd\gcpi\mapper\sysconfig\*.java src_main\com\zhyd\gcpi\mapper\shrio\*.java src_main\com\zhyd\gcpi\mapper\log\*.java src_main\com\zhyd\gcpi\service\log\*.java src_main\com\zhyd\gcpi\service\shrio\*.java src_main\com\zhyd\gcpi\service\sysconfig\*.java src_main\com\zhyd\gcpi\service\log\impl\*.java src_main\com\zhyd\gcpi\service\shrio\impl\*.java src_main\com\zhyd\gcpi\service\sysconfig\impl\*.java src_main\com\zhyd\gcpi\shrio\realm\*.java src_main\com\zhyd\gcpi\vo\*.java src_main\com\zhyd\gcpi\web\*.java -d WebRoot\WEB-INF\classes
echo copy xml files...
xcopy /e/r/c "src_config\*" "WebRoot\WEB-INF\classes"
xcopy /e/r/c "src_main\com\zhyd\gcpi\mapper\log\*.xml" "WebRoot\WEB-INF\classes\com\zhyd\gcpi\mapper\log"
xcopy /e/r/c "src_main\com\zhyd\gcpi\mapper\shrio\*.xml" "WebRoot\WEB-INF\classes\com\zhyd\gcpi\mapper\shrio"
xcopy /e/r/c "src_main\com\zhyd\gcpi\mapper\sysconfig\*.xml" "WebRoot\WEB-INF\classes\com\zhyd\gcpi\mapper\sysconfig"
:: 生成GCPI.war
cd WebRoot
jar -cvf GCPI.war .\*
@echo off
echo 当前CMD默认目录:%cd%
cd ..\..\..\..
:: 将SVN上需要用的文件copy到本地GCPI文件夹
echo start copying ......
echo 当前CMD默认目录:%cd%
xcopy /e/r/c "setup\server\*" "GCPI"
:: copy GCPI.war to apache-tomcat-6.0.51\webapps
echo move GCPI.war to tomcat\webapps ...
::move e:\jenkins\workspace\aaa\projects\server\GCPI\WebRoot\GCPI.war e:\jenkins\workspace\aaa\APL\apache-tomcat-6.0.51\webapps
echo 当前CMD默认目录:%cd%
move %cd%\projects\server\GCPI\WebRoot\GCPI.war %cd%\GCPI\apache-tomcat-6.0.51\webapps
echo cd GCPI and copying sql ...
cd GCPI
::echo 当前CMD默认目录:%cd%
::xcopy /s "D:\Jenkins\jenkins-2.60.1\mysql-5.7.17-win32.rar" .
xcopy /s "D:\Jenkins\jenkins-2.60.1\mysql-5.7.17-win32" .
::echo unzip sql.rar ...
::start winrar x mysql-5.7.17-win32.rar
::echo delete mysql-5.7.17-win32.rar
::del /f /s /q mysql-5.7.17-win32.rar
:: 调用Inno Setup工具进行封装,前提是要先在本机安装Inno setup软件,platform.iss/install.bat和uninstall.bat都在SVN上,
echo compiling platform.iss ... Inno Setup needs to be installed first ....
::无法使用compil32命令来运行Inno setup脚本,所以使用iscc命令以控制台输出方式运行,参考http://www.cnblogs.com/joean/p/4870428.html
::compil32 /cc platform.iss
iscc platform.iss
3.写对应的platform.iss文件
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "GCPI"
;产品版本
#define MyAppVersion "1.0.0.1"
#define MyAppPublisher "AgriGarden"
#define MyAppURL "http://www.agri-garden.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{FC6B755E-7269-44BD-ADD1-3E641794BDA9}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
;默认开始菜单名
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
;将生成的文件放在与iss脚本相同的目录下
OutputDir=.
OutputManifestFile=Setup-Manifest.txt
OutputBaseFilename=GCPI1.0
Compression=lzma
SolidCompression=yes
;安装图标
SetupIconFile=AgriGarden.ico
;卸载图标
Uninstallable=true
UninstallDisplayIcon=AgriGarden.ico
;安装完成后要求重启,因为要刷新注册表,这样自定义的文件就不会被杀毒软件误认为是无效快捷方式
AlwaysRestart=yes
;备注版本信息
VersionInfoCompany=http://localhost:8080/GCPI/0-webapp/html/factory_login.html
VersionInfoDescription=AgriGarden
;文件版本
VersionInfoVersion=1.0.0.0
;产品版本
;VersionInfoTextVersion=1.2.3.4
VersionInfoCopyright=Copyright (C)2017
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "apache-tomcat-6.0.51\*"; DestDir: "C:\Program Files (x86)\apache-tomcat-6.0.51"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "jdk1.6.0_43\*"; DestDir: "C:\Program Files (x86)\jdk1.6.0_43"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "mysql-5.7.17-win32\*"; DestDir: "C:\Program Files (x86)\mysql-5.7.17-win32"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "redis-3.0.503\*"; DestDir: "C:\Program Files (x86)\redis-3.0.503"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "install.bat"; DestDir: "{app}"; Flags: ignoreversion
Source: "uninstall.bat"; DestDir: "{app}"; Flags: ignoreversion
;Source: "D:\setup\项目启动.html"; DestDir: "{app}"; Flags: ignoreversion
Source: "AgriGarden.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: "vcredist_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "vcredist2010_x64_XiaZaiBa.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "gcpidb.sql"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
;卸载图标位置
Source: "uninstall.ico"; Flags: solidbreak dontcopy
;卸载插件位置
Source: "UpdateIcon.dll"; Flags: solidbreak dontcopy
[Icons]
;开始菜单,桌面快捷方式
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename:"{app}\vcredist_x64.exe";Description:"正在安装vcredist_x64.exe";
Filename:"{app}\vcredist2010_x64_XiaZaiBa.exe";Description:"正在安装vcredist2010_x64_XiaZaiBa.exe";
Filename:"{app}\install.bat";Description:"正在启动或配置相关程序";
[UninstallRun]
Filename:"{app}\uninstall.bat";
Filename:"{app}\vcredist_x64.exe"; Parameters:"-uninstall";
Filename:"{app}\vcredist2010_x64_XiaZaiBa.exe"; Parameters:"-uninstall";
[UninstallDelete]
Type:filesandordirs;Name:"C:\Program Files (x86)\apache-tomcat-6.0.51"
Type:filesandordirs;Name:"C:\Program Files (x86)\mysql-5.7.17-win32"
Type:filesandordirs;Name:"C:\Program Files (x86)\redis-3.0.503"
[Messages]
BeveledLabel=AgriGarden
;卸载对话框说明
ConfirmUninstall=Are you sure you want to completely remove GCPI and all of its components? %n%nPress [Yes] to continue removing %1;%nPress [No] to cancel.
;自定义注册表,用于在用户系统中创建,修改或删除注册表健值
[Registry]
Root: HKLM; Subkey: "Software\GCPI"; ValueType: string; ValueName: Installed version; ValueData: "GCPI1.0"; Flags: uninsdeletekey
Root: HKCR; Subkey: "GCPI"; ValueType: String; ValueData: "GCPI files";Flags: uninsdeletekey
Root: HKCR; Subkey: "GCPI\DefaultIcon"; ValueType: String; ValueData: "{app}\AgriGarden.ico";Flags: uninsdeletekey
Root: HKCR; Subkey: "GCPI\shell\open\command"; ValueType: String; ValueData: "{app}\GCPI.exe %1";Flags: uninsdeletekey
Root: HKCR; Subkey: ".GCPI"; ValueType: String; ValueData: "GCPI";Flags: uninsdeletekey
[code]
function GetInstalledVersion(): String;
var InstalledVersion: String;
begin
InstalledVersion :='';
RegQueryStringValue(HKLM, 'Software\GCPI', 'Installed version', InstalledVersion);
Result := InstalledVersion;
end;
function InitializeSetup(): Boolean;
var PrevVer: String;
begin
PrevVer := GetInstalledVersion();
result := true;
if length(PrevVer) > 0 then
begin
//如果发现程序已经安装过了
MsgBox ('The program ' + PrevVer + ' has already been installed. Please uninstall it before start the new program.', mbError, MB_OK);
result := false;
end;
end;
//插件函数用法
//参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系
//返回值: 成功 = True, 失败 = False
//安装初始化
function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;
external 'UpdateIcon@files:UpdateIcon.dll stdcall';
//替换卸载程序的图标
function UpdateUninstIcon(const IcoFileName: String): Boolean;
begin
//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!其它参数类似!
Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0); //替换卸载图标
end;
procedure CurStepChanged(CurStep: TSetupStep);
var uninspath, uninsname, NewUninsName, MyAppName,sIcon: String;
begin
//注意: 替换卸载程序的图标,必须是在卸载程序生成之前!
//建议安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!
if CurStep=ssInstall then
begin
sIcon:= ExpandConstant('{tmp}\uninstall.ico'); //定义卸载图标
//ExtractTemporaryFile('UpdateIcon.dll');//该动态链接库可网上查找
ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标
//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!
UpdateUninstIcon(sIcon) //替换卸载图标
end;
if CurStep=ssDone then
begin
// 指定新的卸载文件名(不包含扩展名),请相应修改!
NewUninsName := 'UninstallGCPI';
// 应用程序名称,与 [SEUTP] 段的 AppName 必须一致,请相应修改!
MyAppName := 'GCPI';
// 以下重命名卸载文件
uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'));
uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);
RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe');
RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat');
end;
// 以下修改相应的注册表内容
if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1') then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"');
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT');
end;
end;
4.再写install.bat文件
@echo off
title 运维系统正在安装中,请不要手动关闭
color 0a
echo compil32 环境变量
set InnoSetup=C:\Program Files (x86)\Inno Setup 5\
echo jdk 环境变量
set jdkpath=C:\Program Files (x86)\jdk1.6.0_43
::setx variable value -m
:: setx 这个是用来设置环境变量的,并且会写入注册表. variable,会被覆盖,此操作不可逆的
:: variable 代表键 value代表值 -m代表写入系统环境变量,如果没有该参数会写入当前用户环境变量.
setx JAVA_HOME "%jdkpath%" -m
setx CLASSPATH ".:%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
::追加path环境变量 find 后面/i代表忽略大小写 &&执行成功执行的命令 ||执行失败执行的命令
echo %Path%|find /i "%JAVA_HOME%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
::设置当前用户环境变量
setx Path "%%JAVA_HOME%%\bin;%Path%;%InnoSetup%"
)
echo mysql 环境变量
set mysqlpath=C:\Program Files (x86)\mysql-5.7.17-win32
::setx variable value -m
:: setx 这个是用来设置环境变量的,并且会写入注册表. variable,会被覆盖,此操作不可逆的
:: variable 代表键 value代表值 -m代表写入系统环境变量,如果没有该参数会写入当前用户环境变量.
setx MYSQL_HOME "%mysqlpath%" -m
::追加path环境变量 find 后面/i代表忽略大小写 &&执行成功执行的命令 ||执行失败执行的命令
echo %Path%|find /i "%MYSQL_HOME%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%MYSQL_HOME%%\bin" /f
::设置当前用户环境变量
setx Path "%%JAVA_HOME%%\bin;%%MYSQL_HOME%%\bin;%Path%"
)
echo tomcat 环境变量
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CATALINA_HOME /t REG_EXPAND_SZ /d "C:\Program Files (x86)\apache-tomcat-6.0.51" /f
echo mysql 环境变量
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYSQL_HOME /t REG_EXPAND_SZ /d "C:\Program Files (x86)\mysql-5.7.17-win32" /f
::echo 安装vcredist_x64.exe
::start /wait .\vcredist_x64.exe /verysilent sp-
::echo 安装vcredist2010_x64_XiaZaiBa.exe
::start /wait .\vcredist2010_x64_XiaZaiBa.exe /verysilent sp-
echo 启动mysql并更新密码
"C:\Program Files (x86)\mysql-5.7.17-win32\bin\mysqld.exe" --install
net start mysql
::设置mysql服务自启动
sc config mysql start=auto
"C:\Program Files (x86)\mysql-5.7.17-win32\bin\mysql.exe" -u root -e "update mysql.user set authentication_string=password('root') where user='root' and Host = 'localhost'; "
net stop mysql
net start mysql
echo 导入gcpidb.sql
md C:\sql
move "C:\Program Files (x86)\GCPI\gcpidb.sql" C:\sql\
::mysql -h localhost -u root -proot < C:\Program Files (x86)\GCPI\gcpidb.sql
:: use names utf8;
"C:\Program Files (x86)\mysql-5.7.17-win32\bin\mysql.exe" -uroot -proot < C:\sql\gcpidb.sql
echo mysql启动完毕
::配置redis成为服务,就不会出现dos窗口
echo 启动redis
cd C:\Program Files (x86)\redis-3.0.503\
redis-server --service-install redis.windows.conf --loglevel verbose
redis-server --service-start
::start /b redis-server.exe redis.windows.conf
echo redis启动完毕
rd /s/q C:\sql
echo 删除gcpidb.sql
echo 启动tomcat
set JAVA_HOME=C:\Program Files (x86)\jdk1.6.0_43
set CATALINA_HOME=C:\Program Files (x86)\apache-tomcat-6.0.51
set CATALINA_BASE=C:\Program Files (x86)\apache-tomcat-6.0.51
cd /d C:\Program Files (x86)\apache-tomcat-6.0.51\bin
::安装tomcat到服务中
call service.bat install tomcat
::设置tomcat服务自启动
sc config tomcat start=auto
net start tomcat
exit
5.最后写uninstall.bat
@echo off
title abc系统正在卸载中,请不要手动关闭
color 0a
echo 删除环境变量
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /f
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CATALINA_HOME /f
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYSQL_HOME /f
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CLASSPATH /f
echo 删除Apache注册表项
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation" /f
setx Path ""
echo 停止并删除tomcat
net stop tomcat
cd /d C:\Program Files (x86)\apache-tomcat-6.0.51\bin
::删除tomcat服务
call service.bat remove tomcat
::cd ..\..\
::sc delete "tomcat"
echo 停止并删除mysql
net stop mysql
sc delete mysql
::删除redis服务
echo 停止并删除redis服务
net stop Redis
sc delete Redis
exit
5.检查文件目录是否存在:
if not exist c:\folder mkdir c:\folder //如果文件不存在,则进行创建
if exist c:\folder rd c:\folder /s/q //如果文件存在,进行删除%cd%:批处理脚本(bat脚本)、命令行窗口
%~dp0:批处理脚本(bat脚本
代表的值:
%cd%:会。因为代表的是当前目录
%~dp0:不会。因为代表的是脚本文件在磁盘的位置
使用范围:
%cd%:批处理脚本(bat脚本)、命令行窗口
%~dp0:批处理脚本(bat脚本)
posted on 2018-03-06 18:11 xiaojiayu0011 阅读(612) 评论(0) 收藏 举报
浙公网安备 33010602011771号