• 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. #1.下载golang
    2. wget https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz
    3. #2.安装
    4. tar -xf go1.16.3.linux-amd64.tar.gz -C /usr/local/

    2、配置环境变量

    1、vi /etc/profile

    1. GO111MODULE=on
    2. GO_PATH=/data/go
    3. GOPROXY=https://mirrors.aliyun.com/goproxy/
    4. GO_HOME=/usr/local/go
    5. 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: xxx not found”)

    (2)打包成镜像并且推送到仓库;

    (3)通过ansible在开发服务器上执行删除容器启动新容器脚本;

            ansible 不会用的自己百度查下,这个是用来执行远程服务器的命令,运维同学肯定很熟悉。

    我需要远程服务器,删除当前容器,并且重新拉去镜像并运行。

    1. git checkout $GIT_TAG
    2. echo "-------------build go project-------------------------"
    3. export GOPROXY=https://mirrors.aliyun.com/goproxy/
    4. /usr/local/go/bin/go mod tidy
    5. CGO_ENABLED=0 /usr/local/go/bin/go build -o gw_micro_service main.go
    6. #push docker image to docker hub
    7. echo "-------------push docker image to docker hub-------------------------"
    8. docker build -t gw_micro_service .
    9. docker tag gw_micro_service harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest
    10. docker push harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest
    11. if [ $? -eq 0 ]
    12. then
    13. echo "push ok"
    14. else
    15. echo "push faild"
    16. fi
    17. echo "-------------remote servcie restart docker-------------------------"
    18. ip='47.106.89.198'
    19. 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: xxx not found”),通过百度,在编译时语句前面加了 CGO_ENABLED=0。

            2、打包成镜像的shell命令报错

            jks拉取的代码存放在:/var/lib/jenkins/workspace 目录下。如果碰到问题了,我们可以自己在这个目录下手动调试。举例:

           我构建了一个jks 工程“gw_micro_service”。你可以在这个目录下手动执行jks上的那个shell命令,遇到啥问题可先在这个目录下调试好。

    总结:

            jks是个很好的工具,使用方法也很多,我只用了它简单的功能;其实这些我也可以写个脚本,在我mac上一键升级远端程序。但是这样不方便协同办公。        

  • 相关阅读:
    NIFI使用InvokeHTTP发送http请求
    SuperMap iServer 数据科学服务配置及使用
    架构设计基础设施保障 - IaaS之网络篇
    搭建网站踩的坑
    使用C语言EasyX 创建动态爱心背景
    实时时钟 RTC
    深度解析单例模式
    Thread常用API
    java的ArrayList && LinkedList的操作
    音频裁剪软件有哪些?来看看这几个实用软件
  • 原文地址:https://blog.csdn.net/stefan1240/article/details/125899130