Gcloud 应用程序在 Windows 上导入私有存储库时部署 golang 错误

问题描述 投票:0回答:1

所以我有一个需要更新的 Google App Engine Golang 应用程序。我的代码位于私人仓库

https://github.com/ThePiachu/TestGoPrivate
中。我的
app.yaml
等都在
https://github.com/ThePiachu/TestGoPrivate/tree/main/app
中,但是我的源代码也从
TestGoPrivate
中的其他文件夹导入,如
https://github.com/ThePiachu/TestGoPrivate/Work

当我运行

gcloud app deploy app.yaml cron.yaml --no-promote --project testgoprivate -v testgoprivate-2024-10-09
时,我收到如下错误:

ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build 292cbe9e-04dc-470b-b054-6e625fc33e01 status: FAILURE
go: downloading go1.22.8 (linux/amd64)
go: github.com/ThePiachu/TestGoPrivate/app imports
        github.com/ThePiachu/TestGoPrivate/Work: github.com/ThePiachu/TestGoPrivate/[email protected]: replacement directory ./github.com/ThePiachu/TestGoPrivate/Work does not exist
go: github.com/ThePiachu/TestGoPrivate/app imports
        google.golang.org/appengine/v2: github.com/ThePiachu/TestGoPrivate/[email protected] (replaced by ./github.com/ThePiachu/TestGoPrivate/Work): reading github.com/ThePiachu/TestGoPrivate/Work/go.mod: open /layers/google.go.appengine-gomod/srv/github.com/ThePiachu/TestGoPrivate/Work/go.mod: no such file or directory
Full build logs: https://console.cloud.google.com/cloud-build/builds;region=asia-southeast1/292cbe9e-04dc-470b-b054-6e625fc33e01?project=441925606269

早些时候,我遇到了一些 GitHub 错误,所以我访问了 https://golang.org/doc/faq#git_https,创建了一个 GitHub 个人访问令牌,它是一个细粒度令牌,仅具有对代码和元数据的读取访问权限.

然后我在

_netrc
下创建了一个文件
.netrc
(在Windows下读某处
_netrc
应该是
%HOME%
)并用一行填充它:

machine github.com login ThePiachu password github_pat_<PASSWORD>

但后来我尝试做

gcloud app deploy
,但我不断收到相同的错误。

我尝试寻找某种方法来启用终端提示,或设置用户名/密码,或执行其他任何操作,但无济于事。一年前我还没有遇到过这个问题,上次我尝试更新应用程序时,但后来发生了一些变化,我不知道如何解决这个问题...

编辑:

我的Go版本是1.22.8,我的

go.mod
ThePiachu/TestGoPrivate/app
下。
/app
下的包裹是
main
/Work
下的包裹是
Work

编辑2:

这是一个简化的存储库副本,它出现相同的错误 - https://github.com/ThePiachu/TestGoPrivate。我更新了

go.mod
以使用本地代码与
replace github.com/ThePiachu/TestGoPrivate/Work => ./github.com/ThePiachu/TestGoPrivate/Work
但这并没有解决问题,只是更改了它......

authentication go google-app-engine gcloud
1个回答
0
投票

好吧,所以最大的问题是文件的正确放置。

过去,

/app
文件夹是 Google App Engine Go 项目的根目录 - 这就是
app.yaml
曾经所在的位置,等等。但现在看来 GAE 希望将存储库的顶层视为主文件夹。

所以我的第一个问题是尝试将

go.mod
go.sum
放入
app
。不,它去了上面的根文件夹
app
。这可能足以解决存储库中的导入问题(因此
/app/main.go
/Work
导入),因为您仍在同一个项目中。
gcloud app deploy
不应该抱怨它。

但是如果您从不同的私人存储库导入,我认为这就是我偶然发现另一个错误的地方。我在某处看到一些博客文章给出了一个基本上看起来像这样的示例:

replace github.com/ThePiachu/TestGoPrivate/Work => ./github.com/ThePiachu/TestGoPrivate/Work
,我心想“啊,所以这个点代表 GOPATH,我只是从那里指定完整的导入路径!”。事实证明不是,点指定了
go.mod
所在的文件夹以及与之相关的内容。所以在这个例子中我会去
replace github.com/ThePiachu/TestGoPrivate/Work => ./Work
。博客本身将私人存储库直接导入到另一个存储库中,从而造成混乱。

我认为可能还需要指定

GOPRIVATE inside of 
go env
like
set GOPRIVATE=github.com/ThePiachu/TestGoPrivate/*`,但我不确定这是否有任何贡献,因为我这样设置在此过程的早期。

所以,是的,主要问题是正确放置文件并从那里开始。我有很多其他问题也与之同时发生,所以解决它花了一段时间......

© www.soinside.com 2019 - 2024. All rights reserved.