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

目录
  • 前沿
  • 一、在jenkins宿主机上配置go环境;
    • 1、安装go;
    • 2、配置环境变量
    • 3、验证环境是否可用
  • 二、jenkis上配置项目
    • 1、jks上新建项目
    • 2、“源码管理”菜单添加git信息
    • 3、“构建”-》增加构建步骤-》Execute shell
    • (1)编译go代码;
    • (2)打包成镜像并且推送到仓库;
    • (3)通过ansible在开发服务器上执行删除容器启动新容器脚本;
    • 4、如何使用jks的功能
      • 1)、从git上拉代码;
      • 2)、执行我的shell脚本;脚本的内容有:
    • 5、调试方法
  • 总结:

前沿

以前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 代码工程自动发布的文章就介绍到这了,更多相关jenkins配置golang内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 教你使用Jenkins集成Harbor自动发布镜像

    目录 1.概述 2.Jenkins 脚本式发布镜像 3.Jenkins 插件式发布镜像 1.概述 在实际生产中,如果进行手动发布镜像到 Harbor,那么实在太 low 了.实际中,一般会结合 Jenkins 的流水线,进行自动构建和发布. 大致流程说明: 开发人员每天把代码提交到 Gitlab 代码仓库 Jenkins 从 Gitlab 代码仓库中拉取项目源码,进行编译并打成 jar 包:然后构建成 Docker 镜像,将镜像推送到 Harbor 私有镜像仓库 Jenkins 发送 SSH 远

  • Jenkins安装的时区问题分析解决

    目录 一.首先根据官方的方式去修改启动参数 二.用另外一种办法,更改系统时区 正常情况下,jenkins是Java执行在Java容器,比如tomcat容器之下,只要改了tomcat的时区就行. 我这里是为了方便后续的代码可用性测试,用的是Ubuntu中apt在线安装,也只是安装了jdk然后让他自己运行.所以符合官网在Jenkins的启动参数方面考虑. 一.首先根据官方的方式去修改启动参数 参考:https://www.jenkins.io/doc/book/using/change-time-z

  • Jenkins的安装配置详解

    Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 首先保证系统中已经安装了jdk 官网下载地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war 第一种启动方法:切换到jenkins.war存放的目录,输入如下命令: java -jar je

  • Jenkins配置自动发送邮件过程图解

    这篇文章主要介绍了jenkins配置自动发送邮件过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前提条件: 邮箱中的SMTP服务需要开启,示例中用的QQ邮箱,所以以QQ为例,需要生成一个授权码: 1.Jenkins中,点击系统管理-系统设置,如图: 2.定位到邮件设置"Extended E-mail Notification",系统管理员邮件地址必须与UserName填写一致: 3.jenkins中的配置: 点击 添加Trig

  • Jenkins配置maven项目之打包、部署、发布的全过程

    Jenkins和项目在两台服务器上 Jenkins的下载安装部署省略,可自行上官网. 1.安装maven插件 完成后,会出现“success”,并且勾选“安装完成后重启Jenkins(空闲时)” 2.部署有Jenkins的服务器上,下载maven,配置环境变量,我在opt/目录下放着. 执行命令: 下载: wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.g

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

    目录 前沿 一.在jenkins宿主机上配置go环境: 1.安装go: 2.配置环境变量 3.验证环境是否可用 二.jenkis上配置项目 1.jks上新建项目 2.“源码管理”菜单添加git信息 3.“构建”->增加构建步骤->Execute shell (1)编译go代码: (2)打包成镜像并且推送到仓库: (3)通过ansible在开发服务器上执行删除容器启动新容器脚本: 4.如何使用jks的功能 1).从git上拉代码: 2).执行我的shell脚本:脚本的内容有: 5.调试方法 总结

  • golang之tcp自动重连实现方法

    操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 现有一个tcp客户端程序,需定期从服务器取数据,但由于种种原因(网络不稳定等)需要自动重连. 测试服务器示例代码: /* tcp server for test */ package main import ( "fmt" "net" "os" "strings" "time" ) func checkError(err err

  • webstorm配置支持nodejs并自动补全的方法

    1.配置支持nodejs 配置nodejs支持,博主下载的2017.02的最新版本,下载后如果你自己已经有安装node了,那么ide会像myeclipse一样自动找到node的位置并添加配置,不需要你手动配置. 如果你没有成功,那么到File->Setting->输入Node.js(选中点进去)->Node imterpreter(选择node的安装路径即可)->确定 2.设置自动补全 首先需要下载core code,File->Setting->输入Node.js(选

  • Jenkins+tomcat自动发布的热部署/重启及遇到的问题解决办法(推荐)

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动部署,那更省时省力. 下面是一个简单的发布tomcat的shell脚本,执行下面脚本的前提是要在服务器中安装了git.maven # 先关闭tomcat进程 kill -9 `ps aux|grep tomcat|grep -v 'grep'| awk 'NR==1{print $2}'` # 切换

  • 在Golang代码中如何自动生成版本号的方法示例

    前言 以前在写C/C++代码时,可以在代码中预定义一些版本宏定义,然后再编译时从外部传入数据作为版本号. golang代码不支持宏定义,如果每次在代码中硬编码版本信息,一来费时费力,二来很容易忘记更新. 如何更优雅的维护golang程序的版本号呢? 翻阅golang文档之后,在go build发现下面的参数 -ldflags 'flag list' arguments to pass on each go tool link invocation. 然后在linker中发现: -X import

  • node命令行工具之实现项目工程自动初始化的标准流程

    一.目的 传统的前端项目初始流程一般是这样: 可以看出,传统的初始化步骤,花费的时间并不少.而且,人工操作的情况下,总有改漏的情况出现.这个缺点有时很致命. 甚至有马大哈,没有更新项目仓库地址,导致提交代码到旧仓库,这就很尴尬了... 基于这些情况,编写命令行工具(CLI)的目的就很明确: 用于新项目工程的初始化利用工具进行初始化,可以节省项目初期的准备时间避免出现改漏的情况杜绝未更新项目版本仓库地址的问题 以下是新的流程示意图: 二.自动化流程分析 以下是自动化流程图: 从流程图可以得出两个重

  • 使用Jenkins配置Git+Maven的自动化构建的方法

    背景 最近安装Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在90%以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形成思路,现分享给大家,希望大家在安装的时候少走弯路. PS:本人很痛恨那种粘贴复制,毫无思考的博主,本想着拿着解决问题的心态,但结果还是一样,不但浪费了大家的时间,还浪费了大家的感情,所以,我把我遇到的问题和解决的方式记录下来和大家分享. 知识背景 首先需要理解的是,Jenkins是帮我们将代码进行

随机推荐