这是系列中的第三篇文章 使用 Jenkins 将 Django 应用程序部署到 AWS EC2 实例。 Jenkins的温和指南。

在本文中,我们将介绍如何在 Jenkins 中使用变量和参数以及如何使用 groovy 脚本。我们将使用与以前相同的项目。您需要事先阅读过之前的文章。

1.如何在 JenkinsFile 中配置和使用变量。

在编写 JenkinsFile 管道脚本时,您可能需要注入和使用一些动态值,从而避免管道中硬编码值的麻烦,因此需要环境变量。

Jenkins 环境变量是一个全局变量,通过 env 变量公开并用于 Jenkins 管道和 Jenkinsfile 文件 /Pipeline 中的任何位置。在 env 变量中存储为环境变量的任何值都是字符串类型。

Jenkins 已经有一个可以在管道中使用的预定义环境变量列表。通过在浏览器上访问以下 URL,可以找到完整的变量列表。

${JENKINS_IP}/env-vars.html/
// Substitute JENKINS_IP with the IP address of the digital ocean droplet hosting our Jenkins server.

您应该会看到一个包含所有 Jenkins 环境变量的页面。

2022-08-30 17-24-57.png 截图

现在您可以访问环境变量列表,现在让我们在 JenkinsFile 中访问它们。

要访问 JenkinsFile 中的环境变量,我们使用env对象。对 Jenkins 管道环境变量的引用是通过以下方式将${}包围起来的:${env.ENV_VARIABLE}

现在让我们在 JenkinsFile 中添加一个 init 阶段,我们可以在其中看到它的使用情况。

stage('Init') { 
            steps { 
                echo "Hello, this is build number ${env.BUILD_NUMBER}"
            }
        }

您还可以在没有 env 对象的情况下访问环境变量

stage('Init') { 
            steps { 
                echo "Hello, this is build number ${BUILD_NUMBER}"
            }
        }

但是,对于预定义变量,通常使用 env 对象访问它们。

Jenkins 中的本地环境变量

您还可以在 JenkinsFile 脚本中定义自己的环境变量。这是通过将变量添加到环境块来完成的。

pipeline {
   agent any
   environment {
       DISABLE_AUTH = 'true'                               //can be used in whole pipeline
   }
   stages {
       stage(“Build”) {
           steps {
               echo env.DISABLE_AUTH
           }
       }
   }
}

您还可以为特定阶段定义本地环境变量

pipeline {
   agent any
   environment {
       DISABLE_AUTH = 'true'
   }
   stages {
       stage(“Build”) {
           environment {
                   ENABLE_AUTH = ‘false’                                 //can be used in this stage only
              }
           steps {
               echo env.DISABLE_AUTH
               echo env.ENABLE_AUTH
           }
       }
   }
}

您还可以访问通过环境块中的 GUI 创建的凭据。但是,这超出了本文的范围。_

2. Jenkins 中的参数。

您还可以在 Jenkins 脚本中提供参数。参数可以是以下类型。

1.字符串参数。

  1. 布尔参数。

3.多行字符串参数。

4.选择参数。

出于本文的目的,我们将看到一个涉及使用选择参数的用例。_

pipeline { 

    agent any
    parameters { 
        choice(name: 'Version', choices:['1.1.0', '1.2.0', '1.3.0'], description:'')
    }
    stages { 

        stage('Init') { 

            steps { 

                echo "Hello, this is build number ${BUILD_NUMBER}"
            }
        }
        stage("deploy"){ 
            steps{
                echo "Deploying Version ${VERSION}"
            }
        }
    }
}

您现在可以前往 Jenkins 仪表板,您将看到一个build with parameters选项,在选择版本后将开始构建。

2022-08-30 18-29-38.png 截图

免责声明:这对 Jenkins 中的参数很简单,关于相同的更深入的文章正在编写中。

  1. 将构建步骤重构为 groovy 脚本。

现在,您将通过将 docker build 命令移动到 groovy 脚本中来开始分解和重构 JenkisFile 中的构建步骤。您可以在文档中阅读有关 Jenkins 中 groovy 脚本及其用例的更多信息

在项目的根目录下创建一个名为script.groovy的文件,并在其中添加以下代码。

def buildApp() { 
    echo "Building app"
}
return this

要在 JenkinsFile 中使用此脚本,请在 init 阶段添加一个脚本块并按如下方式加载文件。

        stage('Init') { 

            steps { 
                script { 
                    gv = load "script.groovy"
                }
            }
        }

为了使这个全局可用,我们可以在文件顶部定义它。

def gv 
pipeline { 

    agent any
    parameters { 
        choice(name: 'Version', choices:['1.1.0', '1.2.0', '1.3.0'], description:'')
    }
    stages { 

        stage('Init') { 

            steps { 
                script { 
                    gv = load "script.groovy"
                }
            }
        }
        stage("deploy"){ 
            steps{
                echo "Deploying Version ${VERSION}"
            }
        }
    }
}

您现在可以通过以下方式访问script.groovy文件中定义的buildApp函数:

stage('build') { 
            steps{
                scripts { 
                    gv.buildApp()
                }
            }
        }

将您的代码提交给版本控制并运行新的构建,它应该会通过。

我们引入了一个新概念,即 groovy 脚本的使用,这将在下一篇文章中全面讨论。

在这个阶段,您应该对在 Jenkins 中使用环境变量和参数相当熟悉,并且应该对 groovy 脚本的用例及其重要性有基本的了解。在下一篇文章中,我们现在将编写一个 Jenkins 文件,该文件在我们今天经历的基础(环境变量、参数、用户输入和 groovy 脚本的使用)的基础上构建、运行测试并将我们的 docker 镜像推送到 dockerhub。我们还将设置电子邮件通知以通知我们构建状态(成功/失败)。

快乐的黑客。

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