GitLab 是一款基于 web 的 Git 仓库管理工具,支持公开和私有仓库,并提供了全面的 DevOps 功能,包括源代码管理、代码审查、问题跟踪、持续集成等。通过 GitLab,团队能够在一个平台上高效协作,完成从代码编写到部署的整个软件开发过程。
KubeSphere 企业版支持在 DevOps 项目中使用 GitLab 创建多分支流水线。本文档演示如何使用 GitLab 创建多分支流水线。
前提条件
KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。
已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理。
已有一个 GitLab 账户以及一个 Docker Hub 账户。
步骤 1:创建凭证
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
点击企业空间管理并进入您的 DevOps 项目,在 DevOps 项目设置下的凭证中创建以下凭证。有关如何创建凭证的更多信息,请参阅凭证管理。
说明 如果您的账户或密码中包含任何特殊字符,例如 @ 和 $,则可能会因为无法识别而在流水线运行时导致错误。在此情况下,您需要先在第三方网站(例如 urlencoder)上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
凭证 ID 类型 用途 dockerhub-id
用户名和密码
Docker Hub
gitlab-id
用户名和密码
GitLab
创建完成后,您将在凭证页面看到已创建的凭证。
步骤 2:在 GitLab 仓库中编辑 Jenkinsfile
登录 GitLab 并创建一个公开项目。点击新建项目 > 导入项目,选择从 URL 导入仓库,输入 devops-maven-sample 的 URL,可见性级别选择公开,然后点击新建项目。
在刚刚创建的项目中,从 v4.1.0 分支中创建一个新分支,命名为 gitlab-demo。
在 gitlab-demo 分支中,点击根目录中的 Jenkinsfile-online 文件。
点击编辑,分别将 GITHUB_CREDENTIAL_ID、GITHUB_ACCOUNT 以及 @github.com 更改为 GITLAB_CREDENTIAL_ID、GITLAB_ACCOUNT 以及 @gitlab.com,然后编辑下表所列条目。还要将 push latest 中 branch 的值更改为 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 创建流水线。
点击 Commit changes 更新该文件。
步骤 3:创建流水线
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
点击企业空间管理并进入您的 DevOps 项目,在流水线页面点击创建。
在弹出的对话框中,将其命名为 gitlab-multi-branch。
在流水线类别下,选择多分支流水线。
在代码仓库下,选择一个代码仓库,点击下一步继续。
若没有可用的代码仓库,点击下方的创建代码仓库。有关更多信息,请参阅导入代码仓库。
在导入代码仓库对话框,输入代码仓库名称(自定义),点击选择代码仓库。
在 GitLab 页签下的 GitLab 服务器地址中选择默认选项 https://gitlab.com,在项目组/所有者中输入该 GitLab 项目所属组的名称,然后从代码仓库的下拉菜单中选择 devops-maven-sample 仓库。点击右下角的,然后点击下一步。
说明 如需使用 GitLab 私有仓库,请参考以下步骤:
在 GitLab 上前往用户设置 > 访问令牌,创建拥有 API 和 read_repository 权限的个人访问令牌。
登录 Jenkins 面板,前往系统管理 > Manage Credentials,使用您的 GitLab 令牌创建 Jenkins 凭证,用于访问 GitLab。然后前往系统管理 > 系统配置,在 GitLab 服务中添加该凭证。
在 DevOps 项目中,选择 DevOps 项目设置 > 凭证,使用您的 GitLab 令牌创建一个凭证。创建流水线时,在 GitLab 页签的凭证中指定该凭证,以便流水线能够从您的 GitLab 私有仓库中拉取代码。
在高级设置页签中,将脚本路径更改为 Jenkinsfile-online 然后点击创建。
说明 该字段指定代码仓库中的 Jenkinsfile 路径,它表示该仓库的根目录。如果文件位置变更,则脚本路径也需要更改。
步骤 4:运行流水线
流水线创建后,会展示在列表中。点击流水线名称查看其详情页。
点击右侧的运行。在弹出的对话框中,从下拉菜单中选择 gitlab-demo 并添加一个标签号,比如 v0.0.2。点击确定来触发一个新运行。
稍等片刻,点击运行记录查看详情。
流水线如果运行到 Push with Tag 阶段,会在此阶段暂停,需要具有审核权限的用户点击继续。
步骤 5:检查流水线状态
在运行记录的流水线页签下,查看流水线的运行状态。
点击运行日志页签查看流水线运行日志。点击每个阶段查看其详细日志。点击查看完整日志,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
步骤 6:验证结果
按照 Jenkinsfile 中的定义,通过流水线构建的 Docker 镜像也已成功推送到 Docker Hub。在 Docker Hub 中,您会看到带有标签 v0.0.2 的镜像,该标签在流水线运行之前已指定。
同时,GitLab 中也已生成一个新标签。