1. 产品简介
  2. 快速开始
  3. 编写构建流程
  4. 配置构建计划
  5. 构建环境依赖包
  6. 构建制品
  7. 构建节点
  8. 管理构建计划
  9. 系统插件
  10. 自定义团队插件
  11. 最佳实践
  12. 常见问题
  13. 词汇表
项目管理员指南 / 高级设置 / 凭据管理

凭据管理

功能介绍

什么是凭据

CODING 将账号密码、API Token、公私钥对、证书这一类与访问权限相关的信息称之为凭据。

凭据的使用场景

许多第三方的应用或平台都可以与 CODING 的持续集成、持续部署、制品库等功能模块进行交互。例如,在 CODING 持续集成模块内拉取 GitHub 上的代码时, 若我们将 GitHub 的账号密码等重要信息硬编码在配置文件内,将会有极大的安全隐患。

为了最大限度提高安全性,您可以利用 CODING 的「凭据管理」功能存储相关的凭据。在使用凭据时,您可以将凭据 ID 写入到相关的配置文件中, 只通过凭据 ID 来换取凭据信息。

管理凭据

进入项目之后,点击页面左下角「项目设置」进入项目设置页面。

选择「开发者选项」->「凭据管理」进入凭据管理页面。该页面会列出所有已创建的凭据。

创建「SSH 私钥」类型的凭据

方式一:命令行创建

使用命令创建 SSH 密钥。注意私钥第一行应包含「BEGIN RSA PRIVATE KEY」,否则后续使用时可能会报错「invalid private key」。

ssh-keygen -m PEM -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
JvKE3WXugDp2YuswF4MAJq/o+R9kRKZzNfeM9A6NWjwjnIYP4yUVwqa/20MYmVpT
......
方式二:手动录入凭据
  1. 在凭据管理页面,点击右上角「录入凭据」。

  1. 在录入凭据页面,输入相关信息:
  • 选择「SSH 私钥」凭据类型
  • 输入凭据名称,必填项,长度不超过 255 个字符
  • 输入 SSH 私钥,必填项
  • 输入私钥口令,非必填
  • 输入描述,非必填
  1. 勾选需要授权的持续集成功能。只有进行凭据授权后,在使用 CODING 持续集成功能模块创建构建计划时才有权限使用该凭据。

  2. 点击「创建」即可完成创建。录入成功的凭据会显示在凭据管理页面。

创建「用户名 + 密码」类型的凭据

  1. 在凭据管理页面,点击右上角「录入凭据」。

  1. 在录入凭据页面,输入相关信息:
  • 选择「用户名 + 密码」凭据类型
  • 输入凭据名称,必填项,长度不超过 30 个字符
  • 输入用户名和密码,必填项
  • 输入描述,非必填
  1. 勾选需要授权的持续集成功能。只有进行凭据授权后,在使用 CODING 持续集成功能模块创建构建计划时才有权限使用该凭据。

  2. 点击「创建」即可完成凭据录入。录入成功的凭据会显示在凭据管理页面。

更新凭据

如需更新凭据,在凭据管理页面,点击该凭据的「编辑」,修改相关信息再保存即可更新该凭据。

删除凭据

如需删除凭据,在凭据管理页面,点击该凭据的「删除」。注意:移除凭据后使用本凭据的持续集成任务将会停止,请为其设置新的凭据。

在凭据的编辑页面,也可以进行删除凭据的操作。

凭据使用示例

以在 CODING 持续集成和制品库当中,使用「用户名 + 密码」类型的凭据为例,来演示凭据的使用方式。

在例子中,我们会通过 CODING 持续集成进行镜像构建与打包,并通过凭据 ID 将镜像推送到 CODING 制品库。在例子项目中需要:

  1. 代码中包含 Dockerfile 文件
  2. 准备一个 Docker 类型的制品库
  3. 准备一个「用户名 + 密码」的凭据
  4. 创建一个持续集成任务,并对该构建任务进行凭据授权

如下是准备进行持续构建的项目代码:

创建一个 Docker 类型的制品库

该制品仓库地址在配置持续集成任务时会被使用到。

创建一个「用户名 + 密码」的凭据

该凭据 ID 在配置持续集成任务时会被使用到。

配置一个持续集成任务

  1. 在持续集成中创建任务,使用模版的 Jenkinsfile ,参考如下配置文件将凭据 ID 放在 credentialsId 中,同时替换制品仓库地址。
pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        sh 'docker version'
        echo '构建完成.'
        script {
          def exists = fileExists 'README.md'
          if (!exists) {
            writeFile(file: 'README.md', text: 'Helloworld')
          }
        }

        archiveArtifacts(artifacts: 'README.md', fingerprint: true)
      }
    }
    stage('测试') {
      steps {
        echo '单元测试中...'
        echo '单元测试完成.'
      }
    }
    stage('打包镜像') {
      steps {
        sh "docker build -t test:${env.GIT_BUILD_REF} -t anywhere-docker.pkg.coding.net/helloworld/helloworld/test:latest ."
      }
    }
    stage('镜像推送') {
      steps {
        script {
          try {
            withCredentials([usernamePassword(credentialsId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS')]) {
              sh "echo ${REGISTRY_PASS} | docker login -u ${REGISTRY_USER} --password-stdin anywhere-docker.pkg.coding.net"
              sh "docker images"
              sh "docker push anywhere-docker.pkg.coding.net/helloworld/helloworld/test:latest"
            }
          } catch(err) {
            echo err.getMessage()
          }
        }
      }
    }
  }
}
  1. 对该构建任务进行凭据授权。

  1. 触发持续集成构建任务,可以看到任务运行成功。

同时镜像也正常推入到制品库中。

常见问题

  • 创建凭据会不会生成新的账号密码?

凭据管理仅是为了管理用户的私密信息,并不会在凭据管理中生成一对账号密码给用户使用。在凭据管理中,用户需要自己添加有效的凭据信息。

  • 将凭据 ID 直接写入到配置文件当中有没有安全隐患?

凭据 ID 属于可以公开信息,普通用户拿到了凭据 ID ,也无法简单通过凭据 ID 兑换到真正的凭证信息,只有在 CODING 持续集成等产品的运行环境中, 才可以通过 withCredentials 等命令获取到对应的凭据。

  • 使用凭据 ID 与 使用 CODING 持续集成中的「保密的环境变量」有什么区别?

两者都具有保密的特性,不同的是:凭据 ID 可以统一管理,您可以在多个持续集成任务中使用同一个凭据 ID;修改凭据内容时,也只需要在凭据管理中一处修改即可,不需要修改多处。

上一篇项目令牌
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?

工单咨询