jenkins配置golang 代码工程自动发布的实现方法
来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《jenkins配置golang 代码工程自动发布的实现方法》,介绍一下jenkins、自动发布,希望对大家的知识积累有所帮助,助力实战开发!
前沿
以前go工程都是在我mac上打包成镜像然后再推到我的docker hub上去,每次更新都要经过打包->推送到dockert仓库->目前服务重新拉取容器;最近项目代码量很大,频繁更新,终于忍不住了,决定把jks得用起来,这样可以解放下双手。注:我们jks直接安装在内网硬件服务器上(centos7.9)。
一、在jenkins宿主机上配置go环境;
1、安装go;
#1.下载golang wget https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz #2.安装 tar -xf go1.16.3.linux-amd64.tar.gz -C /usr/local/
2、配置环境变量
1、vi /etc/profile
GO111MODULE=on GO_PATH=/data/go GOPROXY=https://mirrors.aliyun.com/goproxy/ GO_HOME=/usr/local/go GO_ROOT=/usr/local/go
让配置文件立即生效:soruce /etc/profile
打印环境变量:printenv |grep GO
GO_PATH=/data/go
GOPROXY=https://mirrors.aliyun.com/goproxy/
GO_HOME=/usr/local/go
GO_ROOT=/usr/local/go
3、验证环境是否可用
自己建个go工程,写个hello world 看是否能够go run main.go
二、jenkis上配置项目
配置步骤:
1、jks上新建项目
新建Item-> Freestyle project
2、“源码管理”菜单添加git信息
3、“构建”-》增加构建步骤-》Execute shell
执行我的shell脚本;脚本的内容有:
(1)编译go代码;
我的环境变量都没有在jks上配置,因此我需要用/usr/local/go/bin/go来执行命令(GO_ROOT 是 /usr/local/go)。
此外,我build go代码的时候,在前面加了“CGO_ENABLED=0”。这个是用来解决容器找不到我的可执行程序的问题(会报错:“/bin/sh: xxxnot found”)
(2)打包成镜像并且推送到仓库;
(3)通过ansible在开发服务器上执行删除容器启动新容器脚本;
ansible 不会用的自己百度查下,这个是用来执行远程服务器的命令,运维同学肯定很熟悉。
我需要远程服务器,删除当前容器,并且重新拉去镜像并运行。
git checkout $GIT_TAG echo "-------------build go project-------------------------" export GOPROXY=https://mirrors.aliyun.com/goproxy/ /usr/local/go/bin/go mod tidy CGO_ENABLED=0 /usr/local/go/bin/go build -o gw_micro_service main.go #push docker image to docker hub echo "-------------push docker image to docker hub-------------------------" docker build -t gw_micro_service . docker tag gw_micro_service harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest docker push harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest if [ $? -eq 0 ] then echo "push ok" else echo "push faild" fi echo "-------------remote servcie restart docker-------------------------" ip='47.106.89.198' ansible $ip -m shell -a "bash /data/gw_micro_service/rebuildDocker.sh"
4、如何使用jks的功能
jks非常灵活,我这里使用的jks并没有安装什么插件(docker 和go插件),只是用到jks的两个功能:
1)、从git上拉代码;
2)、执行我的shell脚本;脚本的内容有:
(1)编译go代码;
(2)打包成镜像并且推送到仓库;
(3)通过ansible在开发服务器上执行删除容器启动新容器脚本;
其它:
如果你只想生成可执行程序并且在远端允许(不想要docker),那么你只要在脚本里面写入:
(1)编译代码;
(2)通过ansbile推送可执行程序到你目标服务器
(3)ansible 执行远端的脚本(你可以在里面写重启的相关命令)。
5、调试方法
我配置jks的时候遇到两个问题:
1、在jks拉取代码后,打包的可执行程序在centos 下能够运行,但是打包到镜像后,执行报错(“/bin/sh: xxxnot found”),通过百度,在编译时语句前面加了CGO_ENABLED=0。
2、打包成镜像的shell命令报错
jks拉取的代码存放在:/var/lib/jenkins/workspace 目录下。如果碰到问题了,我们可以自己在这个目录下手动调试。举例:
我构建了一个jks 工程“gw_micro_service”。你可以在这个目录下手动执行jks上的那个shell命令,遇到啥问题可先在这个目录下调试好。
总结:
jks是个很好的工具,使用方法也很多,我只用了它简单的功能;其实这些我也可以写个脚本,在我mac上一键升级远端程序。但是这样不方便协同办公。
终于介绍完啦!小伙伴们,这篇关于《jenkins配置golang 代码工程自动发布的实现方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

- 上一篇
- golang图片处理库image基本操作

- 下一篇
- Go语言实现服务端消息接收和发送
-
- 虚幻的小伙
- 这篇博文真及时,太详细了,真优秀,已加入收藏夹了,关注老哥了!希望老哥能多写Golang相关的文章。
- 2023-01-03 00:27:20
-
- Golang · Go教程 | 1小时前 |
- DebianStrings源码深度解析
- 148浏览 收藏
-
- Golang · Go教程 | 3小时前 |
- FetchDebian下载问题解决攻略
- 350浏览 收藏
-
- Golang · Go教程 | 3小时前 |
- DebianSyslog在虚拟机中的实用攻略
- 467浏览 收藏
-
- Golang · Go教程 | 11小时前 |
- DebianOpenSSL安装失败的终极解决方案
- 501浏览 收藏
-
- Golang · Go教程 | 13小时前 |
- Debian数据快速提取技巧
- 216浏览 收藏
-
- Golang · Go教程 | 16小时前 |
- Debian系统JS依赖管理终极攻略
- 218浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 笔灵AI生成答辩PPT
- 探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
- 16次使用
-
- 知网AIGC检测服务系统
- 知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
- 25次使用
-
- AIGC检测-Aibiye
- AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
- 30次使用
-
- 易笔AI论文
- 易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
- 42次使用
-
- 笔启AI论文写作平台
- 笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
- 35次使用
-
- Go语言restyhttp包调用jenkinsapi实例
- 2022-12-31 214浏览
-
- golang生产上如何部署发布的?配合jenkins的一个流程是怎样的
- 2023-01-07 107浏览