Deploy Google Cloud Function using Go modules and vendoring at the same time

1.5k Views Asked by At

I am trying to deploy a Google Cloud Function in Go, but got an error while deploying because I use, at the same time, subpackages and "internal modules" (only defined on my host, not deployed anywhere). I have the following structure :

.
├── function
│   ├── package1
│   │   └── file1.go
│   ├── function.go
│   ├── go.mod
│   └── go.sum
└── common
    ├── common.go
    ├── go.mod
    └── go.sum

Contents of my function.go (entrypoint of my Cloud Function) :

package function

import (
    "github.com/.../function/package1"
    "github.com/.../common"
)

// use functions from package1 and common

Topics have been covered individually here :

The first post indicates to use vendoring and exclude go.mod and go.sum from the source to be able to use common module, while the 2nd indicates to include go.mod and go.sum without vendoring to be able to use subpackages.

But I am wondering : is it possible to use both at the same time? Or vendoring dependencies requires to put all .go source files in the same directory (no subpackages)? Likewise, using subpackages requires to not use vendoring? How can I structure my code to avoid those restrictions, or what can I do (deploy common module somewhere, ...)?

Also, the documentation on "Specifying dependencies" for Go Cloud Functions states that :

Cloud Functions in Go must provide all of their dependencies via either Go modules with a go.mod file, or a vendor directory. Your function cannot specify dependencies using both Go modules and a vendor directory at the same time.

0

There are 0 best solutions below