在软件开发过程中,特别是在一些大型多人合作开发的项目中,如何将各个人开发的不同模块集合为一个完整的系统,最终输出一个完整的目标文件,这个过程包括编译,发布,自动化测试等环节。这一过程的完善程度和流畅程度将会影响整个发布过程,如果整个过程都需要人为干预,那么每次需要构建版本的时候都会是一场灾难。

笔者刚进入游戏行业时,曾经在一个初创手游团队工作过,当时所有版本的发布都是由我负责,在开发前期只有一个版本维护,仅仅是在验收的时候发布一个PC版,但是到了后期需要维护IOS和Android两个平台,其中Android版本在接入渠道后,针对每个渠道都要分别打包,整个过程都需要我手动控制,虽然写了几个自动化脚本但是整个流程并不是完全自动化,常常是之前搭建好的构建环境,在经过几次提交后又会出现若干错误,这时候又需要我一个一个解决。项目虽然还是在有条不紊的进行中但是整个发布过程却是异常痛苦。

后来又参与了一款端游的研发,项目的负责人利用Windows的定时任务和批处理脚本制作了一套自动化构建脚本,每次需要构建版本时只需要运行下批处理脚本,这个过程会锁定SVN的提交权限,任何人都无法提交任何东西,直到构建完毕,如果在构建过程中出现错误脚本会自动将错误信息发送到开发人员的IM工具。虽然端游只需要发布到一个平台,但是整个构建过程是不需要人为干预的完全不影响开发人员当前的工作。在每天的凌晨2点工具会自动构建当前最新的版本,这样测试组在上班后就可以立即用最新版本的游戏进行测试,并反馈测试结果。

因此一个完善的构建系统对于整个团队的开发效率是有很大影响的,通俗来讲构建系统(build system)是用来从源代码生成用户可以使用的目标(targets)的自动化工具,一个灵活的构建系统应该可以支持任意扩展和随意配置,并且支持流水线作业。目前市面上的几款自动化构建系统都已经非常完善强大了。

  1. Jenkins:Jenkins是一个老牌开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  2. Travis CI :Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的区别在于采用yaml格式,简洁清新独树一帜。

Jenkins

本文主要以Jenkins为例讲解如何在Windows环境配置自动化构建系统,Linux环境的配置可自行搜索相关文献。作为一款持续集成工具Jenkins不仅提供了基本的持续构建功能,还提供了很多强大的额外功能,比如:打包后使用开源软件FileZilla进行上传、下载部署;可以编写单元测试脚本自动执行打包后版本进行汇总性能分析;打包失败自动发送邮件给相关负责人等等。不仅如此Jenkins提供的插件功能更是涵盖了持续化集成的方方面面,这些功能基本可以满足任何项目的持续化集成与交付需求。

