使用 Jenkins 自动构建和测试 Go 应用程序

  • 时间:2025-11-22 22:57 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:Jenkins 是一个基于 Java 的开源自动化工具,支持构建、部署和自动化任何软件开发项目。它易于安装,并且带有许多插件(感谢活跃的社区!),您可以在自动化过程中使用它们。安装JenkinsJenkins 可以安装在各种平台上,无论是在本地机器上、在云端还是在 Docker 平台上。如果选择直接在机器上安装 Jenkins,则必须先安装 Java。在这个例子中,我们将着眼于在 Docker 平

Jenkins 是一个基于 Java 的开源自动化工具,支持构建、部署和自动化任何软件开发项目。它易于安装,并且带有许多插件(感谢活跃的社区!),您可以在自动化过程中使用它们。

安装Jenkins

Jenkins 可以安装在各种平台上,无论是在本地机器上、在云端还是在 Docker 平台上。如果选择直接在机器上安装 Jenkins,则必须先安装 Java。

在这个例子中,我们将着眼于在 Docker 平台上安装 Jenkins,当然前提是已经安装了 Docker。

  1. 通过运行拉取 Docker 镜像docker pull jenkins/jenkins:lts
  2. 通过运行使用 Docker 映像创建容器docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
  3. 通过访问 localhost:8080 验证 Jenkins 是否已启动并运行
  4. 然后,您将看到一个页面(如下所示),要求您输入管理员密码,您可以在 docker 日志中找到该密码

使用 Jenkins 自动构建和测试 Go 应用程序

5. 安装推荐的插件。

6. 创建第一个管理员用户。

7. 然后你会看到 Jenkins 仪表板。

使用 Jenkins 自动构建和测试 Go 应用程序

设置 Jenkins 工作

一旦 Jenkins 启动并运行,我们可以继续设置一个作业来自动运行我们的 Go 应用程序的构建和测试(在本示例中托管在私有 GitHub 存储库中)。

第一,我们必须安装 Go 插件,它为构建设置了 Golang 工具。为此,请单击左侧菜单上的管理 Jenkins,然后单击管理插件,然后在可用选项卡下搜索“Go Plugin”(我已经安装了我的插件,因此它出目前已安装选项卡中)。

使用 Jenkins 自动构建和测试 Go 应用程序

然后,我们必须在全局工具配置中添加我们感兴趣的 Go 版本(也在 Manage Jenkins 中)。给它起一个名字,稍后在设置 Jenkins 作业时需要参考它。

使用 Jenkins 自动构建和测试 Go 应用程序

设置完成后,我们可以开始创建 Jenkins 作业,在本示例中,我们将查看管道。它可以通过单击左侧菜单上的新项目然后选择管道来触发。

使用 Jenkins 自动构建和测试 Go 应用程序

然后我们可以开始创建我们的管道。在 Build Triggers 选项卡中,有各种选项。您可以在 GitHub 存储库上创建一个 webhook,只要有拉取请求,它就可以在 Jenkins 上触发构建,或者您可以根据 Jenkins 上的另一个构建结果触发构建。我们还可以安排它使用 cron 表达式运行。

使用 Jenkins 自动构建和测试 Go 应用程序

接下来是管道脚本,我们在其中定义要在每个阶段执行的步骤。Jenkins 有两种方法来检索管道脚本,从配置本身或从存储库中提取。

使用 Jenkins 自动构建和测试 Go 应用程序

在上面的屏幕截图中,我们将使用存储库中定义的 Jenkinsfile。让我们深入了解管道脚本。

pipeline {
    agent any
    tools {
        go 'go1.14'
    }
    environment {
        GO114MODULE = 'on'
        CGO_ENABLED = 0 
        GOPATH = "${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_ID}"
    }
    stages {        
        stage('Pre Test') {
            steps {
                echo 'Installing dependencies'
                sh 'go version'
                sh 'go get -u golang.org/x/lint/golint'
            }
        }
        
        stage('Build') {
            steps {
                echo 'Compiling and building'
                sh 'go build'
            }
        }

        stage('Test') {
            steps {
                withEnv(["PATH+GO=${GOPATH}/bin"]){
                    echo 'Running vetting'
                    sh 'go vet .'
                    echo 'Running linting'
                    sh 'golint .'
                    echo 'Running test'
                    sh 'cd test && go test -v'
                }
            }
        }
        
    }
    post {
        always {
            emailext body: "${currentBuild.currentResult}: Job ${env.JOB_NAME} build ${env.BUILD_NUMBER}
 More info at: ${env.BUILD_URL}",
                recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']],
                to: "${params.RECIPIENTS}",
                subject: "Jenkins Build ${currentBuild.currentResult}: Job ${env.JOB_NAME}"
            
        }
    }  
}

Jenkinsfile 的解释:

  1. 一开始,我们将定义agent为any。这意味着 Jenkins 将分配任何可用的执行程序,无论它是如何标记或配置的。
  2. 在工具中,我们将指定构建工具,在这种情况下,我们将使用我们之前在全局工具配置中定义的“go1.14”。
  3. 然后我们将设置环境变量,就像我们在本地机器上运行 Go 应用程序时设置它的方式一样。
  4. 然后我们将定义我们的阶段:我们安装所有依赖项的预测试,我们将编译和构建我们的 Go 应用程序的构建,运行单元测试的测试等。您也可以添加其他阶段。
  5. 最后但并非最不重大的是 post 部分,它可以在各种条件下运行,例如始终、不稳定、成功、失败和在所有阶段执行后更改。在此示例中,无论构建状态如何,我们都会触发电子邮件通知。

运行 Jenkins 作业

设置作业后,我们目前可以通过 Build / Build with Parameters 按钮手动执行运行,也可以通过计划运行或触发 GitHub 存储库中的 webhook 自动执行运行。

使用 Jenkins 自动构建和测试 Go 应用程序

以上显示了 Jenkins 流水线概览的示例。一目了然,我们可以看到过去的构建历史以及失败的阶段。我们还可以深入挖掘特定阶段的日志以查看失败的缘由。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】八股已死、场景当立(场景篇-设计模式篇)(2025-11-22 23:27)
【系统环境|】群、环、域(2025-11-22 23:26)
【系统环境|】深度解析:基于Python的分布式缓存系统实现与性能优化(2025-11-22 23:26)
【系统环境|】TP区块链下载全解析:从技术原理到代码实现(2025-11-22 23:25)
【系统环境|】大模型在急性肾衰竭预测及临床方案制定中的应用研究(2025-11-22 23:25)
【系统环境|】特价股票投资中的可持续供应链管理整合方法(2025-11-22 23:24)
【系统环境|】第193期 如何微调大语言模型(LLM)(内含源码细节)(2025-11-22 23:23)
【系统环境|】用Python构建智能推荐系统:技术赋能美好生活(2025-11-22 23:23)
【系统环境|】企业估值中的氢能源应用评估(2025-11-22 23:22)
【系统环境|】ansible 学习之路(2025-11-22 23:22)
手机二维码手机访问领取大礼包
返回顶部