在Jenkins環(huán)境中集成了edas-jenkins-plugin插件,您可以使用該插件在Jenkins內(nèi)快速完成應用持續(xù)部署到EDAS。本文介紹了在Jenkins控制臺的白屏化部署過程,使用流水線的部署步驟以及使用Job-dsl的任務模板來快速生成部署任務的簡介。

前提條件

已安裝Job-dsl插件。

安裝edas-jenkins-plugin

  1. 下載edas-jenkins-plugin安裝包
  2. 登錄Jenkins首頁,單擊Manage Jenkins,在Manage Jenkins頁面單擊Manage Plugins
  3. Plugin Manager頁面選擇Advanced頁簽,在Upload Plugin區(qū)域單擊選擇文件,選擇下載的插件,然后單擊Upload
  4. Installing Plugins/Upgrades頁面等待插件安裝完成。

配置賬號信息

  1. 登錄Jenkins首頁,單擊Manage Jenkins,在Manage Jenkins頁面單擊Configure System
  2. Deploy into EDAS區(qū)域內(nèi)配置賬號信息,單擊Add,然后單擊Advanced輸入地域信息。
    Deploy into EDAS
    參數(shù) 描述
    EDAS credentials name 為AccessKey設置名稱。
    EDAS Access Key ID 輸入賬號的AccessKey信息,獲取方法,請參見創(chuàng)建AccessKey
    EDAS Access Key Secret 輸入賬號的AccessKey密鑰,獲取方法,請參見創(chuàng)建AccessKey
    EDAS Region 請輸入您想部署的應用的地域ID,例如cn-hangzhou。
    Endpoint(專有云) 在專有云中使用Jenkins前,需在該配置項中輸入EDAS的EndPoint,Endpoint請聯(lián)系EDAS技術支持獲取。
    說明 在公共云中使用Jenkins時,無需配置該參數(shù)。
  3. 配置完成后在Deploy into EDAS區(qū)域單擊Ping EDAS,當頁面顯示success即說明賬號信息配置完成。
    說明 您可以單擊Add設置多個EDAS賬號。

在Jenkins中創(chuàng)建Freestyle project任務來部署應用

  1. 登錄Jenkins首頁,單擊New Item
  2. Enter an item name區(qū)域輸入一個項目名稱,選擇Freestyle project然后單擊OK
  3. Post-build Actions區(qū)域單擊Add post-build actions,然后在下拉列表中單擊Deploy to EDAS
  4. Deploy to EDAS區(qū)域單擊Add,在下拉列表中可以選擇集群來部署。
    添加部署任務
    參數(shù) 描述
    EDAS ECS Application 已經(jīng)部署在ECS集群中的應用在Jenkins插件中升級部署,詳細配置參數(shù),請參見在ECS集群中部署應用
    Create EDAS ECS Application 使用Jenkins插件在ECS集群中創(chuàng)建應用并部署,詳細配置參數(shù),請參見在ECS集群中創(chuàng)建并部署應用
    EDAS K8s Application 已經(jīng)部署在容器服務K8s集群中的應用在Jenkins插件中升級部署,詳細配置參數(shù),請參見在容器服務K8s集群中部署應用
    Create EDAS K8s Application 使用Jenkins插件在容器服務K8s集群中創(chuàng)建應用并部署,詳細配置參數(shù),請參見在容器服務K8s集群中創(chuàng)建并部署應用
  5. 設置完成后在頁面左下角單擊SaveApply
  6. 在工程任務頁面的左側(cè)導航欄單擊Build Now來運行任務。
    運行構建任務
    您將會在Build History區(qū)域查看構建記錄,單擊構建記錄可以進入構建記錄的詳情頁面查看構建詳情。構建詳情

使用流水線插件部署應用到EDAS

edas-jenkins-plugin已經(jīng)支持流水線預發(fā)的片段生成器,在Jenkins中構建流水線部署應用到EDAS。

  1. 登錄Jenkins首頁,單擊New Item
  2. Enter an item name區(qū)域輸入項目名稱,選擇流水線然后單擊OK
  3. Pipeline區(qū)域單擊Pipeline Syntax
    說明 如果您已創(chuàng)建了流水線,可在項目列表單擊流水線名稱進入流水線管理頁面,然后在左側(cè)導航欄單擊流水線語法進入片段生成器頁面。
  4. 片段生成器頁面的Sample Step下拉框選擇edasClient: Deploy into EDAS,然后單擊Application Setup右側(cè)的Add,然后在下拉列表中選擇集群和應用部署類型。
    edasClient: Deploy to EDAS
  5. 配置部署參數(shù),具體配置信息,請參見在Jenkins中使用edas-jenkins-plugin部署應用的參數(shù)配置
  6. 完成參數(shù)配置后單擊Generate Pipeline Script,拷貝生成的流水線腳本。
    Generate Pipeline Script
  7. 在左側(cè)導航欄單擊Back返回流水線管理頁面,然后在左側(cè)導航欄單擊Configure,然后在Pipeline區(qū)域按照下圖示例輸入腳本內(nèi)容。
    說明 下圖橙色框內(nèi)的內(nèi)容需替換為上面步驟生成的腳本。
    pipeline
  8. 設置完成后在頁面左下角單擊SaveApply
  9. 在工程任務頁面的左側(cè)導航欄單擊Build Now來運行任務。
    您將會在Build History區(qū)域查看構建記錄,單擊構建記錄可以進入構建記錄的詳情頁面查看構建詳情。

