【问题标题】:Jfrog Artifactory repository creation and permission automationJfrog Artifactory 仓库创建和权限自动化
【发布时间】:2023-01-17 03:19:39
【问题描述】:

我们正在使用 Jfrog Artifactory 并寻找一种方法来自动为项目列表创建回购、组和权限,作为 Azuredevops 管道的一部分。

例如,我想创建一个名为“myproject-mvn-repo”的虚拟 Repo,其所有子组件如下所示。

  • 创建一个虚拟仓库:myproject-mvn-repo
  • 链接现有的或为 maven 创建远程仓库(如果不存在):myproject-mvn-remote-repo
  • 如果不存在则创建 2 个本地存储库:- myproject-mvn-release-local-repo - myproject-mvn-snapshot-local-repo
  • 为 Repos 创建安全组:- myproject-sg
  • 为 Repos 和相关构建创建 2 类权限:myproject- developers(读写) myproject-contributors(读/写/管理)
  • 随后将用户添加到组中

我尝试关注 Jfrog document ,但无法遍历许多项目,需要使其成为幂等的(如果已经存在,不应创建/修改任何回购或组件)

【问题讨论】:

    标签: artifactory jfrog-cli jfrog-xray


    【解决方案1】:

    让我们把它分成两部分——管理存储库和管理权限。

    资料库

    为了在单个请求中创建/更新/删除多个存储库,您可以使用Artifactory YAML Configuration。

    例如(简化):

    PATCH /artifactory/api/system/configuration
    Content-Type: application/yaml
    
    localRepositories:
        myproject-mvn-release-local-repo:
            type: maven
            ...
        myproject-mvn-snapshot-local-repo:
            type: maven
            ...
    remoteRepositories:
        myproject-mvn-remote-repo:
            type: maven
            url: ...
            ...
    virtualRepositories:
        myproject-mvn-repo:
            type: maven
            repositories:
                - myproject-mvn-release-local-repo
                - myproject-mvn-snapshot-local-repo
                - myproject-mvn-remote-repo
            ...
    

    注意 - 这是一个 PATCH 请求,这意味着如果存储库已经存在,它不会使请求失败,但它会根据此请求中的设置更新其配置。

    权限

    对于管理权限,还有两个选项 - 使用项目(首选)或使用组和权限目标。

    使用项目

    来自documentation:

    JFrog Projects 是一个管理实体,用于托管您的资源(存储库、构建、发布包和管道),并将用户/组关联为具有特定权利的成员。因此,使用项目可以帮助平台管理员分担部分日常管理工作,并在客户产品之间产生更好的分离,以提高客户对效率、规模、成本和安全性的可见性。 Projects 简化了新用户的入职流程,为 LOB 和项目利益相关者创造了更好的可见性。

    您可以创建项目、为项目中的用户和组分配角色、为项目分配存储库等。可以使用REST API管理项目,具体(但不限于):

    使用组和权限目标

    使用REST API 管理群组。先试试create a group。如果组已经存在,它将返回 409 Conflict,然后使用 update group 代替,或者只是 add / remove members to the group。

    例如 - 创建组 myproject-developers 并将 alice 和 bob 作为成员(简化):

    POST /access/api/v2/groups
    Content-Type: application/json
    
    {
      "name": "myproject-developers",
      "description": "My project developers",
      "members": ["alice", "bob"],
      ...
    }
    

    管理权限 - 使用 REST API create / replace permission targets,聚合存储库并授予每个组对这些存储库的相关权限。

    例如(简化):

    PUT /artifactory/api/security/permissions/myproject-permissions
    Content-Type: application/json
    
    {
      "name": "myproject-developers",
      "repositories": [
        "myproject-mvn-release-local-repo",
        "myproject-mvn-snapshot-local-repo",
        "myproject-mvn-remote-repo"
      ],
      "principals": {
        "groups" : {
          "myproject-developers" : ["r","w"],
          "myproject-contributors" : ["r","w","m"]
        }
      },
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多