在 Windows 下用 Bamboo 和 IAR 實(shí)現(xiàn)持續(xù)集成

Continuous Integration

前兩天寫(xiě)了篇名為《在 Ubuntu 的 KVM 中安裝 Windows 系統(tǒng)》的文章玖详,主要介紹了如何在 Linux 平臺(tái)上運(yùn)行 Windows 虛擬主機(jī)。

而搭建這一虛擬機(jī)的主要目的循衰,就是為了完成今天這篇文章所介紹的內(nèi)容:可持續(xù)化集成

Previously on Tommy's Blog 有提到褐澎,我們使用的是 Atlassian 全家桶会钝,因此配套的 CI 系統(tǒng)就是 Bamboo 啦。

安裝 Bamboo Agent

眾所周知,IAR 只能跑在 Windows 下面迁酸,所以我們需要配置一個(gè)能跟 Bamboo 系統(tǒng)聯(lián)動(dòng)的 Bamboo Agent先鱼。大家可以參考官方的 Bamboo remote agent installation guide,里面有詳細(xì)的 Bamboo Agent 安裝方法介紹奸鬓。

在安裝之前我們還需要先去 Java 官方的 Oracle 網(wǎng)站下載 JDK焙畔,因?yàn)?Atlassian 家的東西都是跑在 Java 上面的。當(dāng)前 JDK 最新的版本是 JDK 8u111串远。選擇對(duì)應(yīng)架構(gòu)的版本宏多,比如 x86,然后一路 Next 就安裝好了澡罚。

為了重啟以后不用人工啟動(dòng) Bamboo Agent 服務(wù)伸但,我們還需要在最后加一個(gè)小參數(shù) installntservice,這樣就可以把 Bamboo Agent 注冊(cè)為系統(tǒng)服務(wù)了留搔。像這樣:

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

注意:該命令必須要在管理員權(quán)限下執(zhí)行更胖,否則會(huì)報(bào)權(quán)限錯(cuò)誤!

安裝 Babun

因?yàn)?Windows 下默認(rèn)沒(méi)有 Git 之類的工具隔显,更不要說(shuō) OpenSSH 類的客戶端了却妨。所以要想好好的把 Bamoo Agent 跑起來(lái),Git 是不可或缺的括眠,畢竟我們總要取代碼倉(cāng)庫(kù)的代碼不是彪标?

Babun 是個(gè)什么鬼?參考官方的 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

說(shuō)人話和中文就是:一個(gè)好用的 Windows 下的基于 Cygwin 的 Linux-like 命令行工具套件捐下。

安裝方法也很簡(jiǎn)單账锹,下載壓縮包萌业,解壓縮,然后運(yùn)行 install.bat 搞掂奸柬。

默認(rèn)安裝在用戶目錄里面的 .babun 目錄內(nèi)生年,稍后我們會(huì)用到。

Babun

安裝好的 Babun 如上圖所示廓奕,已經(jīng)內(nèi)置好了 Git 和 OpenSSH抱婉,我們就不需要再單獨(dú)安裝這 2 個(gè)軟件了。我的用戶名是 Builder桌粉,所以 Babun 的安裝目錄是:

C:\Users\Builder\.babun

IAR 命令行編譯

本來(lái)以為 IAR 的命令行編譯會(huì)比較麻煩蒸绩,還要重新寫(xiě) Makefile 什么的,然而是我多慮了铃肯。官方在 2013 年就已經(jīng)給出了標(biāo)準(zhǔn)答案:Technical Note 47884

本身我們用的就是 IAR Embedded Workbench IDE患亿,所以保存的文件會(huì)有 .ewp 后綴的項(xiàng)目文件。只需要進(jìn)入項(xiàng)目目錄,運(yùn)行如下命令就可以命令行編譯了:

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

其中 -build Debug 相當(dāng)于傳統(tǒng)意義上的 make clean; make Debug步藕。-log all 表示 Log 所有信息惦界,這個(gè)可要可不要。

需要注意的是咙冗,這里的 Debug 并不一定是我們理解的傳統(tǒng)意義上的 Debug沾歪,而是一個(gè) Configuration 而已,具體的參數(shù)需要與實(shí)際項(xiàng)目配置相匹配雾消,否則無(wú)法正常編譯灾搏。

舉個(gè)栗子:

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>

設(shè)置環(huán)境變量

有了 Bamboo Agent 有了 Git,而且 IAR 命令行也編譯通過(guò)了仪或。那么 Bamboo 自動(dòng)化應(yīng)該可以做了吧确镊?No no no, that's too young too simple, sometimes naive.

當(dāng)你運(yùn)行 Bamboo 編譯的時(shí)候,會(huì)出現(xiàn)類似無(wú)法 fork范删,git 工作不正常的錯(cuò)誤蕾域,failed with code 128。這個(gè)就是環(huán)境變量設(shè)置的問(wèn)題了到旦。

打開(kāi)系統(tǒng)環(huán)境變量設(shè)置旨巷,并在用戶的環(huán)境變量中增加:

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

這樣當(dāng)前用戶才能直接在系統(tǒng)級(jí)別訪問(wèn)到 Git 和 OpenSSH 等工具,如圖:

Environment Variables
Edit environment variables

接下來(lái)我們需要打開(kāi)「系統(tǒng)服務(wù)」添忘,把 Bamboo Agent 的運(yùn)行賬號(hào)從系統(tǒng)修改為當(dāng)前用戶 Builder

Services

再次運(yùn)行 Bamboo 編譯采呐,發(fā)現(xiàn)環(huán)境變量已經(jīng)變成了:

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

并且也可以正常編譯和輸出項(xiàng)目文件了。

這里也參考了 Atlassian 官方的文檔:Bamboo does not pick up the Path environment variable correctly搁骑,但是并沒(méi)有使用官方推薦的 Work around斧吐,而是使用了上述的方法。

Windows 自動(dòng)登錄

Windows 在重啟后仲器,默認(rèn)停留在登錄界面煤率,這個(gè)時(shí)候遠(yuǎn)程桌面什么的都是不可用的。為了方便遠(yuǎn)程管理乏冀,我們還要多做一個(gè)步驟蝶糯,那就是自動(dòng)登錄。

這個(gè)也很簡(jiǎn)單辆沦,在下面的 Cortana 中輸入:netplwiz

netplwiz

啟動(dòng) User Accounts昼捍,選中要登錄的賬號(hào),去除登錄電腦需要用戶名和密碼前面的復(fù)選框肢扯,輸入賬號(hào)和密碼就可以了妒茬,如圖:

User Accounts

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔚晨,隨后出現(xiàn)的幾起案子乍钻,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件团赁,死亡現(xiàn)場(chǎng)離奇詭異育拨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)欢摄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)熬丧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怀挠,你說(shuō)我怎么就攤上這事析蝴。” “怎么了绿淋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵闷畸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吞滞,道長(zhǎng)佑菩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任裁赠,我火速辦了婚禮殿漠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佩捞。我一直安慰自己绞幌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布一忱。 她就那樣靜靜地躺著莲蜘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帘营。 梳的紋絲不亂的頭發(fā)上票渠,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音仪吧,去河邊找鬼庄新。 笑死鞠眉,一個(gè)胖子當(dāng)著我的面吹牛薯鼠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播械蹋,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼出皇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了哗戈?” 一聲冷哼從身側(cè)響起郊艘,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后纱注,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體畏浆,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年狞贱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刻获。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞎嬉,死狀恐怖蝎毡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氧枣,我是刑警寧澤沐兵,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站便监,受9級(jí)特大地震影響扎谎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烧董,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一簿透、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧解藻,春花似錦老充、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至胶背,卻和暖如春巷嚣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钳吟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工廷粒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人红且。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓坝茎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親暇番。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗤放,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容