Как определить объем рабочей области для декларативного конвейера jenkins

Я пытаюсь настроить декларативный конвейер, в котором я хотел бы сохранить рабочее пространство в качестве заявки на объем, чтобы большая проверка git могла быть быстрее. На основе doc есть варианты workspaceVolume и persistentVolumeClaimWorkspaceVolume, но я не могу заставить их работать - Дженкинс всегда делает следующее:

volumeMounts:
 - mountPath: "/home/jenkins/agent"
   name: "workspace-volume"
   readOnly: false
volumes:
  - emptyDir: {}
    name: "workspace-volume"

person Robert Ohajda    schedule 04.09.2019    source источник
comment
похоже, поддержка этого была добавлена ​​менее 2 месяцев назад: github.com/jenkinsci/kubernetes -плагин/коммит/   -  person Tavin Cole    schedule 29.04.2020
comment
Вы нашли решение для этого   -  person yusuf tezel    schedule 30.04.2020
comment
@yusuftezel ответ HiteshDhruna работает для скриптового конвейера, но этот вопрос касается декларативного конвейера, поэтому на него еще нет ответа.   -  person Segfault    schedule 01.05.2020


Ответы (3)


Попробуйте что-то вроде

podTemplate(
    containers: [
        containerTemplate(name: 'tree', image: 'iankoulski/tree', ttyEnabled: true, command: 'cat')
    ], 
    workspaceVolume: persistentVolumeClaimWorkspaceVolume(claimName: 'workspace', readOnly: false),
) {
    node(POD_LABEL) {
        stage('read workspace') {
            checkout scm
            container('tree') {
                sh 'env'
                sh 'tree'
                sh 'test -f old-env.txt && cat old-env.txt'
                sh 'env > old-env.txt'
            }
        }
    }
}
person hdhruna    schedule 30.04.2020
comment
Можете ли вы привести пример декларативного конвейера? И не могли бы вы объяснить, что здесь происходит, и сократить пример до критических частей для persistVolumeClaimWorkspaceVolume? Например, imagePullSecrets не имеют значения. И мы можем удалить логику, которая проверяет наличие пустого «workspaceClaimName», и просто предположить, что оно предоставлено, верно? - person Segfault; 30.04.2020

Вот пример декларативного конвейера:

pipeline {
agent {
    kubernetes {
        yamlFile 'jenkins/pv-pod.yaml'
        workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: 'workspace', readOnly: false)
    }
}
person iori    schedule 09.06.2020
comment
Это дает мне эту ошибку: Неверный параметр конфигурации workspaceVolume для типа агента kubernetes. - person Ben Moss; 02.12.2020
comment
Ах, у меня была старая версия плагина, которая еще не поддерживала эту функцию. - person Ben Moss; 02.12.2020

Если вы опубликуете свое развертывание jenkins, я могу помочь в этом.

Между тем, вы можете посетить этот yaml, который я использовал и очень хорошо работал для меня.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins:2.32.2
        ports:
        - containerPort: 8080
        volumeMounts:
          - name: jenkins-home
            mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-home
          emptyDir: {}
person Dupinder Singh    schedule 02.05.2020
comment
Вы можете предположить, что у Jenkins заканчивается кластер. Этот вопрос касается использования подключаемого модуля kubernetes для запуска агентов в кластере, когда он настроен как облако. Модули управляются Jenkins вместо любого встроенного контроллера k8s. Он запускает модули на основе podTemplate и нескольких других параметров конфигурации, определенных в конвейере Jenkinsfile, то есть в этом сценарии нет развертывания jenkins, если это имеет смысл. - person Segfault; 03.05.2020