Integrate CircleCI with GitHub

簡介

CircleCI是個很強大的SAAS CI。其中最重要的莫過於GitHub的支援,本文就簡單介紹如何整合這兩個工具

材料準備

  • 工程師一位
  • GitHub帳號一個
  • AWS帳號(依個人喜好)

做法

  1. 前往CircleCI網站,點擊Sign Up Free,會要求輸入GitHub帳號密碼。
  2. 帳號創建完成並授權CircleCI存取GitHub後,會回到CircleCI主控制頁面,點左方Add Projects並選擇Project,CircleCI即會取得code並開始第一次的建置。

    CircleCI會自動判斷project的語言並尋找建置設定檔,對於javascript開發者來說就是package.json。CircleCI會依序安裝package.json所列的package,並執行npm test,如果一切順利通過則此次建置就算成功。一切的動作都可以即時在頁面上看到,上圖就是這個project可以看到因為沒有test可以跑所以失敗。

  3. 當然,以上都是基本的狀態,以CircleCI預設的環境與參數來測試與建置。如果想要有更進一步的控制,就需要在GitHub專案的跟目錄加上一個檔案circle.yml。這個檔案可以讓你自定系統環境、輸出測試報表、控制branch、發佈等等。一個簡單的circle.yml長得像這樣:

    machine:
      node:
        version: 0.11.13 #自定node版本
    general:
      branches:
        ignore:
          - /wip-.*/ # 忽略所有wip-開頭的branch
      artifacts:
        - "test/results" #測試報告放置目錄
    deployment:
      dev:
        branch: dev
        commands:
          - grunt dev-deploy #dev branch測試成功後即會執行此指令
      stage:
        branch: stage
        commands:
          - grunt stage-deploy #stage branch測試成功後即會執行此指令
      production:
        branch: prod
        commands:
          - grunt prod-deploy #prod branch測試成功後即會執行此指令

    • 詳細設定參數可以他們的文件,以下列出一些主要的部分以及其功能
    • machine:是設定主機環境,包含各種軟體版本,環境參數,服務等
    • general:一般設定,包含了要或不要測試哪些branch,報表輸出目錄,建置目錄等等
    • deployment:如果需要發佈程式,則須有此設定,唯有test成功之後才會執行

  4. 如果你有一些機密資訊比如AWS key或SSH key,別存在circle.yml,存到project setting的environment variables裏面,如下圖
    主機的env變數即會有存入的key-value,任何建置工具只要能取得環境變數的都可以拿到,比如說在grunt裏面:
    aws = {
      key: process.env.AWS_ACCESS_KEY,
      secret: process.env.AWS_SECRET_KEY
    };
    經由process.env取得了預先設定的環境變數AWS_ACCESS_KEY以及AWS_SECRET_KEY,簡單又安全的儲存機密資訊。

除錯

雖然說CircleCI的狀態頁面已經提供完整的建置訊息,但有時候總是需要一些更細不的測試,況且總不能每次改什麼小東西都要丟上GitHub然後讓機器重新跑一次。這時候SSH的功能就顯得非常好用了,開啓SSH的方式是在建置頁面的右上有個& enable SSH。點下去就會出現以下頁面:

然後照著他給你的指令連過去,就可以在機器上做實驗了,要注意的是每次只有30分鐘可以使用,時間到了就會強制斷線。

無用知識

CircleCI也支援Status Badge(就是我們常在GitHub專案的README第一行看到小圖示),在project setting裡面,可以把badge=style改成badge=shield會有另外一種常見的badge style出現喔~

沒有留言:

張貼留言