Время выполнения создать pv / pv c для каждого задания jenkins, работающего на подчиненном агенте - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу создать pv / pv c для каждого задания jenkins, работающего на ведомом агенте во время выполнения. По сути, я пытаюсь добиться создания pv и делиться им между модулями, а затем удалять, когда работа завершена.

pipeline {
    agent {
        kubernetes {
            label 'scm'
            yaml """
              apiVersion: storage.k8s.io/v1
              kind: StorageClass
              metadata:
                name: fast
              provisioner: kubernetes.io/gce-pd
              parameters:
                type: pd-ssd
              ---
              apiVersion: v1
              kind: PersistentVolumeClaim
              metadata:
                name: claim1
              spec:
                accessModes:
                  - ReadWriteMany
                storageClassName: fast
                resources:
                  requests:
                    storage: 1Gi
              ---
              apiVersion: "v1"
              kind: "Pod"
              spec:
                containers:
                  image: "jenkins/jnlp-slave:3.35-5-alpine"
                  name: "jnlp"
                  volumeMounts:
                  - mountPath: "/home/jenkins/agent"
                    name: "workspace-volume"
                    readOnly: false
                - command:
                  - "cat"
                  tty: true
                  volumeMounts:
                  - mountPath: "/home/jenkins/wsp1"
                    name: "workspace-volume"
                    readOnly: false
                volumes:
                  - name: "workspace-volume"
                    persistentVolumeClaim:
                      claimName: claim1


              """
            }
        }
    stages {
        stage('Checkout code') {
            agent { label 'scm'}
            steps {
                git branch: 'master',
                credentialsId: 'key',
                url: 'giturl'

                sh "ls -lat"
            }
        }
        stage('Build ') {
            agent {
              kubernetes {
                  label 'Build-pod'
                  yaml """
                    spec:
                      containers:
                      - name: maven
                        image: maven:3.3.9-jdk-8-alpine
                        command:
                        - cat
                        tty: true
                      volumeMounts:
                      - mountPath: "/home/jenkins/agent"
                        name: "workspace-volume"
                        readOnly: false
                    """
              }
            }
            steps {

                sh "echo Workspace dir is ${pwd()}"
                sh "mvn  clean install  
            }
        }
    }

}

Вышеописанный скрипт не работает по понятным причинам. У нас есть какие-то другие решения. и как использовать имя среды выполнения для pv c и использовать его pod.

metadata:
 name: claim1

Я использую jenkins helm на k8s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...