首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Container Registry和Jenkins

Google Container Registry和Jenkins
EN

Stack Overflow用户
提问于 2016-11-29 16:53:45
回答 2查看 981关注 0票数 1

我一直在尝试将Jenkins设置为使用Kubernetes,如教程中所示。我让一切都运行得很好,但我一直在尝试使用Kubernetes Jenkins插件添加一些自定义图像。似乎任何公共镜像都能正常工作,但当我创建一个镜像并将其放入我的私有Container Registry中时,Jenkins从镜像就失败了。

我想知道如何最好地利用Jenkins中Container Registry中的图像。我找到了这个教程(https://cloud.google.com/solutions/jenkins-on-container-engine#customizing_the_docker_image)。当我通过构建jenkins-slave映像并将其推送到我的存储库来尝试这些步骤时,它不起作用。每次它都会抱怨从服务器处于离线状态,并且无法访问。

EN

回答 2

Stack Overflow用户

发布于 2016-12-01 23:23:19

我从来没有尝试过谷歌容器注册表,但据我所知,你可以只使用完整的repo+image名称。类似于: gcr.io/my_project/image:tag

确保您的图片/repo与您的kubernetes和jenkins在google cloud上使用相同的服务帐户!

票数 1
EN

Stack Overflow用户

发布于 2021-05-15 01:13:26

当容器构建代理(以前的术语是slave)在Jenkins中显示为脱机时,这通常意味着如果使用管道,则Jenkins文件中存在错误,或者在拉取代理镜像容器时出现问题。

如果您使用的是Kubernetes插件,您将在Kubernetes pod和该插件的较新版本的构建日志中看到该错误。对于docker插件容器,错误可能不会出现在构建日志中,但会出现在docker日志中。

这通常是从注册表中提取映像的身份验证或访问问题。

如果您正在使用,则Pod YAML或Pod模板必须包含您希望从中提取容器镜像的Container Registry的imagePullSecrets

Jenkins脚本管道:

代码语言:javascript
复制
node {
  podTemplate(cloud: 'kubernetes', containers: [
    containerTemplate(
      name: 'mine',
      image: 'my-image:v1.2',
      ttyEnabled: true,
    ),
  ], 
  imagePullSecrets: [ 'my-credentials-id' ]) {
    sh 'run command'
  }
}

Jenkins声明性管道:

代码语言:javascript
复制
pipeline {
  agent {
    kubernetes {
      cloud 'kubernetes'
      defaultContainer 'mine'
      yaml '''
apiVersion: v1
kind: Pod
metadata:
  labels:
    build: my-app
spec:
  containers:
    - name: mine
      image: my-image:v1.2
      command:
        - cat
      tty: true
  imagePullSecrets:
    - name: my-image-pull-cred
    '''
    }
  }

  stages {
    stage('Run Build') {
      steps {
        sh 'mvn -version'
      }
    }
  }
}

如果您正在使用,您将需要定义docker代理withRegistry,它允许您为您希望从中提取容器镜像的注册表传递一个Jenkins凭证。

Jenkins脚本管道:

代码语言:javascript
复制
node {
  docker.withRegistry('https://my-registry.gcr.io', 'my-credentials-id') {
    docker.image('my-image:v1.2').inside {
      sh 'run command'
    }
  }
}

Jenkins声明性管道:

代码语言:javascript
复制
pipeline {
  agent {
    docker {
      image 'my-image:v1.0'
      registryUrl 'https://my-registry.gcr.io'
      registryCredentialsId 'my-credentials-id'
    }
  }

  stages {
    stage('Build') {
      steps {
        sh 'run command'
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40861442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档