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

2.1版本gf build命令没有进行pack打包 #1971

Closed
demozx opened this issue Jul 6, 2022 · 13 comments
Closed

2.1版本gf build命令没有进行pack打包 #1971

demozx opened this issue Jul 6, 2022 · 13 comments
Labels
done This issue is done, which may be release in next version. enhancement question

Comments

@demozx
Copy link

demozx commented Jul 6, 2022

2.1版本gf build命令没有进行pack打包

(1)gf build没有自动执行pack
(2)手动pack文件到internal/packed/data.go,然后执行gf build,将编译后的可执行文件在同环境的新设备运行,结果无法运行,原因是manifest和resource的文件找不到。

config.yaml配置如下

gfcli:
  build:
    name: "gfCms"
    arch: "amd64"
    system: "linux"
    mod: "none"
    cgo: 0
    pack: "manifest/config,manifest/i18n,resource/public,resource/template"
    version: ""
    output: "./bin"
    extra: ""
@stevenyangecho
Copy link

同问,项目没办法继续了...

@demozx
Copy link
Author

demozx commented Jul 8, 2022

看了下源码,原pack应改为如下两个配置,这样可以pack了,本地直接run的话,确实是读取的build_pack_data.go文件,但是build后的二进制文件运行仍然是找不到文件。

gfcli:
  build:
    packSrc: "manifest/config,resource/public,resource/template,resource/i18n"
    packDst: "internal/packed/build_pack_data.go"

@XiaobinZhao
Copy link

@demozx 按照你的配置,并没有生效呢

GoFrame CLI Tool v2.1.4, https://goframe.org
GoFrame Version: v2.1.4 in current go.mod
CLI Installed At: /usr/local/sbin/gf
CLI Built Detail:
  Go Version:  go1.17.13
  GF Version:  v2.1.4
  Git Commit:  2022-08-26 15:45:41 a0619f7ff0e1d7766884e3062d1b3b0947c87da4
  Build Time:  2022-08-26 15:51:38

setting.toml配置文件如下

[gfcli]
    [gfcli.build]
        name=      "csdp-mgr"
        path=      "./bin"
        arch=      "amd64"
        system=    "linux"
        mod=       "none"
        cgo=       0
        packSrc=   "manifest/config,resource/i18n,resource/public"
        packDst=   "internal/packed/build_pack_data.go"
        version=   ""
        output=    ""
        extra=     ""

执行gf build 打包成功之后,把二进制文件放到另一个环境中执行报错:

root@xview:~# ./csdp-mgr
2022-09-20 18:16:34.903 [FATA] SetServerRoot failed: cannot find "/resource/public" in following paths:
1. /root
1. cannot find "/resource/public" in following paths:
1. /root
   1).  github.com/gogf/gf/v2/os/gfile.Search
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/os/gfile/gfile_search.go:55
   2).  github.com/gogf/gf/v2/net/ghttp.(*Server).SetServerRoot
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/net/ghttp/ghttp_server_config_static.go:57
   3).  github.com/gogf/gf/v2/net/ghttp.(*Server).SetConfig
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/net/ghttp/ghttp_server_config.go:355
   4).  github.com/gogf/gf/v2/net/ghttp.(*Server).SetConfigWithMap
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/net/ghttp/ghttp_server_config.go:336
   5).  github.com/gogf/gf/v2/frame/gins.Server.func1
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/frame/gins/gins_server.go:70
   6).  github.com/gogf/gf/v2/container/gmap.(*StrAnyMap).doSetWithLockCheck
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/container/gmap/gmap_hash_str_any_map.go:216
   7).  github.com/gogf/gf/v2/container/gmap.(*StrAnyMap).GetOrSetFuncLock
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/container/gmap/gmap_hash_str_any_map.go:253
   8).  github.com/gogf/gf/v2/frame/gins.Server
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/frame/gins/gins_server.go:37
   9).  github.com/gogf/gf/v2/frame/g.Server
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/frame/g/g_object.go:32
   10). csdp-mgr/internal/cmd.glob..func1
    	/mnt/e/go-workspace/host-agent/csdp-mgr/internal/cmd/cmd.go:25
   11). github.com/gogf/gf/v2/os/gcmd.(*Command).doRun
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/os/gcmd/gcmd_command_run.go:148
   12). github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValueError
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/os/gcmd/gcmd_command_run.go:81
   13). github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValue
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/os/gcmd/gcmd_command_run.go:40
   14). github.com/gogf/gf/v2/os/gcmd.(*Command).Run
    	/root/go/pkg/mod/github.com/gogf/gf/v2@v2.1.4/os/gcmd/gcmd_command_run.go:34
   15). main.main
    	/mnt/e/go-workspace/host-agent/csdp-mgr/main.go:12

