jenkins-pipline-agent使用,使构建能够在不同环境,不同容器中运行

Posted Sicc1107

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins-pipline-agent使用,使构建能够在不同环境,不同容器中运行相关的知识,希望对你有一定的参考价值。

jenkins agent

参考地址https://www.jenkins.io/doc/book/pipeline/syntax/

该agent部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,但阶段级使用是可选的。

简单来说,agent部分主要作用就是告诉Jenkins,选择那台节点机器去执行Pipeline代码。这个指令是必须要有的,也就在你顶层pipeline …的下一层,必须要有一个agent…,agent这个指令对应的多个可选参数,本篇文章会一一介绍。这里注意一点,在具体某一个stage …里面也可以使用agent指令。这种用法不多,一般我们在顶层使用agent,这样,接下来的全部stage都在一个agent机器下执行代码。

#参数1:any 作用:在任何可用的代理上执行Pipeline或stage
pipeline 
    agent any
    parameters gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'
    stages
        stage("git clone")
            steps 
                script 
                    sh """
                    """
                
            
        
        stage("git clone")
            steps 
            
        
        stage("git clone")
            steps 
            
        
    


参数2:none 当在pipeline块的顶层应用时,将不会为整个Pipeline运行分配全局代理,并且每个stage部分将需要包含其自己的agent部分。
pipeline 
    agent any
    parameters gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'
    stages
        stage("git clone")
	        agent 
               label 'jenkins-git'
            
            steps 
                script 
                    sh """
                    """
                
            
        
        stage("git build")
            agent 
               label 'jenkins-jdk'
            
            steps 
            
        
        stage("deploy")
            agent 
               label 'jenkins-sync'
            
            steps 
            
        

    


//参数3:label 作用:使用提供的标签在Jenkins环境中可用的代理机器上执行Pipeline或stage内执行。
pipeline 
    agent 
       label 'jenkins-dev'
    

//参数4:node 作用:和上面label功能类似,但是node运行其他选项,例如customWorkspace
pipeline 
    agent 
        node 
            label 'jenkins-agent-node1'
            customWorkspace "$env.JOB_NAME/$env.BUILD_NUMBER"
        
    


//其实agent相关的还有两个可选参数,分别是docker和dockerfile

//第一种全部在一个节点和 容器内运行 在节点jenkins-dev 上运行 golang:1.17-alpine容器挂载目录
pipeline 
    agent 
        docker  
            label 'jenkins-dev'
            image 'golang:1.17-alpine' 
            args "-v $SSH_KEY_PATH:$SSH_CREDENTIAL_PATH"
        
    
    parameters gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'
    stages
        stage("git clone")
            steps 
                script 
                    sh """
                    """
                
            
        
        stage("git build")
            agent 
               label 'jenkins-jdk'
            
            steps 
            
        
        stage("deploy")
            agent 
               label 'jenkins-sync'
            
            steps 
            
        
    


//使用多个容器
pipeline 
    agent none
    stages 
        stage('git pull') 
            agent 
                docker image 'git:latest' 
            
            steps 
                sh 'git version'
            
        
        stage('build')
            agent 
                docker image 'node:7-alpine' 
            
            steps 
                sh 'node --version'
            
        
    


以上是关于jenkins-pipline-agent使用,使构建能够在不同环境,不同容器中运行的主要内容,如果未能解决你的问题,请参考以下文章

jenkins-pipline-agent使用,使构建能够在不同环境,不同容器中运行

使用 CSS 使图像变灰?

使用Android Navigation Component,如何使actionBar透明并在单个Fragment中使布局全屏?

使用 TTL 与主动发送请求以使密钥无效以使缓存中的密钥无效的优缺点是啥?

使用 CSS 使图像变灰?

如何使用 PyGObject 使窗口居中