Home >Backend Development >Golang >How to Authenticate Private Go Modules with Google App Engine Standard in Go 1.11?
Authenticating Private Go Modules with Google App Engine Standard in Go 1.11
When updating an existing App Engine Standard project to use Go modules in Go 1.11, you may encounter errors when trying to authenticate with private repositories. To address this, we'll delve into the issue and provide a solution.
The Issue
When attempting to deploy the project with gcloud app deploy, the build fails with an error indicating a forbidden access to the private repository. This is because the Google Cloud Build system does not have access to private repositories by default.
Solution
Instead of dealing with complex credentials management, it's possible to leverage Go's module replace functionality to point GAE to use local code. Here's an outline of the steps:
Create a directory structure similar to the example provided, where you separate the service code from the GAE-specific code.
Create a go.mod file in the GAE directory, specifying the required dependencies and using module replace to point to the local code for your private module.
Before building, parse the go.mod file from the service directory to obtain the correct version of your private module.
Clone the private module into the modules folder within the GAE directory. Optionally, you can also copy WIP module source code for local debugging purposes.
Example:
Here's an example of the go.mod file from the GAE directory:
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
Advantages:
Caveat:
The above is the detailed content of How to Authenticate Private Go Modules with Google App Engine Standard in Go 1.11?. For more information, please follow other related articles on the PHP Chinese website!