我姿势不对么?

@demozx
Copy link
Author

demozx commented Sep 20, 2022

@XiaobinZhao 确实有问题,resource/public无法被打包,可能是resource/public作为serverRoot的原因,继续等大佬修复吧

@github-actions github-actions bot removed the inactive label Sep 20, 2022
@gqcn
Copy link
Member

gqcn commented Oct 11, 2022

@stevenyangecho @XiaobinZhao @demozx 我看看呢。

@gqcn gqcn added bug It is confirmed a bug, but don't worry, we'll handle it. question and removed bug It is confirmed a bug, but don't worry, we'll handle it. labels Oct 11, 2022
@gqcn
Copy link
Member

gqcn commented Oct 11, 2022

@stevenyangecho @XiaobinZhao @demozx 不好意思各位,我check了一下,从某个版本开始,参数名称有调整,给大家一个示例的配置:

gfcli:
  # 工具编译配置
  build:
    name:     "focus"
    arch:     "amd64"
    system:   "darwin"
    packSrc:  "resource,manifest"
    mod:      ""
    cgo:      0

image

大家可以在代码中通过gres.Dump()方法查看打包的内存文件,我是这么来调试的:
image
运行后,像这样的,这些文件都能被程序自动识别到,配置路径和开发时一样,程序代码不需要做额外设置:
image

@gqcn
Copy link
Member

gqcn commented Oct 11, 2022

该issue关闭了哈,若还有问题请再提issue。

@gqcn gqcn closed this as completed Oct 11, 2022
@XiaobinZhao
Copy link

@gqcn 解决了。但是过程还是有点小曲折。

GoFrame CLI Tool v2.1.0-rc4, https://goframe.org
GoFrame Version: v2.1.4 in current go.mod
CLI Installed At: E:\go-workspace\bin\gf.exe
CLI Built Detail:
  Go Version:  go1.17.10
  GF Version:  v2.1.0-rc4
  Git Commit:  2022-06-01 16:36:40 0639becccc486fda179b81e7a685f67c91b173a4
  Build Time:  2022-06-01 16:34:52

我的配置文件config.toml

[server]
	address        = "0.0.0.0:8199"
    serverAgent    = "Csdp Mgr Server"
    openapiPath    = "/api.json"
    swaggerPath    = "/redoc"
    lang           = "zh-CN" 
    # serverRoot     = "/resource/public"   # 这个写法有点问题,要与gres 路径配合 
    serverRoot     = "resource/public"  

    errorLogPattern     = "error-{Y-m-d}.log"

[gfcli]
    [gfcli.build]
        name=      "csdp-mgr"
        path=      "./bin"
        arch=      "amd64"
        system=    "windows"
        mod=       "none"
        cgo=       0
        packSrc=   "manifest,resource"
        # packSrc=   ""manifest/config,resource/i18n,resource/public""  # 这种写法有点问题,需要与serverRoot进行配合
        version=   ""
        output=    ""
        extra=     ""

注意看我注释掉的2个配置语句。

以下是我的正常输出:

