当前位置:首页 > 文章列表 > Golang > Go教程 > jenkins配置golang 代码工程自动发布的实现方法

jenkins配置golang 代码工程自动发布的实现方法

来源:脚本之家 2022-12-29 14:35:32 0浏览 收藏
所属专题:Cloud Native Buildpacks 与 Go 容器交付专题 - 从源码检测到可复现 OCI 镜像与 Kubernetes 上线

来到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相关知识,快来关注吧!

版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
golang图片处理库image基本操作golang图片处理库image基本操作
上一篇
golang图片处理库image基本操作
Go语言实现服务端消息接收和发送
下一篇
Go语言实现服务端消息接收和发送
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    163次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    88次使用
  • LangGPT提示词框架:结构化Prompt设计方法与开源工具指南
    LangGPT
    LangGPT是一种受编程语言启发的结构化提示词设计工具,提供双层框架、模块化模板及变量功能,帮助用户高效编写高质量Prompt。该项目已在GitHub免费开源,适用于内容创作、编程辅助等多场景。
    13次使用
  • ClickPrompt:AI提示词生成与优化工具,支持Stable Diffusion、ChatGPT及代码辅助
    ClickPrompt
    ClickPrompt是一款专为AI提示词编写者设计的开源在线工具,支持Stable Diffusion绘图、ChatGPT对话及GitHub Copilot代码辅助。提供Prompt自动生成、一键运行、社区分享及可视化优化功能,帮助用户高效获取精准AI输出。
    50次使用
  • PromptHero官网:AI提示词搜索、优化与学习平台,支持Midjourney/Stable Diffusion
    PromptHero
    PromptHero是专业的AI提示词搜索引擎与优化平台,支持Stable Diffusion、Midjourney等主流模型。提供海量提示词库、分类搜索、在线课程及社区互动,助力用户高效生成高质量AI图像与文本。
    32次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码