上一篇文章里已經介紹了如何安裝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配置私有倉儲,然后配置上正確的賬戶信息即可。