2022-10-12T02:52:29+00:00   0.00B manifest
2022-10-12T02:52:26+00:00   0.00B manifest/config
2022-10-12T02:52:26+00:00   1.78K manifest/config/config.toml
2022-07-14T08:35:51+00:00   1.89K manifest/config/config.toml.example
2022-07-14T08:35:51+00:00   0.00B manifest/docker
2022-07-14T08:35:51+00:00 922.00B manifest/docker/Dockerfile
2022-07-14T08:35:52+00:00  64.00B manifest/docker/docker.sh
2022-10-12T02:52:29+00:00   0.00B resource
2022-07-14T08:35:52+00:00   0.00B resource/i18n
2022-07-14T08:35:52+00:00   0.00B resource/i18n/.gitkeep
2022-07-14T08:35:52+00:00   0.00B resource/i18n/en
2022-07-14T08:35:52+00:00 579.00B resource/i18n/en/en.toml
2022-07-14T08:35:52+00:00   4.42K resource/i18n/en/validation.toml
2022-07-14T08:35:52+00:00   0.00B resource/i18n/zh-CN
2022-07-14T08:35:52+00:00   4.75K resource/i18n/zh-CN/validation.toml
2022-07-14T08:35:52+00:00 704.00B resource/i18n/zh-CN/zh-CN.toml
2022-07-14T08:35:52+00:00   0.00B resource/public
2022-07-14T08:35:52+00:00   0.00B resource/public/.gitkeep
2022-07-14T08:35:52+00:00   0.00B resource/public/swagger
2022-07-14T08:35:52+00:00 459.00B resource/public/swagger/favicon-16x16.png
2022-07-14T08:35:52+00:00 1006.00B resource/public/swagger/favicon-32x32.png
2022-07-14T08:35:52+00:00 202.00B resource/public/swagger/index.css
2022-07-14T08:35:52+00:00 799.00B resource/public/swagger/index.html
2022-07-14T08:35:52+00:00   2.63K resource/public/swagger/oauth2-redirect.html
2022-07-14T08:35:52+00:00 564.00B resource/public/swagger/swagger-initializer.js
2022-07-14T08:35:52+00:00   1.04M resource/public/swagger/swagger-ui-bundle.js
2022-07-14T08:35:52+00:00   1.47M resource/public/swagger/swagger-ui-bundle.js.map
2022-07-14T08:35:52+00:00 396.88K resource/public/swagger/swagger-ui-es-bundle-core.js
2022-07-14T08:35:52+00:00   1.21M resource/public/swagger/swagger-ui-es-bundle-core.js.map
2022-07-14T08:35:52+00:00   1.04M resource/public/swagger/swagger-ui-es-bundle.js
2022-07-14T08:35:52+00:00   1.46M resource/public/swagger/swagger-ui-es-bundle.js.map
2022-07-14T08:35:52+00:00 331.58K resource/public/swagger/swagger-ui-standalone-preset.js
2022-07-14T08:35:52+00:00 517.84K resource/public/swagger/swagger-ui-standalone-preset.js.map
2022-07-14T08:35:52+00:00 140.61K resource/public/swagger/swagger-ui.css
2022-07-14T08:35:52+00:00 269.83K resource/public/swagger/swagger-ui.css.map
2022-07-14T08:35:52+00:00 279.96K resource/public/swagger/swagger-ui.js
2022-07-14T08:35:52+00:00 295.72K resource/public/swagger/swagger-ui.js.map
2022-07-14T08:35:52+00:00   0.00B resource/scripts
2022-07-14T08:35:52+00:00   0.00B resource/scripts/.gitkeep
2022-07-14T08:35:52+00:00   0.00B resource/template
2022-07-14T08:35:52+00:00   0.00B resource/template/.gitkeep
TOTAL FILES: 41
2022-10-12 10:54:51.259 [DEBU] SetServerRoot path: resource/public
2022-10-12 10:54:51.311 [INFO] cmd.go:35: 全局设置当前语言为:zh-CN
2022-10-12 10:54:51.315 [INFO] swagger ui is serving at address: http://0.0.0.0:8199/redoc/
2022-10-12 10:54:51.315 [INFO] openapi specification is serving at address: http://0.0.0.0:8199/api.json
2022-10-12 10:54:51.319 [INFO] pid[470]: http server started listening on [0.0.0.0:8199]
... 省略...

@demozx
Copy link
Author

demozx commented Oct 12, 2022

@XiaobinZhao 我昨天又找郭大佬了,录了屏给大佬,看大佬怎么处理吧

@XiaobinZhao
Copy link

@demozx 我解决了奥,你仔细看我的描述

@demozx
Copy link
Author

demozx commented Oct 12, 2022

@XiaobinZhao 我看到了,但是我觉得不能这样写是不应该的
packSrc: "manifest/config,resource/public,resource/template,resource/i18n"

@XiaobinZhao
Copy link

@demozx 嗯嗯,这是个问题

@gqcn
Copy link
Member

gqcn commented Oct 12, 2022

@XiaobinZhao 我看到了,但是我觉得不能这样写是不应该的 packSrc: "manifest/config,resource/public,resource/template,resource/i18n"

这是个问题,后面我考虑下怎么改进

@gqcn gqcn reopened this Oct 13, 2022
gqcn added a commit that referenced this issue Oct 13, 2022
@gqcn gqcn added the done This issue is done, which may be release in next version. label Oct 13, 2022
@gqcn gqcn closed this as completed Oct 13, 2022
gqcn added a commit that referenced this issue Oct 14, 2022
Co-authored-by: houseme <housemecn@gmail.com>
houseme added a commit that referenced this issue Oct 22, 2022
Co-authored-by: houseme <housemecn@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
done This issue is done, which may be release in next version. enhancement question
Projects
None yet
Development

No branches or pull requests

4 participants