I am trying to deploy to google cloud using deploy command and my code refers local package using the github url. I getting below when deploying using gcloud deploy command. So in this example. My endpoints package refers to local package price using the full git url. What am I missing here?
package endpoints
import (
"encoding/json"
"fmt"
"github.com/piscean/pricing/price"
"net/http"
)
func LawnPricing(w http.ResponseWriter, r *http.Request) {
m, err := price.Pricing()
c, err := json.Marshal(m)
w.Write(c)
r.Body.Close()
}
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: /tmp/sgb/gopath/src/serverlessapp/vendor/endpoints/pricing.go:6:2: cannot find package "github.com/piscean/pricing/price" in any of: /tmp/sgb/gopath/src/serverlessapp/vendor/github.com/piscean/pricing/price (vendor tree) /go/src/github.com/piscean/pricing/price (from $GOROOT) /tmp/sgb/gopath/src/github.com/piscean/pricing/price (from $GOPATH) /tmp/sgb/gopath/src/serverlessapp/vendor/endpoints/zipcode.go:5:2: cannot find package "github.com/piscean/pricing/zip" in any of: /tmp/sgb/gopath/src/serverlessapp/vendor/github.com/piscean/pricing/zip (vendor tree) /go/src/github.com/piscean/pricing/zip (from $GOROOT) /tmp/sgb/gopath/src/github.com/piscean/pricing/zip (from $GOPATH)
You should use the dependency package management tool for this called as dep.
Install dep by using the command:
go get -u github.com/golang/dep/cmd/dep
This would create the binary of dep in the GOBIN directory. Navigate to directory where main package is present and execute the command:
For Windows:
%GOBIN%\dep.exe init
For Linux:
$GOBIN\dep init
This would create Gopkg.toml and Gopkg.lock files along with the vendor folder that would solve your issue.
Reference: https://golang.github.io/dep/docs/introduction.html
The cloud function is a managed environment which google provision for us during the deployment of the function. While setting the environment google supplies all the system dependencies but any external dependency should be handled by function itself.
While resolving external dependencies, it looks for Vendor directory , GOROOT and GOPATH to find to package being imported. If package is not found at any of these locations , you get this error.
Solution
Reference - https://github.com/GoogleCloudPlatform/golang-samples/issues/1600
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With