Как насчет использования endly для автоматизации вашей облачной функции, в этом случае вы бы
используйте мод go с vendor, где ваше личное репо будет добавлено в папку vendor,
Убедитесь, что вы добавляете .gcloudignore, чтобы не включать go.mod, go.sum
@. Gcloudignore
go.mod
go.sum
Рабочий процесс автоматизации с конечным пользователем, использующим частное репо с учетными данными, может выглядеть следующим образом
@deploy.yaml
init:
appPath: $WorkingDirectory(.)
target:
URL: ssh://127.0.0.1/
credentials: localhost
myGitSecret: ${secrets.private-git}
pipeline:
secretInfo:
action: print
comments: print git credentials (debuging only_
message: $AsJSON($myGitSecret)
package:
action: exec:run
comments: vendor build for deployment speedup
target: $target
checkError: true
terminators:
- Password
- Username
secrets:
#secret var alias: secret file i.e ~/.secret/private-git.json
gitSecrets: private-git
commands:
- export GIT_TERMINAL_PROMPT=1
- export GO111MODULE=on
- unset GOPATH
- cd ${appPath}/
- go mod vendor
- '${cmd[3].stdout}:/Username/? $gitSecrets.Username'
- '${output}:/Password/? $gitSecrets.Password'
deploy:
action: gcp/cloudfunctions:deploy
'@name': MyFn
timeout: 540s
availableMemoryMb: 2048
entryPoint: MyFn
runtime: go111
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${matcherConfig.Bucket}
source:
URL: ${appPath}/
Наконец, проверьте облачная функция e2e автоматизация тестирования и развертывания