首页 > 解决方案 > Jenkins 声明式管道 - SCM

问题描述

我正在学习一些 Jenkins 教程。我阅读的示例代码是

 pipeline {
    agent none
    stages {
        stage('Build') {
            agent {
                docker {
                    image 'python:2-alpine'
                }
            }
            steps {
                sh 'python -m py_compile sources/add2vals.py sources/calc.py'
            }
        }
        stage('Test') {
            agent {
                docker {
                    image 'qnib/pytest'
                }
            }
            steps {
                sh 'py.test --verbose --junit-xml test-reports/results.xml sources/test_calc.py'
            }
            post {
                always {
                    junit 'test-reports/results.xml'
                }
            }
        }
        stage('Deliver') { 
            agent {
                docker {
                    image 'cdrx/pyinstaller-linux:python2' 
                }
            }
            steps {
                sh 'pyinstaller --onefile sources/add2vals.py' 
            }
            post {
                success {
                    archiveArtifacts 'dist/add2vals' 
                }
            }
        }
    }
}

所以基本上有三个步骤BuildTestDeliver。它们都使用不同的图像来生成不同的容器。但是这个 Jenkins 作业被配置为Git使用SCM.

因此,如果运行此 Jenkins 构建,则表示该项目构建在第一个容器上。然后第二阶段是在另一个容器上测试项目,然后在第三个容器上交付。这个 Jenkins 工作如何确保这三个步骤在代码上按顺序执行。

根据我的理解,每个阶段都需要执行git clone/git pull,并且在阶段完成之前,git push是必需的。

如果SCM IS通过Jenkins配置使用Git,是否需要包含Jenkins的git clone/git pull', as well as 'git push' in the corresponding shell scripts(understeps , or it it already taken into consideration by theSCM`功能?

谢谢

标签: jenkinsjenkins-declarative-pipeline

解决方案


在这种情况下,您必须确保 QA 环境中的二进制文件必须与 UAT 环境和生产环境中的二进制文件相同。为此,您必须使用工件存储库或注册表(Artifactory、Nexus、Docker Registry 等)将工件提升到生产环境。查看这个链接,看看它是如何在管道中完成的。


推荐阅读