本文介绍如何使用 Jenkins 的声明式 pipeline 为一个简单的 Golang web 应用搭建 CI 环境。如果你还不太了解 Jenkins 及其声明式 pipeline,请先参考笔者的 Jenkins 系列文章(https://www.cnblogs.com/sparkdev/tag/jenkins/),或者直接到 Jenkins 官网(https://jenkins.io/)进行学习。说明:本文的演示环境为 ubuntu 16.04。

准备 Jenkins 环境

鉴于篇幅原因,本文不再介绍 Jenkins 环境的搭建。本文演示的 demo 只要求 Jenkins server 连接了一个带有 go 标签的 agent,该 agent 上安装了 docker:

如果你希望可以收到 CI 中的邮件通知,请配置 Jenkins 邮件通知中的 SMTP server。

demo 程序

笔者创建了一个简单的 Golang web 程序用于演示,大家可以从这里下载该程序。

app.go

app.go 文件包含主程序,其内容如下:

该程序的功能非常简单,如果你在 url 中域名后面的部分添加了自己的名字,它会向你问好并计算出你名字的长度:

app_test.go

app_test.go 文件包含了函数 getNameLen() 的单元测试:

Dockerfile

Dockerfile 文件用于构建 docker 镜像,其内容如下:

在准备好上面的内容后,让我们开始 CI 的配置。

Jenkinsfile

为了实现 pipeline as code,我们把配置 Jenkins 的 pipeline 内容保存到 Jenkinsfile 文件中,并和代码一起 checkin 到代码中。该 demo 的 Jenkinsfile 内容如下:

pipeline { agent { label 'go' } stages { stage('UnitTest') { steps { script { if( sh(script: 'docker run --rm -v $(pwd):/go/src/gowebdemo -w /go/src/gowebdemo golang:1.11.0 /bin/bash -c "/go/src/gowebdemo/rununittest.sh"', returnStatus: true ) != 0 ){ currentBuild.result = 'FAILURE' } } junit '*.xml' script { if( currentBuild.result == 'FAILURE' ) { sh(script: "echo unit test failed, please fix the errors.") sh "exit 1" } } } } stage('Build') { steps { sh './buildapp.sh' } } stage('Deploy') { steps { sh './deployapp.sh' } } } post { failure { mail bcc: '', body: "gopro build failedProject: ${env.JOB_NAME} Build Number: ${env.BUILD_NUMBER}  URL de build: ${env.BUILD_URL}

window中搭建jenkins_为容器化的 Go 程序搭建 CI相关推荐

  1. go 执行sh失败_为容器化的 Go 程序搭建 CI

    本文介绍如何使用 Jenkins 的声明式 pipeline 为一个简单的 Golang web 应用搭建 CI 环境.如果你还不太了解 Jenkins 及其声明式 pipeline,请先参考笔者的  ...

  2. 容器化单页面应用中RESTful API的访问

    最近在工作中,需要让运行在容器中的单页面应用程序能够访问外部的RESTful API.这个需求看起来并不困难,不过实现起来还是有些曲折的.在此,我就将这部分内容总结一下. 在入正题之前,有个一问题,就 ...

  3. 访问页面升级访问_容器化单页面应用中RESTful API的访问

    最近在工作中,需要让运行在容器中的单页面应用程序能够访问外部的RESTful API.这个需求看起来并不困难,不过实现起来还是有些曲折的.在此,我就将这部分内容总结一下. 在入正题之前,有个一问题,就 ...

  4. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三

    在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...

  5. 小网站的容器化(下):网站容器化的各种姿势,先跟着撸一波代码再说!

    作者 | 王洪鹏 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 封图| CSDN下载于视觉中国 上篇文章:小网站的容器化(上) 中我们大致描述了下个人网站在日常维护中的痛 ...

  6. 中科金财区块链平台容器化最佳实践

    作者:陈超,北京中科金财科技股份有限公司研发中心技术经理,精通Java/Go等开发语言,熟练掌握 Kubernetes. Docker.微服务架构,了解比特币.以太坊等公链技术体系,了解 Fabric ...

  7. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

    上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是<快速构建容器化的ASP.NET Core应用程序>,有关这次活动的简报,可以参考这里.另外,我的主题分享的PPT也可以点 ...

  8. 使用Docker和Azure Kubernetes服务将ASP.NET核心应用程序容器化

    目录 介绍 应用概述 容器化ASP.NET核心应用程序 部署在本地Kubernetes集群上 Docker镜像和Azure容器注册表(ACR) 部署Azure Kubernetes服务(AKS)群集 ...

  9. 「第二部:容器和微服务架构」(2) 容器化单体应用

    您可能需要构建一个单独的.整体部署的web应用程序或服务,并将其部署为一个容器.应用程序本身可能不是内部单一的,而是由几个库.组件甚至层(应用程序层.域层.数据访问层等)构成.但是,在外部,它是一个容 ...

最新文章

  1. 从马尔科夫链到吉布斯采样与PageRank
  2. DPDK — 架构解析
  3. 全套学习!dockerpull的镜像位置
  4. 中兴通讯已在多个国家和地区商用了安全领域的解决方案
  5. 动态创建ActiveRecord条件的查询 MyQuery
  6. 100以内素数之和python123_python质数,水仙花数,简单猜拳游戏等
  7. 链路追踪php,easyswoole链路追踪
  8. js 将内部函数变成全局函数_js中三种作用域详解(全局,函数,块级)
  9. 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
  10. JDBC简介,JDBC API,,MySQL连接、SQL语句
  11. 使用MS Project创建项目计划
  12. ECNUOJ 2616 游黄山
  13. 帝国cms如何给网站添加百度统计代码,百度统计安装教程步骤分享
  14. cutoff shader
  15. 创始人李卉:麦客CRM2.0核心逻辑及其背后的思考
  16. centos7.4配置nginx php,centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php
  17. 美元汇率【贪心算法练习题】
  18. 网络攻击与防御——对局域网的攻击
  19. ENVI/SARscape软件处理问题小结
  20. C#网络应用编程——复习总结

热门文章

  1. linux系统while循环,linux命令:while循环(示例代码)
  2. ROS下的多参数调用,boost::bind使用
  3. matplotlib 子图超过4个_Python数据分析:用Matplotlib可视化创建套图
  4. Redis 基本数据类型和使用
  5. 学计算机专业的需要买电脑吗,高三党升级“准大一生”,有必要买电脑吗?学长的回答可以参考...
  6. java flink使用addSink方法保存流数据到redis
  7. python操作时间加减与格式输出
  8. 实现jdbc连接mysql_Java JDBC连接MYSQL数据库教程(实现)
  9. mysql 常用字符串操作
  10. svn 验证位置失败 Authorization failed