jenkins 发布 go 镜像到 k8s

背景

Jenkins 发布 go 镜像到 k8s 记录

安装

jenkins

安装略过

go

go 的官网国内无法访问,所以从国内拉取安装包。

wget https://mirrors.ustc.edu.cn/golang/go1.18.8.linux-amd64.tar.gz
tar zxvf go1.18.8.linux-amd64.tar.gz -C /usr/local

cat <<EOF>> /etc/profile.d/go.sh
#golang env config
export GO111MODULE=on
export GOROOT=/usr/local/go 
export GOPATH=/data/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY=https://proxy.golang.com.cn,direct
EOF

source /etc/profile
# 软连接到 /usr/bin 目录,jenkins 才能调用到
ln -fs /usr/local/go/bin/* /usr/bin/

变量 解释
GO111MODULE=on 不知道
GOROOT=/usr/local/go 解压目录
GOPATH=/data/gopath 依赖包放置的地方,类似 maven 的 .m2 目录
PATH=$PATH:$GOROOT/bin:$GOPATH/bin 加入环境变量
GOPROXY=https://proxy.golang.com.cn,direct 国内依赖包镜像源,由于国内镜像源未包含所有的依赖包,而direct 的作用是当代理仓库没有回源站拉取。direct 不能省略

测试

go version

前置知识

go 如何引用本地依赖

给开发看的

方法有很多种:https://blog.csdn.net/qingchuwudi/article/details/107119273

这里只说懒人版,举个例子:

xx 现在需要用 xx-api 这个依赖包,在 jenkins 新建 xx-api 任务,此时目录为: /data/jenkins_data/xx-api

修改 xx 的 go.mod 写入路径即可直接使用 xx-api 这个依赖

module main

go 1.14

// 替换规则
replace (
    github.com/123/xx-api => /data/jenkins_data/xx-api // 这里配置
)

// 源地址
require (
    github.com/123/xx-api 
)

go 下载依赖

# 到 .go 的目录下执行
go mod tidy

go 打包命令

go build -o xx xx.go

go 打包出来的是二进制文件,./ 即可执行,所以将二进制添加到基础镜像即可。

如对镜像大小有要求推荐使用 Alpine Linux,5M 左右,但因为 Alpine Linux 太过精简,有时会缺少一些库文件。保守起见可使用 Ubuntu 或 Debian 。

基础镜像Dockerfile

FROM debian:bullseye
ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata \
    && rm -rf /var/lib/apt/lists/*

编译基础镜像

docker build -t xxdebian .

go镜像Dockerfile

FROM smydebian


ARG xx
ARG yy
ARG ll
ARG pp

ENV yy=${yy}
ENV xx=${xx}
ENV ll=${ll}
ENV pp=${pp}

ADD xxxx /bin/xxxx
EXPOSE 9033
CMD [ "/bin/xxxx" ]


发布到 k8s

发布同 JAVA 流程

posted @ 2022-12-02 11:31  海口-熟练工  阅读(250)  评论(0)    收藏  举报