使用Job-dsl插件來構建部署任務

在Jenkins中您可以使用Job-dsl插件來構建一個任務模板,使您可以快速根據(jù)模板來構建部署任務。

  1. 登錄Jenkins首頁,單擊New Item
  2. Enter an item name區(qū)域輸入項目名稱,選擇Freestyle project然后單擊OK
  3. Build區(qū)域單擊Add build step,然后在下拉列表中選擇Process Job DSLs
    說明 如果您已創(chuàng)建了流水線,可在項目列表單擊流水線名稱進入流水線管理頁面,然后在左側(cè)導航欄單擊流水線語法進入片段生成器頁面。
    Process Job DSLs
  4. Process Job DSLs區(qū)域單擊Use the provided DSL script,然后在腳本輸入框內(nèi)輸入您的配置腳本。
    job('edas') {    //目標任務的名稱
      publishers { //EDAS插件的類型
        edasClient { //EDAS插件調(diào)用名稱
          deployApplication('', '', '', '', '') //調(diào)用的EDAS方法
        }
      }
    }
    支持的方法示例如下:
    //在ECS集群中部署應用
    void deployApplication(
            String namespace,
            String credentialsString,
            String group,
            String appId,
            String targetObject);
    
    void deployApplication(
            String namespace,
            String credentialsString,
            String group,
            String appId,
            String targetObject,
            String versionLabelFormat,
            String versionDescriptionFormat,
            String batch,
            String batchWaitTime,
            String releaseType);
    
    //在ECS集群中創(chuàng)建并部署應用
    void insertApplication(
            String namespace,
            String credentialsString,
            String applicationName,
            String packageType,
            String clusterId,
            String targetObject,
            String ecuInfo);
    
    void insertApplication(
            String namespace,
            String credentialsString,
            String applicationName,
            String packageType,
            String clusterId,
            String targetObject,
            String ecuInfo,
            String versionLabelFormat,
            String versionDescriptionFormat,
            String buildPackId,
            String healthCheckUrl);
    
    //在容器服務K8s集群中部署應用
    void deployK8sApplication(
            String namespace,
            String credentialsString,
            String appId,
            String targetObject,
            Boolean image);
    
    void deployK8sApplication(
            String namespace,
            String credentialsString,
            String appId,
            String targetObject,
            Boolean image,
            String edasContainerVersion,
            String webContainer,
            String jdk,
            String versionLabelFormat,
            String envs,
            String startupCommand,
            String args,
            String cpuLimit,
            String memoryLimit,
            String cpuRequest,
            String memoryRequest,
            String replicas,
            String postStart,
            String preStop,
            String readiness,
            String liveness,
            String updateStrategy);
    
    //在容器服務K8s集群中創(chuàng)建并部署應用
    void insertK8sApplication(
            String namespace,
            String credentialsString,
            String applicationName,
            String packageType,
            String clusterId,
            String targetObject,
            String k8sNamespace,
            String jdk);
    
     void insertK8sApplication(
            String namespace,
            String credentialsString,
            String applicationName,
            String packageType,
            String clusterId,
            String targetObject,
            String k8sNamespace,
            String jdk,
            String descFormat,
            String edasContainerVersion,
            String webContainer,
            String versionLabelFormat,
            String envs,
            String startupCommand,
            String args,
            String cpuLimit,
            String memoryLimit,
            String cpuRequest,
            String memoryRequest,
            String replicas,
            String postStart,
            String preStop,
            String readiness,
            String liveness);
  5. 設置完成后在頁面左下角單擊SaveApply
  6. 在工程任務頁面的左側(cè)導航欄單擊Build Now來運行任務。
    您將會在Build History區(qū)域查看構建記錄,單擊構建記錄可以進入構建記錄的詳情頁面查看構建詳情。

更多信息

在Jenkins中使用edas-jenkins-plugin部署應用的參數(shù)配置