k8s與CICD--一個完整的drone demo

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

前言

在上一篇文章中,我們只是簡單介紹了一下drone的部署。接下來會逐步深入介紹,後期也會翻譯一些官方的文檔以及我在實際工作中用到的外掛程式的介紹。這篇文章,主要是一個完整的drone demo。pipeline中,包括了git clone 拉取代碼,go build 構建,產生docker鏡像並推送到harbor,notify 通知。關於通知這塊,官方提供的外掛程式都是一些西方喜歡用的即時通訊或是協作工具,比如telegram,slack,line等。所以在後期,我計劃寫一個或是DingTalk的外掛程式。

.drone.yml

先上設定檔,有一個大概的認識,再逐一解讀。

workspace:  base: /go  path: src/gogs.xxx.com/baa-cicdpipeline:  build:    image: golang:latest    commands:      - go build -o baa-cicd  publish:    image: plugins/docker    registry: registry.xxx.com    repo: registry.xxx.com/test/baa-cicd    tags: latest    secrets: [ docker_username, docker_password ]    insecure: true  notify:    image: plugins/slack    webhook: https://hooks.slack.com/services/xxx/xxx/xxx    channel: dev    template: >      {{#success build.status}}        build {{build.number}} succeeded. Good job.      {{else}}        build {{build.number}} failed. Fix me please.      {{/success}}

workspace

工作空間,就是一個可以被pipeline各個階段共用volume和工作路徑的東東,好處就是避免了各種cd和拷貝。由於該demo項目使用golang。所以設定路徑是/go/src/gogs.xxx.com/baa-cicd。

clone

git plugin 是一個預設的外掛程式,即使不配置,drone會自動設定,用來拉取代碼。

build

由於是golang項目。一個命令go build即可。當然由於項目比較小,所以我提前用glide將依賴的包安裝到vendor目錄下了。否則應該定製自己安裝好glide的鏡像,或是在go build命令之前,執行 glide install 命令。當然此處也可以增加go test 對項目進行測試。

build:    image: golang:latest    commands:      - glide install      - go build -o baa-cicd      - go test -v

docker build

構建docker鏡像階段,我們這邊用harbor搭建了自己的私人registry。此處需要注意的是secrets: [ docker_username, docker_password ]這裡的設定。實際上有一些情境是,為了安全考慮,不想把使用者名稱和密碼暴露在設定檔中,drone提供了secret ref的用法。在drone ui介面配置secret,如下:

然後在.drone.yml 裡通過secrets選項進行關聯即可。

當然這一步前提是要提供一個Dockerfile檔案。

FROM alpineRUN apk add -U tzdataRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtimeCOPY baa-cicd  /usr/local/bin/baa-cicdEXPOSE 13123ENTRYPOINT  ["baa-cicd","--port=13123"]

notify

在通知這塊,我沒有使用email外掛程式,恰好之前加入了istio的slack,所以自己建立了slack中的workspace,然後在其中建立一個channal,命名dev。
此處需要說明的是webhook的設定。具體可以查看slack官方文檔。設定成功以後,
然後拷貝 Webhookurl即可。當然可以定製自己的頭像以及app名。我這邊都是預設的。

最後實際收到通知效果:

demo 源碼

具體代碼,我放到了github上。大家直接git clone 下來即可。
最後放一張整個build的圖。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.