文章目录
前言
使用HbuilderX的可视化界面打包不得不说是非常方便,云打包但是事实上,当你试图于对开发和打包的任务进行分离的时候,会发现可视化打包不符合你的需求,它无疑提高了后者的时间成本,并让进行后者操作的人一脸蒙圈,我在干啥,这个开发完打包不就行了,产生了对分离这个任务的决定的怀疑。
当我想进行这项打包操作的时候,这个打包的时间成本,无疑需要加上由开发到发版的响应成本,这是损耗更有价值事情的成本。那这份成本,就需要我们进行降低
一、HbuilderX
1.1 HbuilderX是什么,怎么下载
当你想仔细看这篇文章的时候,我认为这个问题不需要我进行解决。
1.2 HbuilderX的使用方式
这个问题我认为HbuilderX的使用方法,工具开发者的使用文档比我详细。
1.3 Hbuilder cli的使用方式
其实这个和上面一样,开发者写的比较完善,但是其实实际使用中我遇到了一些问题,因此说明一下。
使用HbuilderX cli 打包无非四步:打开软件,打开项目,打包,关闭项目。
打开软件:cli.exe open
打开项目 cli project open --path +项目的绝对地址
打包cli pack --project 项目 + --platform android --safemode true --android.packagename io.test --android.androidpacktype 1 --android.certalias --android.certfile --android.certpassword --isconfusion false --splashads false --rpads false --pushads false --exchange false
这个其实和可视化打包的配置一 一对应,按需配置就行,HbuilderX官网的配置文件说明写的很清楚。
需要注意的是safemode
这个属性,这个代表的是安心急速打包,如果不配置成开启状态,每一次都会默认为首次打包,这个等待时间不会是你想要的。
关闭项目:cli project close --path +项目地址
需要说明的是,这个cli的该功能似乎存在bug,不确定是否修复了,但还是说明一下,windows中的目录层级使用反斜杠是可行的,前三个步骤使用反斜杠可行,但是这个关闭项目的功能,必须使用正斜杠,否则无法准确找到路径。
二、githab(gitee)到jenkins
需求:当代码有本地提交到远程仓库时,可以进行自动拉取
其实网上有很多,仓库本身也有说明文档,以后有时间再补,没有就不补了。
三、jenkins自动化触发
1.怎样让jenkins去触发windows上的程序
我使用了rpc,具体来说是xml-rpc,它可以调用服务端的函数,就和调用自己项目里的函数一样容易。
一个xmlrpc_client项目作为客户端,一个xmlrpc_server 项目作为服务端
而jenkins通过jenkinsfile文件启动客户端项目,在windows服务器上启动服务端。
2.流程
开发上传代码,然后jenkins拉取远程仓库代码,jenkins通过xmlrpc_client向windows服务器上的服务端发送请求,并调用服务端的函数和数据完成打包操作。
3.结构
- jenkins读取jenkinsfile开始构建,jenkinsfile中启动xmlrpc_client,并调用方法
- xmlrpc_client应该传递hash值作为更新依据;考虑到可能存在多个不同的uniapp,需要提供project_name或者鉴别的参数传递;最后的结果最好能自动发送给自己,因此可以传递一个数组用于存放邮件收取人
- 在服务端安装git,然后通过hash更新代码
- xmlrpc_client和xmlrpc_server 应读取配值文件,而非硬编码
- xmlrpc_server 在服务端应进行封装处理
4.xmlrpc_client和xmlrpc_server 具体的代码
我认为这部分是仁者见仁智者见智的,具体的内容就不填了
给个结构照猫画虎就行。
import xmlrpc.client
import argparse
import pathlib
import sys
import yaml
class Xmlrpc_client:
#argparse的用法略
#读取配置文件的方法略
server = xmlrpc.client.ServerProxy("http://" + host + ":" + post)
def test(self):
output= self.server.hello()
print("output:" + output)
import argparse
import os
import time
import yaml
import smtplib
import os.path
import pathlib
import datetime
import subprocess
from builtins import str
from pathlib import Path
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
class Xmlrpc_server:
#argparse的用法略
#读取配置文件的方法略
#smtp邮箱配置代发略
#git拉取远程仓库略
#调用cmd指向打包命令略
def hello(self):
return "success!"
def main(self):
with SimpleXMLRPCServer(('0.0.0.0',post),
requestHandler=RequestHandler) as server:
server.register_introspection_functions()
server.register_function(self.hello)
server.serve_forever()
Xmlrpc_server().main()
总结
主要说明了我的部署的过程