登录
首页 >  Golang >  Go问答

go-containerregistry列举了GCR存储库中的所有项目和组织

来源:stackoverflow

时间:2024-03-11 19:00:26 111浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《go-containerregistry列举了GCR存储库中的所有项目和组织》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我使用以下代码列出 gcr 中可用的 docker 存储库

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/google/go-containerregistry/pkg/authn"
    gcr "github.com/google/go-containerregistry/pkg/name"
    "github.com/google/go-containerregistry/pkg/v1/google"
    "github.com/google/go-containerregistry/pkg/v1/remote"
)

func main() {

    auth, err := google.NewGcloudAuthenticator()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(auth)
    registry, err := gcr.NewRegistry("gcr.io")
    if err != nil {
        log.Fatal(err)
    }
    ctx := context.Background()
    repos, err := remote.Catalog(ctx, registry, remote.WithAuthFromKeychain(authn.DefaultKeychain))
    if err != nil {
        log.Fatal(err)
    }
    for _, repoName := range repos {
        fmt.Println(repoName)
    }
}

问题是,尽管我已经对特定项目执行了显式 gcloud 配置集项目 ,但调用上述程序将列出 allall 存储库我的 gcloud 有权访问的组织和所有项目。

有没有办法限制上面的代码,使其列出特定组织/项目的 gcr 存储库?


正确答案


请注意,gcloud config set project 仅适用于 gcloud (CLI) 命令,但不适用于 SDK。

貌似这个SDK只实现了Docker API,不理解项目的概念。这里的建议是迁移到Artifact Registry。您可以使用REST资源projects.locations.repositories的list方法轻松获取特定项目的存储库列表。在这里您可以找到一个HTTP GET示例:

GET /v1beta2/{parent=projects/*/locations/*}/repositories

创建和编辑此答案是为了让社区更容易看到评论中给出的解决方案

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>