本示例基于开源的 KubeSphere 容器平台 演示如何通过 GitHub 仓库中的 Jenkinsfile 来创建流水线,流水线共包括 8 个阶段,最终将一个 Hello World 页面部署到 Kubernetes 集群中的不同 namespace。

流水线概览

下面的流程图简单说明了流水线完整的工作过程:

流程说明:

  • 阶段一. Checkout SCM: 拉取 GitHub 仓库代码
  • 阶段二. Unit test: 单元测试,如果测试通过了才继续下面的任务
  • 阶段三. sonarQube analysis:sonarQube 代码质量检测
  • 阶段四. Build & push snapshot image: 根据行为策略中所选择分支来构建镜像,并将 tag 为 SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER 推送至 Harbor (其中 $BUILD_NUMBER 为 pipeline 活动列表的运行序号)。
  • 阶段五. Push latest image: 将 master 分支打上 tag 为 latest,并推送至 DockerHub。
  • 阶段六. Deploy to dev: 将 master 分支部署到 Dev 环境,此阶段需要审核。
  • 阶段七. Push with tag: 生成 tag 并 release 到 GitHub,并推送到 DockerHub。
  • 阶段八. Deploy to production: 将发布的 tag 部署到 Production 环境。

创建凭证

使用 project-regular 登录 KubeSphere,进入已创建的 devops-demo 工程,开始创建凭证。

1、本示例代码仓库中的 Jenkinsfile 需要用到 DockerHub、GitHub 和 kubeconfig (kubeconfig 用于访问接入正在运行的 Kubernetes 集群) 等一共 3 个凭证 (credentials) 。
2、然后创建一个 Java 的 Token 并复制。

3、最后在 KubeSphere 中进入 devops-demo 的 DevOps 工程中,与上面步骤类似,在 凭证 下点击 创建,创建一个类型为 秘密文本 的凭证,凭证 ID 命名为 sonar-token,密钥为上一步复制的 token 信息,完成后点击 确定

至此,4 个凭证已经创建完成,下一步需要在示例仓库中的 jenkinsfile 修改对应的四个凭证 ID 为用户自己创建的凭证 ID。

修改 Jenkinsfile

第一步:Fork项目

登录 GitHub,将本示例用到的 GitHub 仓库 devops-java-sample Fork 至您个人的 GitHub。

第二步:修改 Jenkinsfile

1、Fork 至您个人的 GitHub 后,在 根目录 进入 Jenkinsfile-online

jenkins-online

2、在 GitHub UI 点击编辑图标,需要修改如下环境变量 (environment) 的值。

image-20190409121802459

修改项 含义
DOCKER_CREDENTIAL_ID dockerhub-id 填写创建凭证步骤中的 DockerHub 凭证 ID,用于登录您的 DockerHub
GITHUB_CREDENTIAL_ID github-id 填写创建凭证步骤中的 GitHub 凭证 ID,用于推送 tag 到 GitHub 仓库
KUBECONFIG_CREDENTIAL_ID demo-kubeconfig kubeconfig 凭证 ID,用于访问接入正在运行的 Kubernetes 集群
REGISTRY docker.io 默认为 docker.io 域名,用于镜像的推送
DOCKERHUB_NAMESPACE your-dockerhub-account 替换为您的 DockerHub 账号名 
(它也可以是账户下的 Organization 名称)
GITHUB_ACCOUNT