本文主要演示如何在阿里云Serverless Kubernetes服务(ASK)上快速搭建Jenkins持续集成环境,并基于提供的应用示例快速完成应用源码编译、镜像构建和推送以及应用部署的流水线。

前提条件

部署Jenkins

  1. 执行以下命令下载部署文件。
    git clone https://github.com/AliyunContainerService/jenkins-on-serverless.git
    cd jenkins-on-serverless
  2. 完成jenkins_home持久化配置。
    Serverless Kubernetes目前不支持云盘,如需持久化jenkins_home,您可以挂载nfs volume,修改serverless-k8s-jenkins-deploy.yaml文件,取消以下字段注释并配置您的NFS信息:
    #volumeMounts:
            #  - mountPath: /var/jenkins_home
            #    name: jenkins-home
          .....
          #volumes:
          #  - name: jenkins-home
          #    nfs:
          #      path: /
          #      server:
  3. 执行以下命令部署Jenkins。
    kubectl apply -f serverless-k8s-jenkins-deploy.yaml
  4. 登录Jenkins。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 在集群管理页左侧导航栏中,选择网络 > 服务
    5. 单击Jenkins服务的外部端点登录Jenkins。
      外部端点
    6. 在Jenkins登录页面,输入用户名和密码。默认用户名和密码均为admin
      注意 为了保证Jenkins系统安全,请登录后修改密码。
  5. 配置Jenkins的新手入门
    1. 新手入门配置页面,单击安装推荐的插件
    2. 插件安装完成后,在新手入门实例配置页面,单击保存并完成
    3. 实例配置保存完成后,单击开始使用Jenkins
  6. 获取Token的Secret。
    1. 执行以下命令查看Token。
      kubectl get secret

      预期输出:

      NAME                         TYPE                                  DATA   AGE
      ack-jenkins-sa-token-q****   kubernetes.io/service-account-token   3      28m
      default-token-b****          kubernetes.io/service-account-token   3      27h
    2. 执行以下命令获取ack-jenkins-sa-token-q****的Secret。
      kubectl get secret ack-jenkins-sa-token-q**** -o jsonpath={.data.token} |base64 -d

      预期输出:

      sdgdrh****
  7. 创建Secret Text类型凭证。
    1. 在Jenkins系统左侧导航栏,选择系统管理
    2. 管理Jenkins页面,系统配置下单击节点管理
    3. 节点列表页面左侧导航栏,选择Configure Clouds
    4. 配置集群页面,单击Kubernetes Cloud details...
    5. 凭据字段,选择添加 > Jenkins
    6. Jenkins 凭据提供者: Jenkins对话框,添加Secret Text类型的凭证。
      凭证的参数说明如下所示:
      参数 说明
      Domain 表示凭据的域。默认为全局凭据(unrestricted)
      类型 表示凭据的类型。本示例选择Secret Text
      范围 表示凭据的范围,可选择全局或系统。本示例选择全局(Jenkins,nodes,items,all child items,etc)
      Secret 表示凭据的Secret。本示例输入上个步骤获取的Secret。
      ID 表示凭据的名称。本示例为ask-jenkins-token
      描述 表示凭据的补充说明。
    7. 单击添加
  8. 配置集群页面配置相关参数。更多信息,请参见Kubernetes Cloud的配置说明
    1. 配置Kubernetes地址凭据选择为ask-jenkins-token,单击连接测试验证连接是否正常。
    2. 配置Jenkins地址Jenkins通道
    3. 单击Save
  9. 构建demo-pipeline并访问应用服务。
    1. 在Jenkins首页,单击demo-pipeline构建图标。
      demo-pipeline
    2. 根据您的镜像仓库信息修改构建参数。本示例中源码仓库分支为master,镜像为registry.cn-beijing.aliyuncs.com/ack-cicd/ack-jenkins-demo:latest
      构建参数
    3. 单击开始构建
      测试Kubernetes集群动态分配的Jenkins Slave Pod与Jenkins Master是否连接正常。

      执行构建后,Jenkins从Kubernetes集群动态创建一个Slave Pod运行本次构建任务。关于示例应用代码,请参见jenkins-demo-GitHubjenkins-demo-haoshuwei

    4. 查看状态,若构建成功则表示Jenkins on Kubernetes运行正常。
      Build History

后续步骤