标签: jenkins-kubernetes

jenkins Slave 的 PersistentVolumeClaim 工作区

PersistentVolumeClaim我正在尝试使用kubernetes-plugin来保留我的工作区

我已经创建了文件PV并将PVC其存储在本地磁盘上。该管道以前运行良好,但现在不再在本地磁盘上创建工作区。

这是我的管道。知道为什么不起作用吗?

def podTemplate = """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: maven
    image: maven
    command:
    - sleep
    args:
    - infinity
    volumeMounts:
      - name: workspace-volume
        mountPath: /home/jenkins/agent
    workingDir: "/home/jenkins/agent"
  volumes:
      - name: "workspace-volume"
        persistentVolumeClaim:
          claimName: "jenkins-slave-pvc"
          readOnly: false
"""


pipeline {
    agent none
    stages {
        stage ('maven') {
            agent { 
                kubernetes {
                    yaml podTemplate 
                    defaultContainer 'maven' 
                } 
            }
            stages {
                stage('Nested 1') {                  
                    steps {
                        sh "touch Nested1 && mvn …
Run Code Online (Sandbox Code Playgroud)

jenkins kubernetes jenkins-pipeline jenkins-declarative-pipeline jenkins-kubernetes

6
推荐指数
1
解决办法
5101
查看次数

如何在独立的 Pod 中运行声明性詹金斯管道的并行阶段

我正在尝试在声明性 jenkins 管道上的不同kubernetes pod 上并行运行一些端到端测试,但 jenkins 似乎尝试在相同的kubernetes pod 上运行并行阶段。这会导致数据库死锁,因为两个进程都尝试插入/截断/更新/查询相同的表。有没有办法可以为每个并行阶段启动不同的 Pod?

kubernetes 插件配置:

  agent {
  kubernetes {
    label 'my-label'
    defaultContainer 'jnlp'
    yaml """
apiVersion: v1
kind: Pod
metadata:
  name: dind
spec:
  containers:
    - name: < default container >
      image: < image >
      securityContext:
          privileged: true
          fsGroup: 1000
      command:
      - cat
      tty: true
      volumeMounts:
        - name: jenkins-bundle-gems
          mountPath: /usr/local/bundle


    - name: <tests-container-name>
      image: < image > 
      securityContext:
          privileged: true
          fsGroup: 1000
      volumeMounts:
        - name: jenkins-bundle-gems …
Run Code Online (Sandbox Code Playgroud)

parallel-testing jenkins jenkins-pipeline jenkins-declarative-pipeline jenkins-kubernetes

5
推荐指数
1
解决办法
5527
查看次数

如果一个容器发生故障,如何杀死多容器 pod?

我正在使用Jenkins Kubernetes 插件,它在 Kubernetes 集群中启动 Pod,充当 Jenkins 代理。Pod 包含 3 个容器以提供从属逻辑、Docker 套接字以及gcloud命令行工具。

通常的工作流程是从机完成其工作并通知主机它已完成。然后 master 终止 pod。但是,如果从属容器由于网络连接丢失而崩溃,则该容器将终止并显示错误代码 255,其他两个容器将继续运行,pod 也会继续运行。这是一个问题,因为 Pod 具有大量 CPU 请求,而且从属设备仅在必要时运行的设置成本低廉,但让多台机器运行 24 小时或周末会造成明显的经济损失。

我知道在同一个 Pod 中启动多个容器并不是 Kubernetes 艺术,但是如果我知道自己在做什么并且我假设我知道的话就可以了。我确信考虑到 Jenkins Kubernetes 插件的工作方式,很难以不同的方式解决这个问题。

如果一个容器失败而没有重生,我可以让 pod 终止吗?带有超时的解决方案也是可以接受的,但不太优选。

jenkins kubernetes kubernetes-pod jenkins-kubernetes

5
推荐指数
1
解决办法
2791
查看次数