使用 Go 1.11 在 Google App Engine Standard 上验证私有 Go 模块
在 Go 1.11 中,模块的引入提供了一种更有效的方法管理依赖关系。但是,在 Google App Engine Standard 上使用私有模块时,可能会出现身份验证问题。当尝试部署 gcloud 应用程序并遇到 403 Forbidden 错误时,此问题变得很明显。
为了解决此问题,已采用供应商或使用第三方依赖项管理工具(例如 DEP)等传统方法。然而,对于新的模块系统,这些解决方案可能并不理想。
使用模块替换的解决方案
除了处理凭证之外,一个可行的解决方案是使用 Go 的模块替换功能可指示 GAE 使用本地代码。此方法涉及:
设置目录结构:
使用以下目录结构组织您的项目:
myService/ |__ src/ | |__ service.go | |__ go.mod |__ build/ |__ gae/ |__ src/ // Symlink to ../../src |__ modules/ // Git ignored |__ app.go |__ go.mod |__ app.yaml
修改GAE go.mod:
在gae目录中创建一个go.mod文件并指定依赖项,包括使用replace的私有模块的本地路径:
module myServiceGAE require ( bitbucket.org/me/myService v0.0.0 google.golang.org/appengine v1.4.0 ) replace bitbucket.org/me/myService => ./src
克隆或复制私有模块:
在gae目录下的modules文件夹中,克隆或复制您的私有模块构建项目。
这种方法允许您将私有模块代码与主项目分开,同时确保 GAE 在部署期间使用正确的版本。
优点:
缺点:
以上是如何使用 Go 1.11 验证 Google App Engine 标准上的私有 Go 模块?的详细内容。更多信息请关注PHP中文网其他相关文章!