免費CI/CD服務簡評: Codeship, Wercker與BitBucket Pipelines
01-31
(題圖來自 https://www.soasta.com/solutions/continuous-load-testing/)
測試項目是一個用JHipster生成的Spring Boot後端 + AngularJS前端的項目,build與test過程要同時用到JDK 8和node.js,是一個奇怪的混合體。代碼放在BitBucket。Codeship, Wercker與BitBucket Pipelines三者的免費版本都支持BitBucket的私有倉庫。Codeship:
- 項目build與test指令直接在Codeship項目管理界面設置,非常簡單。以上面所說的項目為例,只需要兩條setup與一條build/test命令:
jdk_switcher use oraclejdk8nnpm install -g bowern./gradlew testn
- 也提供其他多種常見開發語言的快速環境設置
- build+test速度在6到8分鐘左右,不過有大約一半的時間是花在npm install與gradle下載各種jar包上
- 免費版每月最多100次build
- 如果想使用基於Docker的build,需要購買至少$75/月的付費版
- 提供Webhook,可集成到Slack等
- 支持自動deploy到Google AppEngine, Heroku, AWS S3等等
Wercker:
- 類似Travis,項目build配置需要自行寫在wercker.yml里
- 免費版直接支持基於Docker的build!不限構建次數!
- 因此我直接做了一個包含JDK8和node.js 4.x的docker image,build與test環境完全自己定製
- build+test速度和codeship相仿,約一半時間花在下載依賴上
- 不提供Webhook,build狀態通知需要通過在wercker.yml里指定bot來實現。目前只在build完成時會觸發通知。不過對於bitbucket/github項目,會自動更新build狀態,顯示在PR里。
- 免費版支持pipeline方式構建,類似Jenkins 2.0新加入的pipeline模式
- 有一個專門的Registry放各種官方和第三方的pipeline step和bot
- 免費版也支持deploy,支持的target由step定義
BitBucket Pipelines:
- 很討巧的直接用"Pipelines"當產品名字
- 與BitBucket無縫集成,免費版僅支持一個項目
- build配置也是YAML,寫出來和Wercker很像
- 免費版也支持Docker
- 免費版在資源分配方面非常小器,目測docker container只分配了1G或更少的內存,因為在用PhantomJS跑測試時一定會out of memory
作為對比,我在阿里雲一台單核2G內存的server上跑Jenkins,同樣的項目大約花3-4分鐘完成build+test,時間上和Codeship/Wercker相近(因為Jenkins上Job配置不需要每次重新下載npm和jar的依賴)。
總結一下。個人小項目,要快速搭建CI/CD環境,Codeship是個不錯的選擇。中小團隊項目,使用Docker構建,又想節省花在CI/CD上的成本,Wercker簡直好到不能再好。
友情附贈Wercker + BearyChat通知機器人: https://app.wercker.com/#applications/5739b2c06701b8335f044717/tab/details/
推薦閱讀:
※諸葛io 2.0全面上線,更開放更易用更強大
※回歸商業本質 - SaaStr 2017年會Day 2
※有關 AI + CRM 的一些觀察和思考
※無推廣,一條美食視頻如何走向十萬量級之路?