使用Jenkins实现CocosCreator的自动化构建和发布

一、安装Jenkins

(1)简介

Jenkins是个独立的开源软件项目,它是基于Java开发的一种持续集成工具,可用于实现各种任务的自动化,如构建,测试和部署等。
项目的日常开发中,编译构建是每天频繁要做的事情,如果开发的是H5游戏,还需要把构建后的版本上传到Web服务器,这都会占用或中断程序员不少宝贵的编码时间。借助Jenkins的自动化管理,任何人通过浏览器就可以一键完成以上工作,这样程序员只要专注于编码就可以了。

(2)Jenkins特点

开源免费;
跨平台(支持所有的平台);
master/slave支持分布式的build;
web形式的可视化管理页面;
安装配置超级简单;
功能强大(已有1200多个插件);

(3)安装Jenkins

首先我们需要一台机器作为构建机,在它上面安装JenkinsJenkins基于Java开发,跨平台支持非常好,几乎是所有平台都能运行Jenkins。不过对于CocosCreator项目来说,就只能选择Windows或Mac机器了,本文主要以win10系统为例。

1、到Jenkins官网(https://jenkins.io/)下载msi格式的Windows安装包,当前最新版本是2.277.1,正常安装;
2、安装完成后,打开浏览器输入地址:http://localhost:8080/jenkins,按页面提示从本地复制密码并输入;
3、安装默认推荐的插件;
4、创建第一个管理员用户。这是指Jenkins系统的管理员,因为Jenkins是个分布式平台,支持任意多个用户并行操作,不同用户有不同权限,所以在Jenkins第一次安装后需要立即创建一个管理员;
5、如果看到如下界面,代表Jenkins已经安装成功。

二、自动化脚本

本质上Jenkins是个可视化的Web管理工具,执行的各种任务其实都是通过命令完成的,我们要做什么任务,就为这个任务提供相应的命令。例如,Windows平台批处理命令

所以我们首先学会使用命令行来构建CocosCreator项目,之后才能在Jenkins中实现一键自动化构建和发布。

(1)命令行构建CocosCreator

CocosCreator.exe本身支持命令行,简单使用有以下参数就够了。

  • –path - 指定项目路径
  • –build - 指定构建项目使用的参数
  • –compile - 指定编译项目使用的参数
    --build--compile后如果没有指定参数,则会使用Creator 构建面板当前的平台、模板等设置来作为默认参数。如果指定了其他参数设置,则会使用指定的参数来覆盖默认参数。

此次我们使用默认配置即可,所以在命令行中进入我们需要构建的Creator工程目录,输入命令:

C:\CocosCreator\CocosCreator.exe --path . --build

即可在当前路径使用默认参数完成构建。

(2)命令行发布CocosCreator项目

构建完成后,如果是支持浏览器的H5游戏,我们还需要把构建后的版本上传到Web服务器,完成发布。Windows上有个免费的远程文件传输工具pscp,支持命令行把指定文件或目录上传到远程服务器。pscp的参数含义如下:

  • -l 远程服务器的用户名
  • -pw 远程服务器的密码
  • -r 拷贝整个目录
    如果Creator构建使用的是web-mobile方式,则构建后的版本目录默认是 build\web-mobile\,假设远程服务器已配置好 nginx来提供Web服务,端口是8000,IP地址是192.168.1.100,存放目录是 /usr/share/nginx/Hello,登录用户名是root,密码是123456,那么输入命令:
pscp -l root -pw 123456 -r .\build\web-mobile\ 192.168.1.100:/usr/share/nginx/Hello

这样一个命令就把构建后的版本上传到了远程服务器,之后在浏览器中打开 192.168.1.100:8000,即可运行游戏的H5版本了。

(3)批处理

我们把这2个命令组合起来形成一个批处理文件,放在工程目录下,以后只要一个双击就完成了CocosCreator项目的构建和发布,非常方便。

echo "start build"
C:\CocosCreator\CocosCreator.exe --path . --build
echo "end build"
echo "start copy"
pscp -l root -pw 123456 -r .\build\web-mobile\ 192.168.1.100:/usr/share/nginx/Hello
echo "end copy"
@pause

三、第一个Jenkins任务

上面介绍了如何编写Creator项目构建和发布的Windows批处理,接下来我们将要在Jenkins中部署该任务,以实现真正的自动化。步骤如下:

(1)创建Creator项目

首先用Creator新建一个HelloWorld项目,并通过Creator构建面板中试着构建一遍,确认工程本身没有问题;

(2)准备远程传输文件工具

为保持目录整洁,在Creator工程目录下新建一个tools目录,把pscp.exe放到该目录下(后面远程传输文件会用到),形成的目录结构如下:

(3)创建Jenkins任务

登录Jenkins,新建一个名称为“HelloWorld”的任务,任务类型选择“自由风格的软件项目”,点击确定,就创建好了一个任务。在该任务视图中点击左侧的“配置”,按如下配置:

  • General:可以不填,全部留空即可;
  • 源码管理:选择“无”;
  • 构建触发器:全部不填;
  • 构建:增加一个“Windows批处理命令”,填写上篇文章介绍过的命令,如下:
e:
cd e:\dev\CocosCreator\HelloWorld\tools
c:\CocosCreator\CocosCreator.exe --path ..\ --build
pscp -l root -pw 123456 -r ..\build\web-mobile\ 192.168.1.100:/usr/share/nginx/hello

注:此处我的Creator工程路径是 e:\dev\CocosCreator\HelloWorld,CocosCreator安装目录是:c:\CocosCreator\CocosCreator.exe,构建后版本上传到web服务器的目标路径是/usr/share/nginx/hello,读者可根据情况自行调整。

构建后操作:留空即可;

(4)开始构建

保存上述配置后,回到任务视图,点击左侧的“立即构建”,即开始执行任务,也就是开始调用Creator进行HelloWorld工程的构建。


提示:如果是第一次使用Jenkins构建Creator项目,通常会失败,在进行到如下这一步停止,一直转圈:

Load ~/.CocosCreator/settings.json
checking language setting...

原因是Jenkins服务调用了Creator进行构建,而默认情况下Jenkins服务的权限不够,所以我们还需要给Jenkins服务提高权限。
打开Win10的“服务”面板,找到Jenkins服务,我的做法是把登录账户设为当前管理员账户。对于这个问题,Jenkins官方文档也给出了答案,如下图:

再次构建,就应该能顺利完成了,如果Jenkins成功执行了任务,将会在最后一行输出:

Finished: SUCCESS

这样,通过Jenkins的开放式Web页面,任何人(例如:研发团队里的策划、美术)都可以一键完成Creator项目的构建和发布,程序员可以安心地写代码了。

四、增加Git管理

上面讲述了Jenkins如何一键构建和发布Creator项目,不过构建的都是本地代码。本篇文章讲述如何通过Jenkins中结合代码Git管理,使本地提交代码抓取最新代码推送代码Git服务器等一套流程全跑通,并自动使用Git仓库中的最新代码进行CocosCreator的构建和发布。本文使用的环境为:本机Win10系统+本机Jenkins+远程GitLab仓库,步骤如下:

(1)Jenkins安装Git和GitLab插件

打开浏览器 -> 登录Jenkins -> 系统管理 -> 管理插件,切换到“可选插件”,搜索"git"关键字,找到“GitLab Plugin”“Git Plugin”,点击下方的“直接安装”。如果在“可选插件”里没有搜到,可能默认你已经安装了,可以在“已安装”里查看。如下所示:

等待安装完成。

(2)配置GitLab插件

要让Jenkins连接上GitLab仓库,通常需要Git密钥token
登录GitLab -> 点击“setting”——“Account”,复制Private token备用,如下所示:

打开浏览器 -> 登录Jenkins -> 系统管理 -> 系统设置,点击配置下拉框,点击Gitlab选项,如下所示:

Gitlab弹出框里,kind选择GitLab API Token,将先前复制的Private token粘贴到API token输入框中,然后点击Add,即配置好了。如下所示:

选择刚刚新建的Credentials,并根据自己情况填完整Connection nameGitLab host URL。设置完后,还要测试一下能否连接成功,点击test connection,要看到返回Success才行,如下所示:

然后点击页面底下的apply,再点击save,保存GitLab配置。

(3)配置Git插件

打开浏览器 -> 登录Jenkins -> 系统管理 -> 系统设置,点击配置下拉框,选择Git plugin选项,设置Git插件的全局配置,如下所示:

然后点击apply——save,保存Git配置。

(4)编写脚本

好了,现在把该配置的都配好了,Jenkins已经准备好了连接Git仓库,还剩最后一步,就是给Jenkins任务编写脚本。假设Creator工程路径是e:\dev\CocosCreator\HelloWorldgit分支masterpscp软件tools子目录下,按照 commit -> pull -> pushGit流程,脚本命令如下:

e:
cd e:\dev\CocosCreator\HelloWorld
git add .
git commit -a -m "commit resource from jenkins"
git pull origin master
git push origin master
C:\CocosCreator\CocosCreator.exe --path .\ --build
cd tools
pscp -l root -pw 123456 -r ..\build\web-mobile\ 192.168.1.100:/usr/share/nginx/Hello

如下图所示:


现在,只要本地代码有修改Git仓库里有新代码提交,直接运行这个任务,就自动完成了所有的构建和发布工作,并把最新代码提交到Git仓库

五、增加SSH远程操作

前面讲述了如何实现CocosCreator的自动化构建和发布,不过使用次数多了会发现一个问题:就是如果我们在Creator的构建选项中选定了MD5,则每次构建都会生成新的文件名,那么每一次上传新版本到服务器时,因为新文件不会覆盖旧文件,就会导致发布目录下的文件越来越多。所以我们还希望在每一次上传新版本前把旧文件删除掉,这就需要Jenkins能远程登录到服务器,并执行删除命令。

要让Jenkins支持远程登录需要安装SSH插件,并在Jenkins上设置好Credentials,然后在相应的Jenkins任务中使用该Credentials即可。步骤如下:

(1)新建Credentials

Jenkins界面,依次点击: Credentials -> System -> Add domain
Domain Name: 填写你的服务器地址,如:192.168.1.100;
Description: 随便写一点描述,如 This is the Credential for CocosCreator;
如下图所示:

点击 ok,再点击 “adding some credentials?”进入页面后,可以选择 Username with password或者 SSH Username with private key, 根据自己情况选择,为简单起见,这里我们选择 Username with password
Username: 远程登录的用户名,如:root
Password: 远程登录的密码,如:123456
ID: 空
Description: 空
如下图所示:

点击 ok,Credential就创建好了。

(2)SSH插件配置

再进入Jenkins系统管理 -> 系统设置,左上"配置"下拉菜单选择 ssh remote hosts,增加一个remote host,选择使用刚才创建好的 Credential,如下图所示:

(3)Jenkins任务配置

Jenkins任务配置的构建,选择增加“Execute shell script on remote host using ssh”,在SSH site选择使用刚才新建好的SSH site,并编写删除操作的shell命令:

rm -fr /usr/share/nginx/Hello/*

如下图所示:


(4)执行命令

一切都准备就绪,为了让 Creator构建 -> 删除旧文件 -> 上传新文件 按顺序执行,我们再把前面所用过的命令拆分为3部分,这样Jenkins就会按顺序执行了。

六、增加用户权限管理

随着Jenkins的使用深入,会发现需要给不同的用户配置不同的使用权限,虽然Jenkins自带用户权限管理,但比较简单,不支持用户组和项目的划分,因此需要第三方插件来实现更精细的权限管理,使用比较广泛的是Role Strategy Plugin插件,可以满足所有关于用户和权限的管理需求。官网:https://wiki.jenkins.io/pages/viewpage.action?pageId=57182927

你可能感兴趣的:(使用Jenkins实现CocosCreator的自动化构建和发布)