GitLab 是一款基于 web 的 Git 仓库管理工具,支持公开和私有仓库,并提供了全面的 DevOps 功能,包括源代码管理、代码审查、问题跟踪、持续集成等。通过 GitLab,团队能够在一个平台上高效协作,完成从代码编写到部署的整个软件开发过程。

KubeSphere 企业版支持在 DevOps 项目中使用 GitLab 创建多分支流水线。本文档演示如何使用 GitLab 创建多分支流水线。

前提条件

  • KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。

  • 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理

  • 已有一个 GitLab 账户以及一个 Docker Hub 账户。

步骤 1:创建凭证

  1. project-regular 用户登录 KubeSphere 企业版 Web 控制台。

  2. 点击企业空间管理并进入您的 DevOps 项目,在 DevOps 项目设置下的凭证中创建以下凭证。有关如何创建凭证的更多信息,请参阅凭证管理

    说明

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

    凭证 ID类型用途

    dockerhub-id

    用户名和密码

    Docker Hub

    gitlab-id

    用户名和密码

    GitLab

  3. 创建完成后,您将在凭证页面看到已创建的凭证。

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

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

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

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

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

    条目描述信息

    GITLAB_CREDENTIAL_ID

    gitlab-id

    您在 KubeSphere 企业版中为自己的 GitLab 账户设置的名称,用于将标签推送至您的 GitLab 仓库。

    DOCKERHUB_NAMESPACE

    your-dockerhub-id

    请替换为您的 Docker Hub 账户名,也可以替换为该账户下的 Organization 名称。

    GITLAB_ACCOUNT

    your-gitlab-id

    请替换为您的 GitLab 账户名,也可以使用该账户的用户组名称。

    说明

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

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

步骤 3:创建流水线

  1. project-regular 用户登录 KubeSphere 企业版 Web 控制台。

  2. 点击企业空间管理并进入您的 DevOps 项目,在流水线页面点击创建

  3. 在弹出的对话框中,将其命名为 gitlab-multi-branch

  4. 流水线类别下,选择多分支流水线

  5. 代码仓库下,选择一个代码仓库,点击下一步继续。

    若没有可用的代码仓库,点击下方的创建代码仓库。有关更多信息,请参阅导入代码仓库

    1. 导入代码仓库对话框,输入代码仓库名称(自定义),点击选择代码仓库。

    2. GitLab 页签下的 GitLab 服务器地址中选择默认选项 https://gitlab.com,在项目组/所有者中输入该 GitLab 项目所属组的名称,然后从代码仓库的下拉菜单中选择 devops-maven-sample 仓库。点击右下角的check,然后点击下一步

      说明

      如需使用 GitLab 私有仓库,请参考以下步骤:

      • 在 GitLab 上前往用户设置 > 访问令牌,创建拥有 API 和 read_repository 权限的个人访问令牌。

      • 登录 Jenkins 面板,前往系统管理 > Manage Credentials,使用您的 GitLab 令牌创建 Jenkins 凭证,用于访问 GitLab。然后前往系统管理 > 系统配置,在 GitLab 服务中添加该凭证。

      • 在 DevOps 项目中,选择 DevOps 项目设置 > 凭证,使用您的 GitLab 令牌创建一个凭证。创建流水线时,在 GitLab 页签的凭证中指定该凭证,以便流水线能够从您的 GitLab 私有仓库中拉取代码。

  6. 高级设置页签中,将脚本路径更改为 Jenkinsfile-online 然后点击创建

    说明

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

步骤 4:运行流水线

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

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

  3. 稍等片刻,点击运行记录查看详情。

  4. 流水线如果运行到 Push with Tag 阶段,会在此阶段暂停,需要具有审核权限的用户点击继续

步骤 5:检查流水线状态

  1. 在运行记录的流水线页签下,查看流水线的运行状态。

  2. 点击运行日志页签查看流水线运行日志。点击每个阶段查看其详细日志。点击查看完整日志,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。

步骤 6:验证结果

  1. 按照 Jenkinsfile 中的定义,通过流水线构建的 Docker 镜像也已成功推送到 Docker Hub。在 Docker Hub 中,您会看到带有标签 v0.0.2 的镜像,该标签在流水线运行之前已指定。

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