上传 Generic 类型制品

功能介绍

在 CODING 持续集成任务构建过程当中,您可以选择将构建物上传至 CODING 制品库。为了方便该场景的用户,我们提供了 Generic 制品上传插件,来让您更方便地在持续集成当中上传 Generic 类型构建物到 CODING 制品仓库当中,目前单文件大小最高支持 5GB。

在使用该功能之前,请确保您对 Generic 类型制品库有初步了解,您可以点击阅读 在 CODING 中使用 Generic 制品库了解更多。

Jenkinsfile 配置

pipeline {
  agent any
  environment {
    ENTERPRISE = '<团队域名前缀>'
    PROJECT = '<项目名>'
    ARTIFACT_REPO = '<仓库名>'
    PKG_PATH = '<文件路径>' //相对于 /root/workspace
    VERSION = '<制品版本>'
    ARTIFACTS_CLI = 'artifacts-docker.pkg.coding.net/artifacts/artifacts/artifacts-cli:0.1.0'
  }
  stages {
    stage('检出') {
      steps {
        checkout(
            [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
            userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage(' 上传到 generic 仓库') {
      steps {
        script {
          // 使用 CODING 持续集成内置的凭证作为 Generic 类型的上传
          // 您也可以使用自己创建的项目令牌,写入到 USERNAME 和 PASSWORD 中
          withCredentials([
            usernamePassword(
              credentialsId: env.DOCKER_REGISTRY_CREDENTIALS_ID,
              usernameVariable: 'USERNAME',
              passwordVariable: 'PASSWORD'
            )]) {

              // 使用 fallcate 命令创建 1GB 大小的文件 (持续集成默认的工作目录为 /root/workspace)
              sh 'fallocate -l 1g ./1g-large'

              sh '''
                  docker run --rm \
                  -v /root/workspace:/data \
                  ${ARTIFACTS_CLI} \
                  coding-artifacts \
                  -u ${USERNAME}:${PASSWORD} \
                  -t ${ENTERPRISE} \
                  --project ${PROJECT} \
                  --repo ${ARTIFACT_REPO} \
                  generic push ${PKG_PATH} \
                  -v ${VERSION}
              '''
            }
          }
        }
      }
    }
  }

带入参数示例如下:

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('上传到 generic 仓库') {
      steps {
        script {
          withCredentials([
            usernamePassword(
              credentialsId: env.DOCKER_REGISTRY_CREDENTIALS_ID,  usernameVariable: 'pt34ipqa5593',
              passwordVariable: '03578a94ff14a6c252d3018470414c6c56e5282f')]) {

                // 使用 fallcate 命令创建 1GB 大小的文件 (持续集成默认的工作目录为 /root/workspace)
                sh 'fallocate -l 1g ./1g-large'

                sh '''
                    docker run --rm \
                    -v /root/workspace:/data \
                    ${ARTIFACTS_CLI} \
                    coding-artifacts \
                    -u 'pt34ipqa5593':'03578a94ff14a6c252d3018470414c6c56e5282f' \
                    -t ${ENTERPRISE} \
                    --project ${PROJECT} \
                    --repo ${ARTIFACT_REPO} \
                    generic push ${PKG_PATH} \
                    -v ${VERSION}
                    '''
              }
            }

          }
        }
      }
      environment {
        ENTERPRISE = 'anywhere'
        PROJECT = 'helloworld'
        ARTIFACT_REPO = 'my-repo'
        PKG_PATH = '.'
        VERSION = '1.0.0'
        ARTIFACTS_CLI = 'artifacts-docker.pkg.coding.net/artifacts/artifacts/artifacts-cli:0.1.0'
      }
    }

配置运行成功后,可以在 my-repo 制品库当中看到上传的制品:

插件说明

artifacts-docker.pkg.coding.net/artifacts/artifacts/artifacts-cli:0.1.0 就是 CODING 提供用来上传 Generic 制品的镜像插件。在命令执行过程当中,您想要上传的文件会以 volume 形式 mount 到 Docker 容器的 /data 的目录下。

1、当持续集成中的 /root/workspace 目录有如下内容:

/root/workspace
├── dir1
│   └── file1
├── file2
└── file3

2、执行如下命令:

docker run -rm 
-v /root/workspace:/data
artifacts-docker.pkg.coding.net/artifacts/artifacts/artifacts-cli:0.1.0
-u my-account:my-password
-t my-team
--project my-project
--repo my-repo
generic push .
-v 1.0.0

3、将会把 /data 容器下所有文件上传到 my-repo 制品库中,并发布为独立的 3 个制品。

  • dir1/file1:1.0.0
  • file2:1.0.0
  • file3:1.0.0

注意:Generic 类型制品库不支持上传空文件,在使用上传插件时也请勿上传空文件。

上一篇图形化编辑器可用步骤说明
文档是否对您有用?
感谢反馈有用
感谢反馈没用