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: | 
    {文件內容,全部複製}