免費CI/CD服務簡評: Codeship, Wercker與BitBucket Pipelines

(題圖來自 soasta.com/solutions/co)

測試項目是一個用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通知機器人: app.wercker.com/#

推薦閱讀:

諸葛io 2.0全面上線,更開放更易用更強大
回歸商業本質 - SaaStr 2017年會Day 2
有關 AI + CRM 的一些觀察和思考
無推廣,一條美食視頻如何走向十萬量級之路?

TAG:持续集成CI | SaaS | 持续部署 |