使用 Go 1.11 在 Google App Engine Standard 上验证私有 Go 模块
当 Go 应用程序升级到 Go 1.11 的模块系统时引擎标准项目,验证私有模块可能会带来挑战。按照迁移文档,您在尝试部署项目时可能会遇到“403 Forbidden”错误。
错误
该错误源于 Google 云构建系统无法访问托管该模块的私有存储库。云构建系统在部署期间需要凭据才能访问存储库,但当前设置中未提供这些凭据。
解决方案
要解决此问题,您可以利用 Go 的模块替换功能。这允许您将云构建系统配置为使用私有模块的本地副本,而不是从存储库中获取它。
目录结构
创建专用目录此方法的结构:
myService/ src/ service.go # contains run() function for routers and other setups go.mod # depends on private and external modules ... # other source files build/ gae/ src/ # symlink to ../../src modules/ # stores cloned or locally modified private modules app.go # contains main() to call service.run() and appEngine.Main() go.mod # includes main() and required modules app.yaml
配置
在 myService/gae/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 # Optionally replace other private modules replace bitbucket.org/me/myModule => ./modules/utils
此配置指示云构建系统使用 src 目录中 myService 的本地副本。替换指令的作用类似于伪供应商,确保构建系统使用本地版本而不是从存储库中获取版本。
优点和缺点
优点:
缺点:
结论
通过使用模块替换和修改的目录结构,您可以使用 Go 1.11 在 Google App Engine Standard 上成功验证私有模块。这种方法提供了安全性和灵活性,可以将私有模块无缝集成到您的项目中。
以上是如何使用 Go 1.11 验证 Google App Engine Standard 上的私有 Go 模块?的详细内容。更多信息请关注PHP中文网其他相关文章!