在 Windows 下用 Bamboo 和 IAR 实现持续集成

Continuous Integration

前两天写了篇名为《在 Ubuntu 的 KVM 中安装 Windows 系统》的文章,主要介绍了如何在 Linux 平台上运行 Windows 虚拟主机。

而搭建这一虚拟机的主要目的,就是为了完成今天这篇文章所介绍的内容:可持续化集成

Previously on Tommy's Blog 有提到,我们使用的是 Atlassian 全家桶,因此配套的 CI 系统就是 Bamboo 啦。

安装 Bamboo Agent

众所周知,IAR 只能跑在 Windows 下面,所以我们需要配置一个能跟 Bamboo 系统联动的 Bamboo Agent。大家可以参考官方的 Bamboo remote agent installation guide,里面有详细的 Bamboo Agent 安装方法介绍。

在安装之前我们还需要先去 Java 官方的 Oracle 网站下载 JDK,因为 Atlassian 家的东西都是跑在 Java 上面的。当前 JDK 最新的版本是 JDK 8u111。选择对应架构的版本,比如 x86,然后一路 Next 就安装好了。

为了重启以后不用人工启动 Bamboo Agent 服务,我们还需要在最后加一个小参数 installntservice,这样就可以把 Bamboo Agent 注册为系统服务了。像这样:

java -jar atlassian-bamboo-agent-installer-5.13.2.jar https://bamboo.domain.ltd/agentServer/ installntservice

注意:该命令必须要在管理员权限下执行,否则会报权限错误!

安装 Babun

因为 Windows 下默认没有 Git 之类的工具,更不要说 OpenSSH 类的客户端了。所以要想好好的把 Bamoo Agent 跑起来,Git 是不可或缺的,毕竟我们总要取代码仓库的代码不是?

Babun 是个什么鬼?参考官方的 feature list,Babun 是:

  • Pre-configured Cygwin with a lot of addons
  • Silent command-line installer, no admin rights required
  • pact - advanced package manager (like apt-get or yum)
  • xTerm-256 compatible console
  • HTTP(s) proxying support
  • Plugin-oriented architecture
  • Pre-configured git and shell
  • Integrated oh-my-zsh
  • Auto update feature
  • "Open Babun Here" context menu entry

说人话和中文就是:一个好用的 Windows 下的基于 Cygwin 的 Linux-like 命令行工具套件。

安装方法也很简单,下载压缩包,解压缩,然后运行 install.bat 搞掂。

默认安装在用户目录里面的 .babun 目录内,稍后我们会用到。

Babun

安装好的 Babun 如上图所示,已经内置好了 Git 和 OpenSSH,我们就不需要再单独安装这 2 个软件了。我的用户名是 Builder,所以 Babun 的安装目录是:

C:\Users\Builder\.babun

IAR 命令行编译

本来以为 IAR 的命令行编译会比较麻烦,还要重新写 Makefile 什么的,然而是我多虑了。官方在 2013 年就已经给出了标准答案:Technical Note 47884

本身我们用的就是 IAR Embedded Workbench IDE,所以保存的文件会有 .ewp 后缀的项目文件。只需要进入项目目录,运行如下命令就可以命令行编译了:

<installation dir>\common\bin\IarBuild.exe test.ewp -build Debug -log all

其中 -build Debug 相当于传统意义上的 make clean; make Debug-log all 表示 Log 所有信息,这个可要可不要。

需要注意的是,这里的 Debug 并不一定是我们理解的传统意义上的 Debug,而是一个 Configuration 而已,具体的参数需要与实际项目配置相匹配,否则无法正常编译。

举个栗子:

C:\Users\Builder\Desktop\BLE-CC254x-1.4.2.2\Projects\ble\HIDEmuKbd\CC2540DB>"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\common\bin\IarBuild.exe" HIDEmuKbd.ewp -build "CC2540DK-MINI Keyfob Slave"

     IAR Command Line Build Utility V7.3.2.4037
     Copyright 2002-2015 IAR Systems AB.

Changed project file will force a full rebuild: C:\Users\Builder\Desktop\BLE-CC254x-1.4.2.2\Projects\ble\HIDEmuKbd\CC2540DB\HIDEmuKbd.ewp
Building configuration: HIDEmuKbd - CC2540DK-MINI Keyfob Slave
Updating build tree...

0  file(s) deleted.
Updating build tree...
battservice.c
devinfoservice.c
gap.c
gapbondmgr.c
gatt_uuid.c
gattservapp_util.c
hal_adc.c
hal_aes.c
hal_dma.c
hal_drivers.c
hal_flash.c
hal_key.c
hal_lcd.c
hal_led.c
hal_sleep.c
hal_startup.c
hal_timer.c
hal_uart.c
hiddev.c
hidemukbd.c
hidemukbd_Main.c
hidkbdservice.c
npi.c
OnBoard.c
OSAL.c
osal_bufmgr.c
osal_cbtimer.c
OSAL_ClockBLE.c
OSAL_hidemukbd.c
OSAL_Memory.c
OSAL_PwrMgr.c
osal_snv.c
OSAL_Timers.c
peripheral.c
scanparamservice.c
Linking

Total number of errors: 0
Total number of warnings: 0

C:\Users\Builder\Desktop\BLE-CC254x-1.4.2.2\Projects\ble\HIDEmuKbd\CC2540DB>dir "CC2540DK-MINI Keyfob Slave\Exe"
 Volume in drive C has no label.
 Volume Serial Number is EEF7-E82D

 Directory of C:\Users\Builder\Desktop\BLE-CC254x-1.4.2.2\Projects\ble\HIDEmuKbd\CC2540DB\CC2540DK-MINI Keyfob Slave\Exe

01/09/2017  02:58 PM    <DIR>          .
01/09/2017  02:58 PM    <DIR>          ..
01/09/2017  02:58 PM         1,493,621 HIDEmuKbd.d51
01/09/2017  02:58 PM           332,658 HidEmuKbd.hex
               2 File(s)      1,826,279 bytes
               2 Dir(s)  21,357,543,424 bytes free

C:\Users\Builder\Desktop\BLE-CC254x-1.4.2.2\Projects\ble\HIDEmuKbd\CC2540DB>

设置环境变量

有了 Bamboo Agent 有了 Git,而且 IAR 命令行也编译通过了。那么 Bamboo 自动化应该可以做了吧?No no no, that's too young too simple, sometimes naive.

当你运行 Bamboo 编译的时候,会出现类似无法 fork,git 工作不正常的错误,failed with code 128。这个就是环境变量设置的问题了。

打开系统环境变量设置,并在用户的环境变量中增加:

C:\Users\Builder\.babun\cygwin\bin

这样当前用户才能直接在系统级别访问到 Git 和 OpenSSH 等工具,如图:

Environment Variables
Edit environment variables

接下来我们需要打开「系统服务」,把 Bamboo Agent 的运行账号从系统修改为当前用户 Builder

Services

再次运行 Bamboo 编译,发现环境变量已经变成了:

Path=C:\Users\Builder\AppData\Local\Microsoft\WindowsApps;C:\Users\Builder\.babun;C:\Users\Builder\.babun\cygwin\bin

并且也可以正常编译和输出项目文件了。

这里也参考了 Atlassian 官方的文档:Bamboo does not pick up the Path environment variable correctly,但是并没有使用官方推荐的 Work around,而是使用了上述的方法。

Windows 自动登录

Windows 在重启后,默认停留在登录界面,这个时候远程桌面什么的都是不可用的。为了方便远程管理,我们还要多做一个步骤,那就是自动登录。

这个也很简单,在下面的 Cortana 中输入:netplwiz

netplwiz

启动 User Accounts,选中要登录的账号,去除登录电脑需要用户名和密码前面的复选框,输入账号和密码就可以了,如图:

User Accounts

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容