1、確保擁有流水線的依賴倉庫權限 2、需要先創建對應的代碼倉庫並上傳對應的源碼 3、假設上傳的是go-svc的代碼倉庫,編譯對應的cat123服務
一、打包流水線編譯
cd /workdir/ #假設pipline的腳本中,此目錄下為go-svc的代碼倉庫的根目錄
echo "machine gz01-xxxxxx.xxxxx.cn" > ~/.netrc #存儲遠程登錄憑證(地址)
echo "login testuser" >> ~/.netrc #存儲遠程登錄憑證(用户)
echo "password xxxxxxx" >> ~/.netrc #存儲遠程登錄憑證(密碼)
go env -w GOPROXY="https://gz01-xxxxxxxxxxxx" #設置 Go 模塊的代理,指向一個倉庫(一般內部)
ls -la
cd go-svc/cat123 #進入對應的服務目錄
注意:確認go.mod處於哪一級目錄,是引用的額根目錄下的go.mod還是本目錄下的go.mod
go mod tidy
go build -o cat123 . #根據研發給的打包命令
ls -la etc/ #如果GoLand服務需要配合yaml文件,一般處於etc下
cp etc/cat123.yaml . #放在與二進制文件同一個目錄下
ls -la .
可能出現的問題:如果出現依賴問題,可以考慮replace替換依賴 replace xxxxxxxx/xxxxxxx/Publitest => ./Publitest 根據打包服務引用的哪個go.mod.在對應的文件內添加
二、doerfile打包
FROM xxxxx:latest
RUN mkdir -p /test-svc/
COPY cat123 /app/
COPY cat123.yaml /app/ #如果yaml確認不需要變動,那就可以直接打包進容器,否則最好是放在k8s的configmap裏面
CMD ["/test-svc/cat123","-f","/test-svc/cat123.yaml"]
三、k8s deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: cat123
namespace: default
labels:
app: cat123
spec:
replicas: 1
selector:
matchLabels:
app: cat123
template:
metadata:
labels:
app: cat123
spec:
containers:
- name: cat123
image: xxxxxxxxxxx/cat123:latest #確認內部鏡像地址,就是剛才docerfile打包上傳的哪個
ports:
- name: http1
containerPort: 31234
protocol: TCP
resources:
requests:
memory: "1Gi"
cpu: "800m"
limits:
memory: "2Gi"
cpu: "2000m"
volumeMounts:
- name: config-volume
mountPath: /test-svc/cat123.yaml #如果需要頻繁變動yaml就把文件掛在configmap
subPath: cat123.yaml
volumes:
- name: config-volume
configMap:
name: wild-cat123-config
————————————————————————————————————————————
apiVersion: v1
kind: ConfigMap
metadata:
name: wild-cat123-config
data:
v1.yaml: |
{文件內容,全部複製}