为了账号安全,请及时绑定邮箱和手机立即绑定

GO GCP SDK 授权码连接gcp项目

GO GCP SDK 授权码连接gcp项目

Go
慕田峪4524236 2022-11-23 19:28:24

我正在使用以下按预期工作的代码,我从 cli 使用gcloud auth application-default login并输入我的凭据,我能够从我的 macbook 成功运行代码。


现在我需要在我的 CI 中运行这段代码,我们需要使用不同的方法,获取 client_secret 和 client_id 或服务帐户/一些 ENV 变量的方法应该是什么,通过 GO 代码的方法是什么?


import "google.golang.org/api/compute/v1"


project := "my-project"

region := "my-region"


ctx := context.Background()


c, err := google.DefaultClient(ctx, compute.CloudPlatformScope)

if err != nil {

    log.Fatal(err)

}


computeService, err := compute.New(c)

if err != nil {

    log.Fatal(err)

}


req := computeService.Routers.List(project, region)

if err := req.Pages(ctx, func(page *compute.RouterList) error {

    for _, router := range page.Items {

        // process each `router` resource:

        fmt.Printf("%#v\n", router)

        // NAT Gateways are found in router.nats

    }

    return nil

}); err != nil {

    log.Fatal(err)

}


查看完整描述

2 回答

?
慕斯王

TA贡献1564条经验 获得超2个赞

由于您使用的是 Jenkins,因此您可能希望从如何创建服务帐户开始。它指导您创建服务帐户并导出密钥以在另一个 CI/CD 系统中设置为 var。

然后参考客户端库中的文档,了解如何使用源凭据创建新客户端。

例如

client, err := storage.NewClient(ctx, option.WithCredentialsFile("path/to/keyfile.json"))

如果您未提供任何来源,它将尝试在本地读取凭据并充当运行该操作的服务帐户(不适用于您的用例)。


查看完整回答
反对 回复 5天前
?
拉丁的传说

TA贡献1485条经验 获得超8个赞

许多 CI 支持导出特定的环境变量。或者你的脚本/conf 也可以做到。

但是如果你想在 CI 中运行,为什么你需要这样的配置?集成测试?

一些服务可以在本地用于单元/冒烟测试。与 pubsub 一样,有一种方法可以运行假的/本地 pubsub 来执行一些测试。

或许我没有理解你的问题,在这种情况下你能举个例子吗?


查看完整回答
反对 回复 5天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信