Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Leon Tseng
    @godleon
    @zanhsieh 感謝大大提供資料,那關於這樣的 remote provision/build 的需求您有其他想法嗎?
    zanhsieh
    @zanhsieh
    我不是大大,所以沒什麼想法。就是現階段完成任務就行。如果你要 evaluate 市面上哪個 CI 好的話,那還有一堆語法轉換的事夠你搞了(起碼過完年全職搞才搞得完,不包奇怪的架構)
    Leon Tseng
    @godleon
    @zanhsieh 恩,目前是把時間花在 Concourse 上(文件似乎較完整...?),應該沒這麼多時間可以每一套都給他試一下....
    zanhsieh
    @zanhsieh
    基本上一般要求是:
    1. 平台 (dev, staging, prod)2. 建 docker image 3. 測試 4. 部署到哪 (vm? k8s? swarm? aws?)
      2.5. 要不要同時 build? 3.5 要不要同時測試? 0. 要不要通知 (slack, gitter)
    Leon Tseng
    @godleon
    關於佈署到 vm 的部份,不知道有哪些作法呢.....? 是否可以提供幾個作為參考呢.....? 謝謝.....
    Bo-Yi Wu
    @appleboy
    @godleon 部署到 vm?
    zanhsieh
    @zanhsieh
    vm / aws ec2 -> cm tools (puppet/chef/ansible/saltstack, bash + rsync)
    k8s -> helm chart + docker image pull
    swarm -> ???
    Leon Tseng
    @godleon
    @appleboy 恩,我希望在某些條件下,在 remote VM 上佈署特定的環境並啟動一些 container 做一些測試工作
    只是我還在想要怎麼讓 pipeline 知道要何時往下一個 task 走,因為實際上工作的是 remote VM 裡面的 container
    zanhsieh
    @zanhsieh
    一般兩種做法:push or poll。push 就是上游做完了跟下游說,可以是個 http request 或者其他通知方法,上游必須知道下游的 endpoint。poll 就是下游一直問上游做完沒,可以一樣用 http request ,屬於所謂 busy waiting。目前流行的是 push 的做法(省資源)。目前 Jenkins / Concourse / Drone 都有支援,只是正確語法要怎麼寫還要找。
    Bo-Yi Wu
    @appleboy

    @godleon 你說的這些條件都可以在各大 CI/CD 工具都可以做到,就看你的情境,再去找相對應的 CI/CD 工具設定。

    像是我們希望 git tag 丟上來,他只對 Production 機器作部署動作 .. 等

    Leon Tseng
    @godleon
    @zanhsieh @appleboy 是的! push 是我要的,只是我在想要 push 什麼,到哪裡,是比較合適的作法,目前我想到是往一個 Git repository push,讓下一個 task aware 到應該要開工了,但我不確定這樣會不會很奇怪 (因為在我的環境裡,其實工作都不是在 CI server 裏面做,都是在其他 remote server 作,CI server 應該只算是下達指令,把這些工作流程串起來而已)
    zanhsieh
    @zanhsieh
    下游需要什麼就 push 什麼。如,push 觸發測試流程,那測試需要知道哪個 image (e.g. commit #?? image arch tag?? ),什麼環境,一些環境變數(e.g. region?? environment?? token?? 連哪個 db),怎麼測(這個見仁見智,有人喜歡固定擺一起)
    Leon Tseng
    @godleon
    但我覺得這些問題可能都是因為我對 CI 還不是很清楚的關係,待我好好研究一番後,也許我會自己找到問題的解答
    zanhsieh
    @zanhsieh
    所以關於之前用哪個 CI ,你要碰到問題,發現手頭工具不夠,要嘛自己砌,要嘛轉。沒有自己實現時碰到問題,都只是 window shopping 而已。
    Leon Tseng
    @godleon
    恩,我現在正要進去 shopping 啦!!! XD
    Bo-Yi Wu
    @appleboy
    通常是這樣
    RD push commit to git server. Git server send hooks to CI server.
    Leon Tseng
    @godleon
    那比如說我在某個 remote server 上做的測試完成了.......接著要.....? 再 commit to Git server 一次嗎?
    zanhsieh
    @zanhsieh
    @appleboy Leon 問的問題比較靠近 pipeline orchestration
    Leon Tseng
    @godleon
    @zanhsieh 黑阿黑阿....沒錯、...
    Bo-Yi Wu
    @appleboy
    我聽起來感覺最前面那段 也不是很了解
    zanhsieh
    @zanhsieh
    @godleon 你是用哪個?Jenkins 可以 trigger,不知道其他的:
    http://stackoverflow.com/questions/36825103/jenkins-trigger-multi-branch-pipeline-on-upstream-change
    Leon Tseng
    @godleon
    @appleboy 喔我知道 commit 後可以 trigger CI server 開始上工
    Bo-Yi Wu
    @appleboy
    嗯嗯
    你現在打算用 jenkins 嗎?
    Leon Tseng
    @godleon
    @zanhsieh @appleboy 我目前在研究的是 Concourse,Jenkins 有比較好嗎?
    Bo-Yi Wu
    @appleboy
    OK
    要先知道你正在用哪一套
    才可以幫你解決問題
    XD
    Leon Tseng
    @godleon
    說真的我看到 Java 就頭眼昏花......... :worried:
    zanhsieh
    @zanhsieh
    沒有啦,各有各的問題
    Leon Tseng
    @godleon
    我是希望把整個 pipeline 都用 container 來串.....
    我大概講一下我目前內部狀況好了
    zanhsieh
    @zanhsieh
    我之前2016年年初好像有看過有人做 docker container pipeline,就是把一個 container 輸出導入另一個 container 輸入。當時對我來說沒有用處,看過就算。現在找不到了,也許你問 FB docker taipei 版主他也許還有印象,如果你需要的話。
    Leon Tseng
    @godleon

    當 RD commit code 到 Git server 之後,希望可以 trigger 以下 pipeline 的執行:

    1. 在 Remote bare metal server 上建立一個 VM (by KVM)

    2. 透過 Ansible 在 VM 上建立好特定的環境

    3. 透過那個 VM 佈署一套 OpenStack,並確認佈署完成

    4. 在同一個網段內啟動另外一個 VM(by KVM) 並安裝 docker

    5. 在該 VM 上啟動 container 去進行 OpenStack 相關的各種測試

    6. 把測試結果進行 parse 後丟回 Git server

    7. 通知使用者完成

    簡單說大概是如上,但是其實還有很多細節沒有提到,像是我還想把 Cumulus 的 provision 一起包進來當作是 pipeline 的一部份
    我要應用的地方跟一般純軟體是有點差異的.....
    Bo-Yi Wu
    @appleboy
    我覺得 1 ~5 是不是可以用一個 docker container 解決掉
    Leon Tseng
    @godleon
    您的意思是把 pipeline 儘量簡化嗎?
    zanhsieh
    @zanhsieh
    呃,兩個禮拜之前才有人透過 k8s 部署 openstack ....
    Leon Tseng
    @godleon
    第3個步驟,要花非常多的時間,搞不好要 40 mins 以上
    Bo-Yi Wu
    @appleboy
    我覺得步驟需要簡化
    如果你只想要單純測試程式面
    有需要用到 openstack?
    Leon Tseng
    @godleon
    不是,OpenStack 是我實際要產出的產品
    XD