
# 通过流水线自动为代码仓库创建标签
#### 方案概述
[流水线上下文](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0005.html)存储了流水线运行的实例、变量、任务等信息，每个上下文都是一个包含各种属性的对象。使用流水线时，当一个任务生成了数据或结果，且这些数据或结果需要在后续任务中使用时，可以基于流水线上下文来实现，流水线上下文可以帮助实现任务间的信息传递和协作，使得整个流水线运作更加灵活和高效。
本文以通过流水线自动为代码仓库创建标签为例，介绍流水线上下文在流水线任务间的传递过程。
 #### 准备工作
- 已[开通并授权使用CodeArts Pipeline](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0033.html)。
- [新建项目](https://support.huaweicloud.com/usermanual-devcloud/codearts_01_0027.html)（选择"Scrum"模板，命名为"Project_Test"）。
- [新建代码仓库](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0077.html)（选择"Java Maven Demo"模板，命名为"Repo_Test"），并创建release-1.0.0分支。
 
#### 操作步骤
1. [登录华为云控制台页面](https://console.huaweicloud.com/console)。
2. 单击页面左上角![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002056425173.png)，在服务列表中选择"开发与运维 \> 流水线 CodeArts Pipeline"。
3. 单击"立即使用"，进入流水线服务首页。
4. 单击"新建流水线"，进入"基本信息"页面，参考[表1]配置流水线基本信息。
   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002321040489.png "点击放大")
    表1流水线基本信息 
   | 配置项  | 配置建议                                                                                     |
   |:---|:---|
   | 名称   | 流水线名称，支持中文、大小写英文字母、数字、"-"、"_"，长度不超过128个字符，输入"Pipeline-Test"。                             |
   | 所属项目 | 流水线所在的项目，选择[准备工作]中已创建的项目"Project_Test"。   |
   | 流水线源 | 流水线关联的源类型，选择"Repo"。                                                                      |
   | 代码仓  | 流水线关联的代码仓库，选择[准备工作]中已创建的代码仓"Repo_Test"。   |
   | 默认分支 | 仓库默认使用的分支，选择[准备工作]中已创建的分支"release-1.0.0"。 |
      
   
   
5. 配置完基本信息，单击"下一步"，进入"选择模板"页面，选择"空模板"，单击"确定"。
6. 进入"任务编排"页面，系统默认生成两个阶段（"流水线源"和"阶段_1"），单击"新建阶段"新增一个阶段"阶段_2"。
7. 单击"阶段_1"的"新建任务"，选择"从空模板新建"，弹出"新建任务"侧滑框，在搜索框搜索"执行shell"插件，将鼠标移动到插件卡片，单击"添加"，填写插件名称（保持默认），输入如下Shell命令，生成标签名称。 
   ```
   branch='${{ sources.Repo_Test.target_branch }}'    //获取到运行的分支名称
   echo $branch                                    //打印分支名称
   tag=${branch/release-/v}                        //将分支名称自定义为新的参数（本示例：release-1.0.0自定义处理为v1.0.0）
   echo $tag                                       //打印标签名称
   echo ::set-output var=tag_name:$tag             //生成了tag_name输出，并设置到上下文中，供后续任务使用
   ```
   图1生成标签名称   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002430104161.png "点击放大")
   
   
8. 单击"阶段_2"的"新建任务"，选择"从空模板新建"，弹出"新建任务"侧滑框，在搜索框搜索"创建仓库Tag"插件，将鼠标移动到插件卡片，单击"添加"，参考[表2]填写相关信息，创建代码仓库Tag。
   
    表2参数信息说明 
   | 参数项  | 说明                                                                             |
   |:---|:---|
   | 名称   | 插件名称，保持默认即可。                                                                   |
   | Tag名 | Tag名称，输入"${{jobs.JOB_tBeer.outputs.tag_name}}"，其中JOB_tBeer为"执行Shell"插件所在的任务ID。 |
   | 仓库   | 选择流水线关联的代码仓库。                                                                  |
      
   图2创建仓库Tag   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002516064531.png "点击放大")
   
   
9. 配置完成后，单击"保存并执行"，弹出"执行配置"弹窗，保持默认配置，单击"执行"。
10. 执行成功后，在左侧导航栏选择"代码 \> 代码托管"，进入代码托管服务。
11. 单击流水线关联的代码仓库名称，进入仓库详情页。
12. 单击"代码"页签下的"Tags"子页签，即可在标签列表查看到通过流水线创建的标签v1.0.0。 
    图3查看标签   
    ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002063191753.png "点击放大")
    
    
 
