go build 构建部署的问题

1. 运行环境

go 1.20, linux/amd64

2. 问题描述?

go build -o build/server

我使用上述命令在build目录构建出二进制包,目前部署有件麻烦事,项目除了二进制文件还有yaml,静态资源等非.go文件,我需要从工程目录里将资源文件按目录结构复制一份至build目录打包至服务器(目前 CI/CD 构建步骤),这样操作比较麻烦

3. 您期望得到的结果?

如何更好简化构建部署过程

laisxn
最佳答案

如果您希望在构建过程中自动复制 yaml 文件和静态资源文件到 build 目录中,您可以编写一个简单的脚本或使用构建工具来完成此操作。

以下是一个示例 shell 脚本,该脚本将在构建过程中将 yaml 文件和静态资源文件复制到 build 目录中:

#!/bin/bash set -e

Clean up build directory

rm -rf build/* mkdir -p build/conf mkdir -p build/static

Copy config files to build directory

cp conf/*.yaml build/conf/

Copy static files to build directory

cp -R static/* build/static/

Build binary and output to build directory

go build -o build/server .

echo "Build success" 在此示例中,我们首先删除 build 目录并重新创建它。然后将 config 和 static 目录下的文件复制到 build 目录中,在此之后,我们执行 go build 命令将二进制文件输出到 build 目录中。

您可以将此脚本添加到 CI/CD 发布流程中,以便自动化构建和部署。

如果您需要更高级的功能,例如版本控制、构建缓存等,请考虑使用专业构建工具,如 Jenkins 或 GitLab CI 等。

1年前 评论
讨论数量: 4

方法如下:
1、makefile 了解一下,提前封装好,一键打包发布
2、写一个 .sh 打包 ,效果与 makefile 差不多
3、使用 go 官方发布的 embed 包,将配置文件,静态文件内嵌打包到 二进制文件里面,不过不太建议这样,配置文件之类的查看不够直观。参考链接

1年前 评论
neo88948 (楼主) 1年前

用 embed 吧, 我就是这么搞的,除了env 文件,其他文件 embed 直接嵌入就好

1年前 评论
laisxn

如果您希望在构建过程中自动复制 yaml 文件和静态资源文件到 build 目录中,您可以编写一个简单的脚本或使用构建工具来完成此操作。

以下是一个示例 shell 脚本,该脚本将在构建过程中将 yaml 文件和静态资源文件复制到 build 目录中:

#!/bin/bash set -e

Clean up build directory

rm -rf build/* mkdir -p build/conf mkdir -p build/static

Copy config files to build directory

cp conf/*.yaml build/conf/

Copy static files to build directory

cp -R static/* build/static/

Build binary and output to build directory

go build -o build/server .

echo "Build success" 在此示例中,我们首先删除 build 目录并重新创建它。然后将 config 和 static 目录下的文件复制到 build 目录中,在此之后,我们执行 go build 命令将二进制文件输出到 build 目录中。

您可以将此脚本添加到 CI/CD 发布流程中,以便自动化构建和部署。

如果您需要更高级的功能,例如版本控制、构建缓存等,请考虑使用专业构建工具,如 Jenkins 或 GitLab CI 等。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!