用到的软件或工具

  1. JRE :Java Runtime Environment(下载链接:Java SE Runtime Environment 8)
  2. Jenkins:(下载链接:http://mirrors.jenkins.io/war-stable/latest/jenkins.war)
  3. Python :Python2.7版本(https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi)
  4. 7z:压缩package工具(下载链接:http://www.7-zip.org/)

环境搭建

  • Python运行环境配置:下载并安装Python,将安装后python.exe所在的目录附加到PATH环境变量中,我的电脑->右键属性->高级系统设置->高级->环境变量,PATH中新增C:Python27(Python所在目录)。
  • Java运行环境配置:按照对应操作系统下载并安装jre,如果未自动配置Java环境变量,手动配置方法同Python。
  • 7z环境配置:下载安装好7z,环境变量 PATH中新增C:Program Files7-Zip(Python所在目录)条目。
  • Jenkins运行及配置:下载 jenkins.war,进入所在目录运行java -jar jenkins.war ,然后在浏览器中打开http://localhost:8080,复制以上密码,进行jenkins初次设置。
  • 配置环境:把刚刚复制的password粘贴到Administrator password,安装好必备的plugin,创建一个初始Admin User,Jenkins 环境就配置完成了。
解锁Jenkins

如果遇到“该Jenkins实例似乎已离线”

可以参考以下方式解决:

打开一个新的tab,输入网址http://localhost:8080/pluginManager/advanced。 将最下面的“Update Site”中Jenjins默认地址http://updates.jenkins.io/update-center.json改为其他国内备用地址:

  1. https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  2. http://mirror.esuni.jp/jenkins/updates/update-center.json

最后在浏览器输入http://localhost:8080/restart ,再启动就可以正常下载插件了。

安装插件

创建Job

在Jenkins主页下可以点击New Item 创建一个新的Job,Jekins提供了多种模板,选择第一个Freestyle project 。Item Name建议最好与你的项目相同。Job 配置有General,源码管理,构建触发器,构建环境,构建,以及构建后操作几个部分。

创建Job

打开Jenkins主页左侧系统管理,选择系统设置,在主目录下方一行点击高级按钮,显示出工作空间根目录,更改到你的Workspace中:E:You Project Name${ITEM_FULLNAME}

编写Build脚本

构建脚本可以是Python也可以是Windows的批处理命令或者其他语言编写的脚本,整个过程主要是通过在Jenkins中配置好的参数,调用脚本最终脚本调用对应的编译工具进行打包,如果是Unity项目最终会调用ProjectBuild.cs进行对应平台的打包操作。如果是Unreal项目则会调用Unreal Engine的打包工具进行打包。例如新建一个UnityBuild.bat的Unity构建文件:

UnityBuild.bat 内容如下REM UNITY程序的路径
SET UNITY_PATH="D:Program Files (x86)Unity2019.2.0f1EditorUnity.exe"REM 游戏程序路径
SET PROJECT_PATH="E:JenkinsworkspaceAutoBuild"REM 在Unity中构建apk
%UNITY_PATH% -projectPath %PROJECT_PATH% -quit -batchmode -executeMethod ProjectBuild.BuildForAndroid %1 -logFile build.logecho "Build生成完毕"
PAUSE

配置Jenkins job

jenkins job 配置官方有详细的文档,在Jenkins主页选择创建好的job,左边进入Configure

  1. General:勾选 “参数化构建过程”。添加参数 Choice Parameter, 填写Name为Configuration,Choices填Development和Shipping两个选项换行隔开,Description 添加一些描述语言。添加参数 String Parameter,填写Name为 Engine_Root,默认值为引擎目录,我的是“D:Program Files (x86)Unity2019.2.0f1Editor” 。再次添加Choice Parameter,填写Name为Platform,Choices填写Win64和Win32。
  2. 源码管理:以Git为例,Repository URL填写远程地址,Credentials点击Add添加git账户密码,其他选项按照需求填写。如果填写正确,每次build前会自动获取最新版本,选择None则跳过这一步。
  3. 构建触发器:Jenkins 提供了多种自动检查代码,自动构建的功能,这里比如设置项目每天1点构建,Build periodically 中填写:H 1 * * *
  4. 构建环境:这个模块主要做构建的一些相关设置以及一些Plugin提供的功能,勾选了Add timestamps to the Console Output 选项,会再build log 中增加时间戳。
  5. 构建:新增一个 Execute Windows Batch Command,命令行中填写:
UnityBuild.bat “D:Program Files (x86)Unity2019.2.0f1EditorUnity.exe” “%WORKSPACE%”

Build

配置完成保存,然后左边选择 Build with Parameters,可以看到配置中添加的参数列表,点击开始构建执行打包操作。同时还可以打开Console Output 查看日志,以及打开变更记录查看此次打包变更内容。打包后可以在配置好的release_path 目录下看到压缩后的版本。

参考文献

  • Jenkins+Unity踩坑日记(详细下载安装手册):https://blog.csdn.net/alph258/article/details/86075956
  • Jenkins集成unity一键打安卓包:https://zhuanlan.zhihu.com/p/87964476

脚本自动定时打开链接_自动化构建系统相关推荐

  1. 脚本自动定时打开链接_双12的自动领能量脚本,傻瓜才不用

    双十一的花呗还没还完,双十二又来了,钱包算是捂不住了,那就做充充能量开红包吧! 上次写 天猫双11自动逛店领币 时,推荐过auto.js,这次还是要用的到它,并且基于auto.js创作的脚本很多,比如 ...

  2. 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架

    随着移动互联网和微服务的迅速发展,大部分企业都采用接口的方式实现客户端和服务端的交互,传统的PC端也逐渐趋向于前后端分离架构.为了应对此种架构下的业务迭代,很多QA团队开始推广接口自动化,甚至是自研接 ...

  3. h5页面 请在微信客户端打开链接_请在微信客户端打开链接 html

    1 前言 有时候,需要链接只能在微信上打开,如果不是,则提示请在微信客户端打开链接的字眼的网页,网页代码如下:(这个是网页应用授权时,非微信上打开,就会出现,然后把它单独拿出来了) 2 代码 var ...

  4. python脚本自动消除安卓版_微信跳一跳脚本重出江湖,python实现安卓iOS自动版与手动版!...

    前面一段时间在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,毕竟这款小游戏最近吸引了众多人的目光. 演示工具 电脑系统:Win10 ...

  5. python 执行js打开链接_使用Python在链接的href中执行JavaScript

    javascript:打开窗口交付("http://bibliotecadigitalhispanica.bne.es:80/webclient/DeliveryManager?applic ...

  6. crontab详解-如何让脚本自动定时运行,设置、启动 linux定时器

    [root@test1 init.d]# crontab -e 在root文件后面添加一行(含义:每月的18日4:40分执行scott_select.sh) 40 4 18 * * /oracle_b ...

  7. 新标签页打开链接_显示空白的问题!

    问题描述: 提示:右键打开新的标签页跳转之后显示about:blank#blocked. 花费两个小时很久的问题,最后在打印出来的href解决掉它. 解决方案: 代码 document.addEven ...

  8. w10系统excel无法启动服务器,w10excel无法打开怎么办_解决win10系统无法打开excel的方法...

    win10精简版系统时出现了excel打不开无法使用的情况,那碰到这种问题该怎么处理呢?可能有些用户不太清楚,没关系,下面小编就来切大家分享解决 1.首先要打开控制面板.按下win+s 打开搜索界面, ...

  9. 推荐系统实战——自动化构建用户以及物料画像

    自动化构建用户以及物料画像 自动化构建用户以及物料画像 意义 新物料来源 物料画像的更新 物料更新添加入redis 合并,物料画像构建逻辑 用户侧画像的构建 画像自动化构建 用户画像更新脚本: pro ...

最新文章

  1. CCAH-CCA-500-4题:Where are Hadoop task log files stored?
  2. 万字谈监控:解答Zabbix与Prometheus选型疑难
  3. CUDA error:invalid argument
  4. 【接口时序】2、Verilog实现流水灯及与C语言的对比
  5. php4 apache 配置,[开发环境配置]windows下php4+mysql4+apache2开发环境配置
  6. Windows 10 LTSB 还原默认照片查看器
  7. nlp论文——《Efficient Estimation of Word Representations in Vector Space》(向量空间中词表示的有效估计)
  8. 关于《编程之美》稿酬捐赠的补充说明
  9. 持续集成部署Jenkins工作笔记0016---测试验证整个自动化持续集成流程
  10. Flutter进阶—质感设计之弹出菜单
  11. C语言将字符串转json
  12. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析...
  13. 在Windows下运行UNIX程序
  14. C语言之父:我创造了C语言,但这些书帮我表达了出来
  15. DeskPins-让应用始终在最前面
  16. 电脑出现问题。你的PIN不可用,请单击以重置——解决方案总结
  17. 链表——24. 两两交换链表中的节点
  18. 液晶屏 TTL屏、LVDS屏、TMDS屏区别
  19. arduino+旋转编码器
  20. 2020-11-16QQ数据库

热门文章

  1. try catch finally 中包含return的几种情况,及返回结果
  2. python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
  3. win8.1已阻止java_win8系统下打开java程序时出现应用程序已被安全设置阻止的解决方法...
  4. 计算机专业合成词,大学计算机论文范文大全.docx
  5. gsonformat插件_吐血推荐珍藏的IDEA插件
  6. Nginx反向代理的使用
  7. jMeter 模拟 web 高并发请求
  8. mybatis那些事~
  9. 状态反射在体育运动中的作用_体育运动木地板时刻运行在最佳状态的秘诀
  10. anaconda安装python视频_怎么安装anaconda?