
# 配置代码下载
配置构建时从代码仓拉取代码的下载方式。
- [图形化构建]
  可选择使用指定代码仓库Tag或CommitID构建，同时可选择开启子模块（submodules）自动更新与Git LFS。
  预置"代码下载配置"步骤，参考[表1]配置参数。
   表1代码下载配置参数说明 
  | **参数**              | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  |:---|:---|
  | 代码下载方式              | 配置构建下载代码的方式。 - 分支：按照代码仓分支进行拉取。  - Tag：仅拉取指定Tag的代码进行构建。执行构建任务时需在弹框中选择Tag。 Tag是指代码仓库中的标签。如果代码源选择的是Repo，关于如何创建Tag可参见[标签管理](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0037.html)。如果代码源使用的是第三方代码仓，需在第三方代码仓中创建标签。   - CommitID：仅拉取指定CommitID的代码进行构建。执行构建任务时需在弹框中输入CommitID。 CommitID是指提交代码时生成的编号。以Repo代码仓为例，CommitID在代码仓库中显示如[图1]。 图1CommitID ![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002368851041.png)    |
  | 克隆深度                | 可选参数。 克隆深度是指距离最近一次提交的提交次数，该值越大，检出代码的深度越深。深度为正整数，推荐最大深度为25。 例如：克隆深度5就表示只克隆最新5次提交记录以及提交之后的最新内容，不克隆历史提交。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | 子模块（submodules）自动更新 | 子模块（submodule）是Git为管理仓库共用而衍生出的一个工具，通过子模块用户可以将公共仓库作为子目录包含到用户的仓库中，并能够双向同步该公共仓库的代码，借助子模块用户能将公共仓库隔离、复用，能随时拉取最新代码以及对它提交修复，能大大提高团队效率。更多详情请参考[配置代码仓库的子模块设置](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0051.html)。 - 开启：当代码仓库存在子模块时，系统在构建时会自动拉取子模块仓库的代码。  - 不开启：系统不会自动拉取子模块仓库的代码。                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 开启Git LFS           | 根据需要选择是否开启"Git LFS"，构建默认不拉取音视频、图像等大型文件，开启"Git LFS"后，构建将会全量拉取文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     
- [代码化构建（单仓下载）]
  
  参考以下代码示例，修改在[创建代码化构建使用的YAML文件](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0058.html#codeci_ug_0058__section72391847131511)中的PRE_BUILD部分代码信息。
  ```
  version: 2.0 # 必须是2.0
  steps:
    PRE_BUILD:
      - checkout:
          name: checkout
          inputs:
            scm: codehub # 代码来源:仅支持Repo
            url: xxxxxxxxx # 拉取代码的ssh地址。
            branch: ${codeBranch} # 必填，但在实际执行时，以页面上选择的分支为准
            commit: ${commitId}
            lfs: true
            submodule: true
            depth: 100
            tag: ${tag}
            path: test
  ```
  表2单仓下载代码示例参数说明 
  | **参数**    | **类型** | **说明**                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|
  | scm       | string | 填写代码源：当前只支持Repo，如果yaml文件中没配置，则使用构建任务配置的代码仓信息。 默认值：codehub。                                                                                                                                                                                                             |
  | url       | string | 填写拉取代码的代码仓ssh地址。                                                                                                                                                                                                                                                                                         |
  | branch    | string | 拉取的代码分支。 必填，但在实际执行时，以页面上选择的分支为准。 ![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002463925064.png)                                                                                                                  |
  | commit    | string | 可选参数。指定commitId构建时，填写拉取的commitId。 支持参数化，可使用${commitId}调用。                                                                                                                                                                                                               |
  | tag       | string | 可选参数。指定tag构建时，填写拉取的tag。 支持参数化，可使用${tag}调用。如果同时指定commitId和tag，优先执行commitId构建。                                                                                                                                                                                              |
  | depth     | int    | 可选参数。浅克隆深度：当选择commitId构建时，depth必须大于等于commitId所在深度。 默认值：1。                                                                                                                                                                                                               |
  | submodule | bool   | 可选参数。配置是否拉取子模块。 - true：拉取。  - false：不拉取。   默认值：false。                                                       |
  | lfs       | bool   | 可选参数。配置是否开启git lfs。 - true：开启。  - false：不开启。   构建默认不拉取音视频、图像等大型文件，开启git lfs后，构建将会全量拉取文件。默认值：false。 |
  | path      | string | 可选参数。clone的子路径：代码将会下载到子目录下。                                                                                                                                                                                                                                                                              |
     
