Skip to main content

Разное

node() {
  stage('first') {
  withEnv(["PATH+HUIWAM=${HOME}/.local/bin"])
    {
        sh "printenv PATH"
    }
   sh "printenv PATH"
   }
}
withEnv([
    "PATH+EXTRA=/home/jenkins/.local/bin"])
{
    node() {
        stage('first') {
            sh "printenv PATH"
            }
    }
}
pipeline {
  agent {
            kubernetes (kubernetesAgent(name: 'mini'))
  }
  environment {
      PATH="${HOME}/.local/bin:${PATH}"
  }
  stages {
    stage('Integrate Remote k8s with Jenkins ') {
      steps {
            sh "printenv PATH"
             withCredentials([file(credentialsId: 'mysrc', variable: 'MYFILE')]) {
                sh 'cp $MYFILE new.sh'
                }
        }
    }
  }
  }
// для груви скрипта нужно упаковывать в withenv чтобы были видны определенные в скрипте параметры, 
//параметры из jenkins видны
//param_in_main - текстовый параметр,
//build_type - второй параметр. 
withEnv([
    'ENV1=It work ' + param_in_main, 
    'ENV2=ooo',
    'missingfname=thefilereallymissing.txt'])
{
    node('slave') {
        stage('first') {
            sh "mkdir ~/bin" 
            sh "printenv PATH"
            sh "echo $param_in_main" //обращение к параметру из параметров в jenkins
            sh "echo $ENV1" //обращение к составному параметру, определенному внутри скрипта
            sh "echo $ENV2" //обращение к независимому параметру внутри скрипта
            }
            
        stage('check type of pipeline'){
            if (build_type == 'prod') { //если проверяем вне sh - доллар не ставится
                sh "echo 'This is a prod'"
            }
        }
        
        stage('test exeptions'){
            try {
                sh 'rm $missingfname'
            }
            catch (exc) {
                echo 'Попытались удалить несуществующий файл ' + missingfname
            }
        }
        
        stage('check cycle'){
            sh 'mkdir "firstdir"'
            def fileNames = sh(returnStdout: true, script: 'ls').trim().split()
            for (item in fileNames) {
                echo "Processing item: ${item}"
                }
        }
    }
}
def buildPod = {
    def podYaml = """
kind: Pod
metadata:
  name: jenkins-agent
spec:
  containers:
  - name: my-jenkins-agent
    image: jenkins/inbound-agent:latest
    command:
    - cat
    tty: true
    volumeMounts:
    - mountPath: /var/run/docker.sock
      name: docker-sock
  volumes:
  - name: docker-sock
    hostPath:
      path: /var/run/docker.sock
"""
    return podYaml
}

def label = "jenkins-agent-${UUID.randomUUID().toString()}"

podTemplate(label: label, yaml: buildPod()) {
    node(label) {
        stage('Build') {
            container('my-jenkins-agent') {
                echo 'Start stage build'
                sh 'ls -al'
                echo 'End stage build'
            }
        }
        stage('Deploy') {
            container('my-jenkins-agent') {
                echo 'Start stage deploy'
                  try {
                    sh "rm my.txt"
                }
                catch(exc) {
                    echo "The ERROR!"
                    echo "${exc}"
                }
            }
        }
    }
}