使用 GitLab 创建多分支流水线

GitLab 是一个提供公开和私有仓库的开源代码仓库平台。它也是一个完整的 DevOps 平台,专业人士能够使用 GitLab 在项目中执行任务。

在 KubeSphere v3.1 中,您可以使用 GitLab 在 DevOps 工程中创建多分支流水线。本教程介绍如何使用 GitLab 创建多分支流水线。

准备工作

动手实验

步骤 1:创建凭证

  1. 使用 project-regular 用户登录 KubeSphere 控制台。转到您的 DevOps 工程,在工程管理下的凭证中创建以下凭证。有关更多如何创建凭证的信息,请参见凭证管理

    备注

    如果您的帐户或密码中包含任何特殊字符,例如 @$,则可能会因为无法识别而在流水线运行时导致错误。在此情况下,您需要先在第三方网站(例如 urlencoder)上对帐户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。

    凭证 ID类型用途
    dockerhub-id帐户凭证Docker Hub
    gitlab-id帐户凭证GitLab
    demo-kubeconfigkubeconfigKubernetes
  2. 创建完成后,您可以在列表中看到创建的凭证。

    credential-created

步骤 2:在 GitLab 仓库中编辑 Jenkinsfile

  1. 登录 GitLab 并创建一个公开项目。点击导入项目,选择从 URL 导入仓库,然后输入 devops-java-sample 的 URL。可见性级别选择公开,然后点击新建项目

    click-import-project

    use-git-url

  2. 在刚刚创建的项目中,从 master 分支中创建一个新分支,命名为 gitlab-demo

    new-branch

  3. gitlab-demo 分支中,点击根目录中的 Jenkinsfile-online 文件。

    gitlab-demo

  4. 点击编辑,分别将 GITHUB_CREDENTIAL_IDGITHUB_ACCOUNT 以及 @github.com 更改为 GITLAB_CREDENTIAL_IDGITLAB_ACCOUNT 以及 @gitlab.com,然后编辑下表所列条目。您还需要将 push latestdeploy to devbranch 的值更改为 gitlab-demo

    条目描述信息
    GITLAB_CREDENTIAL_IDgitlab-id您在 KubeSphere 中为自己的 GitLab 帐户设置的凭证 ID,用于推送标签至您的 GitLab 仓库。
    DOCKERHUB_NAMESPACEfelixnoo请将其替换为您自己的 Docker Hub 帐户名称,也可以使用该帐户下的组织名称。
    GITLAB_ACCOUNTfelixnoo请将其替换为您自己的 GitLab 帐户名称,也可以使用该帐户的用户组名称。

    备注

    有关 Jenkinsfile 中环境变量的更多信息,请参考使用 Jenkinsfile 创建流水线

  5. 点击 Commit changes 更新该文件。

    commit-changes

步骤 3:创建项目

您需要创建两个项目,例如 kubesphere-sample-devkubesphere-sample-prod,这两个项目分别代表开发环境和测试环境。有关更多信息,请参考使用 Jenkinsfile 创建流水线

步骤 4:创建流水线

  1. 使用 project-regular 用户登录 KubeSphere Web 控制台。转到您的 DevOps 工程,点击创建来创建新流水线。

  2. 在出现的对话框中填写基本信息。将流水线的名称设置为 gitlab-multi-branch 并选择一个代码仓库。

    create-pipeline

  3. GitLab 选项卡下的 GitLab 服务中选择默认选项 https://gitlab.com,在项目所属组中输入该 GitLab 项目所属组的名称,然后从仓库名称的下拉菜单中选择 devops-java-sample 仓库。点击右下角的对号图标,然后点击下一步

    select-gitlab

    备注

    如需使用 GitLab 私有仓库,则须在 GitLab 上创建拥有 API 和 read_repository 权限的个人访问令牌,在 Jenkins 面板上创建访问 GitLab 的凭证,然后在系统配置下的 GitLab 服务中添加该凭证。有关如何登录 Jenkins 的更多信息,请参考 Jenkins 系统设置

  4. 高级设置选项卡中,下滑到脚本路径。将其更改为 Jenkinsfile-online 然后点击创建

    jenkinsfile-online

    备注

    该字段指定代码仓库中的 Jenkinsfile 路径,它表示该仓库的根目录。如果文件位置变更,则脚本路径也需要更改。

步骤 5:运行流水线

  1. 流水线创建后,会展示在列表中。点击流水线查看其详情页。

  2. 点击右侧的运行。在出现的对话框中,从下拉菜单中选择 gitlab-demo 并添加一个标签号,比如 v0.0.2。点击确定来触发一个新活动。

    click-run

    select-branch

    备注

    流水线在 deploy to dev 阶段暂停,您需要手动点击继续。请注意,在 Jenkinsfile 中分别定义了三个阶段 deploy to devpush with tagdeploy to production,因此将对流水线进行三次审核。

步骤 6:检查流水线状态

  1. 运行状态选项卡,您可以看到流水线的运行过程。点击右上角的查看日志来查看流水线运行日志。

    check-log

  2. 您可以看到流水线的动态日志输出,包括可能导致流水线无法运行的错误。对于每个阶段,您都可以点击该阶段来查看日志,而且可以将日志下载到本地计算机进行进一步分析。

    pipeline-logs

步骤 7:验证结果

  1. 如在 Jenkinsfile 中定义的那样,通过流水线构建的 Docker 镜像已成功推送到 Docker Hub。在 Docker Hub 中,您将看到在流水线运行前指定的带有标签 v0.0.2 的镜像。

    docker-image

  2. 同时,GitLab 中也已生成一个新标签。

    gitlab-result

  3. 示例应用程序将会被部署至 kubesphere-sample-devkubesphere-sample-prod 中,也会创建相应的部署和服务。

    环境URL命名空间部署服务
    开发环境http://{$NodeIP}:{$30861}kubesphere-sample-devks-sample-devks-sample-dev
    生产环境http://{$NodeIP}:{$30961}kubesphere-sample-prodks-sampleks-sample

    deployment

    service

    备注

    您可能需要在安全组中打开端口,以便使用 URL 访问该应用。有关更多信息,请参考访问示例服务