Jenkins之Windows msi按照过程中Invalid Logon_Ox80070533_MyFreeIT的博客-CSDN博客
垃圾jenkins ,用teamcity了
# coding: utf-8
import os
import subprocess
import sys
import re
import io
import codecs
project_path = sys.argv[1]
is_debug = sys.argv[2]
up_version = sys.argv[3]
platform = sys.argv[4]
use_hotfix = sys.argv[5]
use_aab = sys.argv[6]
svn_path = sys.argv[7]
qq_group = sys.argv[8]
build_path = project_path + "/Build"
svn_commit_path = build_path
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
def SafeHandleFunction(log='', errorlog='', errorcode=-1):
def decorator(func):
def wrapper(*args, **kwargs):
if len(log) != 0:
LogConsole(log)
try:
result = func(*args, **kwargs)
return result
except Exception as ex:
if len(errorlog) != 0:
LogConsole(errorlog, 1)
LogConsole(str(ex), 1)
exit(errorcode)
return func
return wrapper
return decorator
# 基类
class BaseBuilder:
def __init__(self):
# get base environment
self.UnityAppPath = "C:/Program\" \"Files/Unity/Hub/Editor/2019.4.24f1c1/Editor/Unity.exe"
self.LogFilePath = build_path+"/buildLog.log"
self.Error = ""
#set environment
self.args = []
self.args.append("--BUILDPATH:"+build_path)
self.args.append("--DEBUG:"+is_debug)
self.args.append("--UPVERSION:"+up_version)
self.args.append("--PLATFORM:"+platform)
self.args.append("--USEHOTFIX:"+use_hotfix)
self.args.append("--AAB:"+use_aab)
def CheckBuildState(self):
f = open(self.LogFilePath,"r",encoding="utf-8")
lines = f.readlines()
last_line = lines[-1]
if(last_line.find("1") >= 0):
for line in lines:
if(line.find("error")) >= 0:
self.Error += line
@SafeHandleFunction("Begin to build UnityProject", errorlog="Build UnityProject Error", errorcode=-1)
def Build(self):
buildFunction = "Framework.Editor.Build.JenkinsBuild"
UnityBuildCmd = "{} -batchmode -quit -nographics -executeMethod {} -logFile {} -projectPath {} {}".format(
self.UnityAppPath, buildFunction, self.LogFilePath, project_path, " ".join(self.args))
ExecuteBuildShell(UnityBuildCmd)
def LogConsole(content, isError=False):
print('\n<--- ' + str(content) + ' --->')
return
if not isError:
sys.stdout.write('\n<--- ' + str(content) + ' --->')
sys.stdout.flush()
print('\n<--- ' + str(content) + ' --->')
else:
sys.stderr.write('\n<--- ' + str(content) + ' --->')
sys.stderr.flush()
def ExecuteBuildShell(command):
shell_name = "tmp.sh"
f=open(shell_name,"w")
command="`"+command+"`"
LogConsole(command)
f.write(command)
f.close()
result = 1
result = subprocess.call(shell_name, executable=None, shell=True)
LogConsole("result: " + str(result))
os.remove(shell_name)
return result
def ExecuteShell(command,encod= "utf-8"):
LogConsole(command)
result = subprocess.check_output(command,encoding=encod)
LogConsole("result: " + str(result))
return result
def update_svn():
result= ExecuteShell("svn info {} --show-item revision".format(svn_path))
old_version = int(result)
ExecuteShell("svn update {}".format(svn_path))
result= ExecuteShell("svn info {} --show-item revision".format(svn_path))
new_version = int(result)
if(old_version != new_version):
update_info = ExecuteShell("svn log {} -r {}:{}".format(svn_path, old_version, new_version),"ANSI")
return update_info
return ""
def commit_svn():
file_status = ExecuteShell("svn status {}".format(svn_commit_path))
status = file_status.split("\n")
need_del_file_path = []
for s in status:
if(len(s) > 1):
match = re.match(r"(.*?)(\s+?)(\w+[\d\D]*)",s)
if(match.group(1) == "!"):
need_del_file_path.append(match.group(3))
for del_file in need_del_file_path:
ExecuteShell("svn delete {}".format(del_file.strip()))
ExecuteShell("svn add {} --force".format(svn_commit_path))
ExecuteShell('svn commit {} -m "commit build ...."'.format(svn_commit_path))
result = update_svn()
obj = BaseBuilder()
obj.Build()
obj.CheckBuildState()
commit_svn()
if(obj.Error != ""):
result = "打包失败🌧🌧🌧🌧:\n" + result +"\n"+ obj.Error
raise Exception(obj.Error)
else:
result = "打包成功👏👏👏👏:\n"+"下载地址:http://192.168.0.177:8081/ \n" + result +"\n"+ obj.Error
ExecuteShell(r"python C:\Users\BJ-2101\Desktop\jenkins_build\send_qq_msg.py {} {}".format(qq_group, result))
set svn_path=C:/work
set project_path=C:/work/teama/slg
set qq_group=166404167
set debug=%1%
set up_version=%2%
set platform=%3%
set use_hotfix=%4%
set use_aab=%5%
REM `C:/Program" "Files/Unity/Hub/Editor/2019.4.24f1c1/Editor/Unity.exe -batchmode -quit -executeMethod Framework.Editor.Build.JenkinsBuild -logFile $build_path/buildLog.log -projectPath $project_path --BUILDPATH:$build_path --DEBUG:$1 --UPVERSION:$2 --PLATFORM:$3 --USEHOTFIX:$4 --AAB:$5`
REM `C:/Program" "Files/Unity/Hub/Editor/2019.4.24f1c1/Editor/Unity.exe -batchmode -quit -executeMethod Framework.Editor.Build.JenkinsBuild -logFile $build_path/buildLog.log -projectPath $project_path --BUILDPATH:$build_path --DEBUG:true --UPVERSION:false --PLATFORM:StandaloneWindows --USEHOTFIX:false --AAB:false`
python C:/Users/BJ-2101/Desktop/jenkins_build/build.py %project_path% %debug% %up_version% %platform% %use_hotfix% %use_aab% %svn_path% %qq_group%
REM python C:/Users/BJ-2101/Desktop/jenkins_build/build.py %project_path% true false StandaloneWindows false false %svn_path% %qq_group%
echo build finish
pause