Rancher 2.1針對CI/CD進行了新的升級,帶來了更好用的pipeline,這篇文章針對Rancher 2.1版本,講解如何使用Rancher pipeline來做SpringBoot工程的CI/CD.
演示代碼工程准備
首先創建一個SpringBoot的demo工程,push到github上(演示代碼工程地址:https://github.com/huangll99/demo)。
Rancher設置代碼庫
首先需要設置代碼倉庫的認證,使用github需要創建自己的app,獲取Client ID和Client Secret.
在流水線模塊選擇設置代碼庫,選擇認證&同步代碼庫,填入申請的Client ID和Client Secret.
然后啟用你需要做CI/CD的代碼庫。
添加compile階段
編輯步驟,使用maven鏡像作為編譯階段的基礎鏡像。使用mvn clean package命令編譯打包SpringBoot工程。
添加publish階段
編輯步驟,將maven打包得到得可執行jar包,構建為docker鏡像
dockerfile如下:
FROM 10.3.10.131:5000/gsafety/java:8
MAINTAINER huangll99@126.com
ADD target/demo-0.0.1-SNAPSHOT.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Xmx300m","-Dserver.port=8080","-jar","app.jar"]
然后推送到鏡像倉庫,這里使用了自己內部部署得harbor鏡像倉庫。
添加deploy階段
編輯步驟,部署剛剛構建好的鏡像。
使用的deploy.yml如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: demo-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: demo
track: stable
spec:
containers:
- name: demo
image: 10.3.10.131:5000/gsafety/demo:v3
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: demo-svc
spec:
type: NodePort
selector:
app: demo
ports:
- protocol: TCP
port: 8080
targetPort: 8080
rancher的pileline會在代碼工程里創建對應的配置文件.rancher-pipeline.yml
完整的pipeline配置文件如下:
stages:
- name: compile
steps:
- runScriptConfig:
image: maven:v1
shellScript: mvn clean package
- name: publish
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: gsafety/demo:v3
pushRemote: true
registry: 10.3.10.131:5000
env:
PLUGIN_DEBUG: "true"
PLUGIN_INSECURE: "true"
- name: deploy
steps:
- applyYamlConfig:
path: ./deployment.yaml
timeout: 60
branch:
include:
- master
從rancher的面板上看就是如下圖所示: