window中搭建jenkins_为容器化的 Go 程序搭建 CI
本文介绍如何使用 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相关推荐
- go 执行sh失败_为容器化的 Go 程序搭建 CI
本文介绍如何使用 Jenkins 的声明式 pipeline 为一个简单的 Golang web 应用搭建 CI 环境.如果你还不太了解 Jenkins 及其声明式 pipeline,请先参考笔者的 ...
- 容器化单页面应用中RESTful API的访问
最近在工作中,需要让运行在容器中的单页面应用程序能够访问外部的RESTful API.这个需求看起来并不困难,不过实现起来还是有些曲折的.在此,我就将这部分内容总结一下. 在入正题之前,有个一问题,就 ...
- 访问页面升级访问_容器化单页面应用中RESTful API的访问
最近在工作中,需要让运行在容器中的单页面应用程序能够访问外部的RESTful API.这个需求看起来并不困难,不过实现起来还是有些曲折的.在此,我就将这部分内容总结一下. 在入正题之前,有个一问题,就 ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三
在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...
- 小网站的容器化(下):网站容器化的各种姿势,先跟着撸一波代码再说!
作者 | 王洪鹏 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 封图| CSDN下载于视觉中国 上篇文章:小网站的容器化(上) 中我们大致描述了下个人网站在日常维护中的痛 ...
- 中科金财区块链平台容器化最佳实践
作者:陈超,北京中科金财科技股份有限公司研发中心技术经理,精通Java/Go等开发语言,熟练掌握 Kubernetes. Docker.微服务架构,了解比特币.以太坊等公链技术体系,了解 Fabric ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)
上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是<快速构建容器化的ASP.NET Core应用程序>,有关这次活动的简报,可以参考这里.另外,我的主题分享的PPT也可以点 ...
- 使用Docker和Azure Kubernetes服务将ASP.NET核心应用程序容器化
目录 介绍 应用概述 容器化ASP.NET核心应用程序 部署在本地Kubernetes集群上 Docker镜像和Azure容器注册表(ACR) 部署Azure Kubernetes服务(AKS)群集 ...
- 「第二部:容器和微服务架构」(2) 容器化单体应用
您可能需要构建一个单独的.整体部署的web应用程序或服务,并将其部署为一个容器.应用程序本身可能不是内部单一的,而是由几个库.组件甚至层(应用程序层.域层.数据访问层等)构成.但是,在外部,它是一个容 ...
最新文章
- 从马尔科夫链到吉布斯采样与PageRank
- DPDK — 架构解析
- 全套学习!dockerpull的镜像位置
- 中兴通讯已在多个国家和地区商用了安全领域的解决方案
- 动态创建ActiveRecord条件的查询 MyQuery
- 100以内素数之和python123_python质数,水仙花数,简单猜拳游戏等
- 链路追踪php,easyswoole链路追踪
- js 将内部函数变成全局函数_js中三种作用域详解(全局,函数,块级)
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
- JDBC简介,JDBC API,,MySQL连接、SQL语句
- 使用MS Project创建项目计划
- ECNUOJ 2616 游黄山
- 帝国cms如何给网站添加百度统计代码,百度统计安装教程步骤分享
- cutoff shader
- 创始人李卉:麦客CRM2.0核心逻辑及其背后的思考
- centos7.4配置nginx php,centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php
- 美元汇率【贪心算法练习题】
- 网络攻击与防御——对局域网的攻击
- ENVI/SARscape软件处理问题小结
- C#网络应用编程——复习总结
热门文章
- linux系统while循环,linux命令:while循环(示例代码)
- ROS下的多参数调用,boost::bind使用
- matplotlib 子图超过4个_Python数据分析:用Matplotlib可视化创建套图
- Redis 基本数据类型和使用
- 学计算机专业的需要买电脑吗,高三党升级“准大一生”,有必要买电脑吗?学长的回答可以参考...
- java flink使用addSink方法保存流数据到redis
- python操作时间加减与格式输出
- 实现jdbc连接mysql_Java JDBC连接MYSQL数据库教程(实现)
- mysql 常用字符串操作
- svn 验证位置失败 Authorization failed