
# 在Jenkins界面中构建并执行Pipeline
#### 构建Pipeline
在Jenkins界面中构建一个Pipeline。该Pipeline的内容是从代码仓中拉取代码，将代码打包成镜像，并推送到SWR镜像仓库中。
1. 在当前界面左上方路径中单击"Dashboard"，进入在Jenkins Dashboard界面，在右侧导航栏中单击"New Item"。
2. 输入任务名称test-pipe，并选择创建Pipeline。 
   图1创建Pipeline   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002107845569.png "点击放大")
   
   
3. 仅配置Pipeline脚本，其他保持默认。 
   图2配置Pipeline脚本   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002070962608.png "点击放大")
   以下Pipeline脚本仅供您参考，您可根据自身业务自定义脚本内容，更多语法信息请参见[Pipeline](https://www.jenkins.io/doc/book/pipeline/)。
   ```
   def swr_region = "cn-east-3"
   def organization = "container"
   def git_repo = "http://github.com/xxx.git"
   def app_git_branch = "master"
   podTemplate(
   inheritFrom: 'jenkins-agent',    // 请替换为5中创建的Pod Template名称
   cloud: 'ap-test'    // 请替换为4中创建的Cloud名称
   ) {
      // 拉取代码仓中的代码
      node(POD_LABEL) {
         stage('拉取代码') {
               echo "pull clone"
               git branch: "${app_git_branch}",  url: "${git_repo}"
          }
      // 利用maven容器将代码仓中拉取的代码打包（该打包方式仅适合Java，其他语言请更换打包方式）
      container('maven'){
         stage('代码打包') {
               echo "build package"
               sh "mvn clean package  -DskipTests"
          }
       }
      // 利用kaniko容器将打包后的代码推送至SWR中，并将镜像命名为tomcat
      container('kaniko'){
         stage('镜像推送') {
               echo "build images and push  images"
               sh "/kaniko/executor -f Dockerfile -c . -d swr.${swr_region}.myhuaweicloud.com/${organization}/tomcat:${BUILD_ID} --force"
          }
       }      
   }
   }
   ```
   表1Pipeline脚本参数说明 
   | **参数**         | **示例**                         | **说明**                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|:---|
   | swr_region     | **cn-east-3**                  | 表示SWR镜像仓库的区域，请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint)。 说明： 该SWR镜像仓库用于存放代码打包的镜像，区域需要与[3](https://support.huaweicloud.com/bestpractice-cce-autopilot/cce_bestpractice_1006.html#cce_bestpractice_1006__li66201114103814)中的区域一致。 |
   | organization   | **container**                  | 表示SWR中的组织名称，该组织名称可以根据实际需求进行选择。                                                                                                                                                                                                                                                                                              |
   | git_repo       | **https://github.com/xxx.git** | 表示代码存放的具体地址，即代码库地址。                                                                                                                                                                                                                                                                                                         |
   | app-git-branch | **master**                     | 表示代码库的分支。                                                                                                                                                                                                                                                                                                                   |
      
   
   
4. 脚本配置无误后，单击"Save"。
 
#### 执行Pipeline并查看运行结果
执行Pipeline后，集群自动创建名为"pipe-xxx"的Pod实例，该Pod会根据"Pod Template"中的信息创建3个容器，分别是jnlp、kaniko和maven。该Pod会依次完成从代码仓拉取代码、将代码打包成镜像和将镜像推送到SWR镜像仓库的操作，完成后自动删除。
1. 在左侧导航栏中单击"Build Now"，开始执行Pipeline任务。
2. 返回[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击对应集群名称。在左侧导航栏中单击"工作负载"，选择"容器组"页签，可以看到Pipeline创建的Pod实例。
   
   图3新建的Pod实例   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002072343918.png "点击放大")
   
   
3. 在新创建的Pod实例右侧单击"更多"，单击"容器列表"，可以看到按照"Pod Template"中的信息创建三个容器，即jnlp、kaniko和maven。 
   图4新建容器   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002071300054.png "点击放大")
   
   
   
4. 完成从代码仓拉取代码、将代码打包成镜像和将镜像推送到SWR镜像仓库的任务后，该Pod会自动删除，如[图5]所示。
   
   图5Pod自动删除   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002072379004.png "点击放大")
   
   
   
5. 进入[SWR控制台](https://console.huaweicloud.com/swr/)，检查SWR镜像仓库是否有新推送的镜像tomcat。
   
   图6推送的镜像   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002106941189.png "点击放大")
   
   
   
 
#### 后续操作：释放资源
如果您无需继续使用集群和ECS，请及时释放资源，避免产生额外的费用。
1. 进入[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，在左侧导航栏中选择"集群管理"。
2. 找到需要删除的集群，单击集群卡片右上角的![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002099995468.png)，并单击"删除集群"。
3. 在弹出的"删除集群"窗口中，根据页面提示删除相关资源。 
   在确认框中输入"DELETE"，单击"是"，开始执行删除集群操作。
   删除集群需要花费1-3分钟，请耐心等候。集群列表中对应集群名称消失，则说明删除集群成功。
   
   
4. 进入[云服务器控制台](https://console.huaweicloud.com/ecm/)，左侧导航栏单击"弹性云服务器"，找到对应的ECS，右侧单击"更多"，单击"删除"。
   
   在删除界面中勾选"删除云服务器绑定的弹性公网IP地址"和"删除云服务器挂载的数据盘"，单击"下一步"。
   图7删除ECS   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002146370497.png "点击放大")
   
   在确认框中输入"DELETE"，单击"确定"，开始执行删除ECS操作。
   删除ECS需要花费0.5-1分钟，请耐心等候。ECS列表中对应ECS名称消失，则说明删除ECS成功。
   图8删除ECS确认   
   ![](https://support.huaweicloud.com/bestpractice-cce-autopilot/zh-cn_image_0000002146371873.png "点击放大")
   
   
   
 
