首页 >后端开发 >Golang >如何使用 Go 1.11 验证 Google App Engine 标准中的私有 Go 模块?

如何使用 Go 1.11 验证 Google App Engine 标准中的私有 Go 模块?

Linda Hamilton
Linda Hamilton原创
2024-10-26 07:52:30432浏览

How to Authenticate Private Go Modules in Google App Engine Standard with Go 1.11?

使用 Go 1.11 对 Google App Engine Standard 中的私有 Go 模块进行身份验证

将 Go App Engine Standard 项目更新为 Go 1.11 模块时,身份验证对于私有模块来说可能会带来挑战。默认情况下,Google Cloud 构建系统无权访问私有存储库。

错误:

尝试部署包含私有模块的项目时,出现错误可能会出现类似以下情况:

ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build <GUI> 
status: FAILURE.
Build error details: go: bitbucket.org/[email protected]: 
https://api.bitbucket.org/2.0/repositories/myPrivateRepo?fields=scm: 
403 Forbidden

可以完成吗?

是的,可以使用 Go 1.11 模块对 App Engine Standard 中的私有模块进行身份验证。但是,迁移文档中有关将文件移动到 GOPATH 的指导具有误导性。新的模块系统确实旨在将代码保留在 GOPATH 之外。

解决方案:使用模块替换

更好的解决方案是使用 Go 的凭证,而不是管理凭据模块替换功能。这允许本地项目在构建过程中使用私有模块的本地副本。

方法:

  1. 创建构建目录: 在主项目目录中创建一个 build 目录。
  2. 符号链接源代码: 将项目的 src 目录链接到 build 目录中的 src 目录。
  3. 克隆或复制私有模块:将必要的私有模块克隆或复制到构建中模块目录的子目录中。
  4. 创建 GAE 特定的 go.mod 文件: 在构建目录的根目录中,创建一个新的 go.mod 文件,该文件使用替换指令引用私有模块。例如:
module myServiceGAE

require (
    bitbucket.org/me/myService v0.0.0
    google.golang.org/appengine v1.4.0
)

replace bitbucket.org/me/myService => ./src
replace bitbucket.org/me/myModule => ./modules/utils

优点:

  • 保持项目和 GAE 之间的关注点分离
  • 促进构建适用于非 GAE 环境的软件包

缺点:

  • 如果私有模块依赖于另一个私有模块,可能会变得复杂

以上是如何使用 Go 1.11 验证 Google App Engine 标准中的私有 Go 模块?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn