之前将 Java 项目在 Docker Jenkins 的参数化构建 . 本次记录下对于 Golang 项目的参数化构建部署

之前部署的方式是 拉取源码 -> build镜像 -> 推送镜像仓库 -> build容器 , 笔者这里起初也采用这种方式 , 但是发现在对 Golang 项目 go build 时服务器会 CPU 内存占用爆满构建失败 , 本台机器对 Java 项目的构建都不需要占用这么高资源 ,打包也比较快速 . 尝试数次定位不到问题 , 于是改用本地打包后上传 build 文件 , 然后构建镜像

本地构建

这里本地使用的是 Windows , 因此涉及交叉编译 , 可以参考 此前文章

在通过命令行实际操作时 , 发现交叉编译的配置实际没有作用上 , 可能是命令行执行时没有当作一次整体的命令配置环境 , 因此笔者这里通过编辑器的配置直接打包 , 使用 IDEAGoland

Edit Configurations -> 新建 Go Build配置 -> Environment 配置 GOOS=linux;GOARCH=amd64 , Program arguments 配置 -o main main.go

然后直接按钮运行 , 则会在根目录下生成 任务名_linux 的一个执行文件.

Jenkins配置

这里新建任务 , 选择文件参数构建

  • 文件路径 ./main
  • 描述 build文件

Git 还是需要配置的, 因为可执行文件中只有代码 , 没有一些配置文件比如语言、配置文件等 . 这里配置下源码管理 Git 以及分支

增加构建步骤 Shell

1
2
3
4
5
6
7
cd $WORKSPACE
# 这步很关键,否则执行时没有权限
chmod -R 777 main
docker build --build-arg ACTIVE=$ACTIVE . -t $DOCKER_REPO:latest -t $DOCKER_REPO:$VERSION
docker login 镜像仓库地址 --username=账号 -p 密码
docker push $DOCKER_REPO:latest
docker push $DOCKER_REPO:$VERSION

此处只是 Push 到镜像仓库 , 并没有自动更新项目的容器 , 因为这里可能是同机器或者不同机器 , 最好根据实际情况自己配置 , 笔者这里是手动去 pull 更新的