Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gf build 生成linux二进制文件没有打包resource和config #1799

Closed
Rebellioncry opened this issue May 5, 2022 · 7 comments
Closed
Labels
bug It is confirmed a bug, but don't worry, we'll handle it. done This issue is done, which may be release in next version.

Comments

@Rebellioncry
Copy link

Rebellioncry commented May 5, 2022

1. What version of Go and system type/arch are you using?

go version go1.17.3 windows/amd64
-->

2. What version of GoFrame are you using?

GF Version: v2.0.6

3. Can this issue be re-produced with the latest release?

yes

4. What did you do?

gfcli:
build:
name: "hc-editor"
arch: "amd64"
system: "linux,windows"
path: "./bin"
pack: "manifest/config,resource"

5. What did you expect to see?

生成linux和windows可执行文件,内部打包了resource和config文件

6. What did you see instead?

linux二进制文件缺失config和resource,执行报错,windows可以执行
在运行gf build的时候在根目录生成packed文件夹和build_pack_data.go文件,不是在internal/packed,不知道为什么,是不是有bug?

@Rebellioncry Rebellioncry changed the title gf build 生成linux二进制文件不能打包resource和config gf build 生成linux二进制文件没有打包resource和config May 5, 2022
@Rebellioncry
Copy link
Author

#1721 这个一样,当初没有解决吗?

@Rebellioncry
Copy link
Author

请问要把静态文件和config文件打包进二进制文件,是不是先pack,然后在boot引用pakced目录,再打包才行?不然我发现直接build导致只是引用了resource和config的绝对路径,文件并没有打包进去

@Rebellioncry
Copy link
Author

搞清楚了,和文档https://goframe.org/pages/viewpage.action?pageId=7301958 不同的是,gf build 命令每次都在根目录生成packed文件,而不是在internal/packed,所以打包的时候文件没有打包成功。是文档没更新还是bug?

@yzqdev
Copy link

yzqdev commented May 9, 2022

一样的问题,估计是文档没及时更新,https://goframe.org/pages/viewpage.action?pageId=7301958
必须在main.go(或者其他入口文件)添加_ "myapp/packed"然后gf build(包含--pack),直接gf build(包含--pack)是不行的.
(其实资源管理章节里说了,https://goframe.org/pages/viewpage.action?pageId=1114148,但是如果先看的是gf build文档就可能会忽视掉这一点)

gf build打包过程如下:

  1. gf build(包含--pack)会先在packed文件夹生成一个build_pack_data.go文件
  2. 然后执行go build main.go,因为我们在main.go添加了_ "myapp/packed",所以资源文件就打包进去了,没加这行代码,就没打包进去
  3. 生成可执行文件

@XiaobinZhao
Copy link
Contributor

@yzqdev 即使在main.go引入pack也不行呢

package main

import (
	"myapp/internal/cmd"
	_ "myapp/packed"

	"github.com/gogf/gf/v2/os/gctx"
)

// 入口调用gf cmd
func main() {
	cmd.Main.Run(gctx.New())
}

配置文件如下:

[gfcli]
    [gfcli.build]
        name=      "mygf-app"
        path=      "./bin"
        arch=      "amd64"
        system=    "linux"
        mod=       "none"
        cgo=       0
        pack=      "manifest/config,resource/i18n,resource/public"
        version=   ""
        output=    ""
        extra=     ""

我的gf版本是:

GoFrame CLI Tool v2.0.6, https://goframe.org 
GoFrame Version: v2.0.7-0.20220505141935-ad04adcceaaa in current go.mod 
CLI Installed At: /usr/local/lib/go/bin/gf 
CLI Built Detail:
  Go Version:  go1.17.7
  GF Version:  v2.0.6
  Git Commit:  2022-03-31 16:57:32 66803fd6641e31c60f0489180668243ea092b87b
  Build Time:  2022-03-31 16:55:38

@gqcn
Copy link
Member

gqcn commented May 13, 2022

@Rebellioncry @yzqdev @XiaobinZhao 大家好,v2版本的打包由于项目路径变化是有点问题,大家可以等v2.1版本试试。也可以手动编译当前的master分支再试试。若有问题请再重新反馈。

@gqcn gqcn added bug It is confirmed a bug, but don't worry, we'll handle it. done This issue is done, which may be release in next version. labels May 13, 2022
@gqcn gqcn closed this as completed May 13, 2022
@XiaobinZhao
Copy link
Contributor

@gqcn bug已经在最新版本 2.1.0-rc4解决了么?合入版本是哪一个呀?我使用了最新的 2.1.0-rc4, 问题依然存在。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug It is confirmed a bug, but don't worry, we'll handle it. done This issue is done, which may be release in next version.
Projects
None yet
Development

No branches or pull requests

4 participants