如何在Jenkins上编辑Docker图像并将其传递给Kubernetes YAML文件

如何在Jenkins上编辑Docker图像并将其传递给Kubernetes YAML文件,jenkins,kubernetes,yaml,jenkins-pipeline,Jenkins,Kubernetes,Yaml,Jenkins Pipeline,基本上,我正在尝试在本地Jenkins上创建一个管道,创建一个图像,然后发送到Docker Hub。然后,我将在本地Kubernetes(服务器IP:10.10.10.4)上部署此映像 下面是Jenkins管道脚本 docker build -t test123/demo:$BUILD_NUMBER . docker login --username=testuser --password=testpass docker push test123/demo:$BUILD_NUMBER ssh

基本上,我正在尝试在本地Jenkins上创建一个管道,创建一个图像,然后发送到Docker Hub。然后,我将在本地Kubernetes(服务器IP:10.10.10.4)上部署此映像

下面是Jenkins管道脚本

docker build -t test123/demo:$BUILD_NUMBER . 
docker login --username=testuser --password=testpass
docker push test123/demo:$BUILD_NUMBER
ssh -tt root@10.10.10.4 'kubectl apply -f hybris-deployment.yaml'
所以问题是,;我可以用$BUILD_编号成功标记图像并推送到Docker hub。然后我必须在Kubernetes服务器的YAML文件中使用这个$BUILD_编号并部署它

但是我不能把这个$BUILD\u号传递给Kubernetes服务器。不知何故,我应该用ssh命令发送这个内部版本号,并在YAML文件中将其用作标记

知道我该怎么做吗?
谢谢

您创建的管道类似于

如果您deployment.yaml文件如下

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: test-image
  labels:
    app: test-image
spec:
  selector:
    matchLabels:
      app: test-image
      tier: frontend
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: test-image
        tier: frontend
    spec:
      containers:
      - image: TEST_IMAGE_NAME
        name: test-image
        ports:
        - containerPort: 8080
          name: http
        - containerPort: 443
          name: https
在管道中,您可以在部署中更改映像并替换此部件。yaml

sed -i "s,TEST_IMAGE_NAME,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA," deployment.yaml
因此,这个命令将替换部署.yaml中的第行,这样图像URL将更新,您可以应用yaml文件

您可以在此处看到jenkin文件的示例:


整个项目链接:

对不起,我不明白。例如,第一个管道命令应该是这样的?“docker build-t test123/”sed-i“s,TEST_IMAGE_NAME,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA,”。给我一个最简单的答案。@yatta检查一下:你还有什么问题吗。