Jenkins
部署了个Jenkins来自动化打包。
目标机是Windows10,平时可能还要用,所以我选择在上面装Linux子系统,装了个Ubuntu。Jenkins装在了Ubuntu中,要编译的服务器代码在Windows的C盘目录下。我以为Linux子系统不能访问Windows目录,没想到可以,目录是/mnt/c/
。
安装
在https://www.jenkins.io/download/ 下载对应的软件包安装。
它安装后就已经加到自启动目录了,使用以下命令来启动Jenkins服务。
sudo service jenkins start
之后就能在网页上访问了。默认地址是http://localhost:8080/
新建任务
输入名称后点ok。
添加了两个构建步骤。
构建步骤1
源码管理这块,我本来想用svn的,但是后来发现,不对劲。源码目录在Windows上,并不能更新工作区目录以上的目录。所以我新建了个脚本。
cd /mnt/c/<项目位置>
sudo svn update --username your_username --password your_password
需要注意的是,Jenkins并没有sudo权限,执行脚本会出错。提示需要输入密码。错误如下:
...
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required
Build step 'Execute shell' marked build as failure
Finished: FAILURE
此时需要
sudo chmod u+w /etc/sudoers
sudo vim /etc/sudoers
之后在打开的文件中添加一句
jenkins ALL=(ALL) NOPASSWD: ALL
之后就能让Jenkins执行sudo命令了。
构建步骤2
在更新完代码后编译。编译完成后,直接杀掉Linux中的当前游戏服务器进程。运行启动服务器脚本。
大致如下
cd /mnt/c/<项目地址>
# 编译游戏服务器
sudo bash build.sh
# 关闭 Linux 子系统中的所有名称为 App 的进程(假设游戏服务器进程名是App.dll)
sudo pkill -f App.dll
# 启动脚本(...替换为项目名)
sudo bash StartServer.sh