容器時代的持續交付工具---Drone:Drone使用


上一篇文章里已經介紹了如何安裝Drone,下面我們來看下如何使用。還是基於gogs作為git倉儲。

首先打開server對應的地址,進入登錄頁面,輸入在啟動server時配置的管理員賬號(對應的就是gogs里的賬戶,當然可以使用其他賬號,但是有些操作必須管理員才可以)進行登錄,可以進入到系統中。

 

 點擊右上角的同步按鈕,同步git庫,同步完后,下面就會列出目前gogs里所有的git庫,通過頂部搜索框也可以搜索要操作的項目,找到項目后,點擊項目后面對應的激活按鈕,如下圖:

 

然后點擊下面按鈕進行激活配置:

 

 一般保持默認,直接點save按鈕即可。

激活后,Drone就會激活gogs的webhook,監聽代碼變化,當有代碼發生變動時,就會觸發Drone的pipeline。

下面就來看下pipleline的配置方法,我們以一個maven工程為例,實現把一個maven工程進行自動編譯,然后打包成容器鏡像,並推送到私有容器倉儲里。

1,首先建立一個maven工程,里面添加自己的測試代碼。

2,在項目的根目錄下創建.drone.yml文件,這是配置pipeline的文件,drone工作都是靠它來說明的。

3,文件結構如下:

kind: pipeline
name: default
steps:
  *****

 steps里配置的就是整個pipeline每一步的具體操作,我們實例第一步是要把項目進行編譯,配置方法如下:

steps:
  - name: build
    image: maven:3.6.2-jdk-8
    commands:
      - mvn clean package
    when:
      branch: master
      event: [ push ]

 

name:當前步驟的名字

image:該步驟依賴的容器鏡像的名字

commands:在當前容器執行的指令

when:當前步驟觸發的條件,這里設置的是當master分支發生push操作時

通過這一步驟就可以執行我們平時做的mvn打包指令,當執行發生錯誤時,pipeline就會被終止(任何一個步驟發生錯誤,都會終止后續的操作)

第二步是要進行鏡像生成並推送到鏡像倉儲里,具體配置如下:

steps:
  - name: build
    image: maven:3.6.2-jdk-8
    commands:
      - mvn clean package
    volumes:
      - name: mavenrep
        path: /root/.m2
    when:
      branch: master
      event: [ push ]
  - name: docker image: plugins/docker settings: username: 倉儲登錄用戶 password: 密碼 registry: 倉儲服務地址 insecure: true是否是不安全倉儲,一般來說http協議的地址要設置為true repo: 倉儲路徑 tags: latest build_args: - JAR_FILE: *.jar when: branch: master event: [ push ] 

 

第12行之后是針對第二步的配置,對應參數按照自己的需要進行修改即可。

特別說明下是image: plugin/docker,這是drone里的plugin,插件也是以容器方式存在的,settings是針對當前插件需要參數的配置。

http://plugins.drone.io/這個地址下是目前drone里支持的插件(里面有一個wechat插件,可以實現微信的通知)。

到此一個pipeline就配置完了,因為我們需要打包docker鏡像,所以還需要創建一個Dockerfile文件,內容如下:

FROM openjdk:8
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]

 這個dockerfile非常簡單,就是把第一步生成的jar包打包進鏡像中並通過java指令啟動。關鍵是里面的JAR_FILE 參數,這是通過上面配置的build_args傳遞進來的。另外就是鏡像倉儲,可以使用harbor配置私有倉儲,然后配置上正確的賬戶信息即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM