工作区 (Beta)
- 在极狐GitLab 15.11中引入,使用了一个名为
remote_development_feature_flag
的功能标志。默认情况下禁用。- 在极狐GitLab 16.0 中为,JihuLab.com 和私有化部署版本启用。
- 在极狐GitLab 16.7中 GA。功能标志
remote_development_feature_flag
已删除。
工作区是极狐GitLab 中代码的虚拟沙箱环境。您可以使用极狐GitLab 为您的极狐GitLab 项目创建和管理隔离的开发环境。这些环境确保不同的项目不会相互干扰。每个工作区都包括自己的一组依赖项、库和工具,您可以自定义这些依赖项、库和工具以满足每个项目的特定需求。有关点击演示,请参阅GitLab教程。
工作区和项目
工作区的范围仅限于项目。当您创建工作区时,您必须:
- 将工作区分配给特定项目。
- 选择带有
.devfile.yaml
文件的项目。
工作区可以与极狐GitLab API 交互,访问级别由当前用户权限定义。即使用户权限稍后被撤销,正在运行的工作区仍然可以访问。
从项目中打开和管理工作区
- 引入于极狐GitLab 16.2。
要从文件或仓库文件列表打开工作区:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 在右上角,选择 编辑。
- 从下拉列表中的 您的工作区 下,选择工作区。
从下拉列表中,您还可以:
- 重新启动、暂停或终止现有工作区。
- 创建一个新的工作区。
删除与工作区关联的数据
当您删除与工作区关联的项目、代理、用户或令牌时:
- 工作区已从用户界面中删除。
- 在 Kubernetes 集群中,正在运行的工作区资源会成为孤立资源,不会自动删除。
要清理孤立资源,管理员必须手动删除 Kubernetes 中的工作区。
Devfile
devfile 是一个文件,它通过为极狐GitLab 项目指定必要的工具、语言、运行时和其他组件来定义开发环境。
工作区内置了对开发文件的支持。您可以在极狐GitLab 配置文件中为您的项目指定一个 devfile。devfile 用于根据定义的规范自动配置开发环境。
这样,无论您使用何种机器或平台,您都可以创建一致且可重现的开发环境。
相关 schema 属性
极狐GitLab 仅支持 devfile 2.2.0 中的 container
和 volume
组件。使用 container
组件将容器镜像定义为 devfile 工作区的执行环境。您可以指定基础镜像、依赖项和其他设置。
只有以下属性与 container
组件的极狐GitLab 实现相关:
属性 | 定义 |
---|---|
image
| 用于工作区的容器镜像的名称。 |
memoryRequest
| 容器可以使用的最小内存量。 |
memoryLimit
| 容器可以使用的最大内存量。 |
cpuRequest
| 容器可以使用的最小 CPU 数量。 |
cpuLimit
| 容器可以使用的最大 CPU 数量。 |
env
| 在容器中使用的环境变量。 |
endpoints
| 容器暴露的端口映射。 |
volumeMounts
| 要挂载在容器中的存储卷。 |
配置示例
以下是 devfile 配置示例:
schemaVersion: 2.2.0
components:
- name: tooling-container
attributes:
gl/inject-editor: true
container:
image: registry.gitlab.com/gitlab-org/remote-development/gitlab-remote-development-docs/debian-bullseye-ruby-3.2-node-18.12:rubygems-3.4-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36-gitlab-workspaces
env:
- name: KEY
value: VALUE
endpoints:
- name: http-3000
targetPort: 3000
有关更多信息,请参阅 devfile 文档。
该容器镜像仅用于演示目的。要使用您自己的容器镜像,请参阅任意用户 ID。
工作区容器要求
默认情况下,重新注入并启动GitLab VS Code fork 在devfile中定义了gl/inject-editor
属性的容器中。注入GitLab VS Code fork 的工作区容器必须满足以下系统要求:
- 系统架构:**AMD 64
- 系统库:
-
glibc
2.28及更高版本 -
glibcxx
3.4.25及更高版本
这些要求已经在Debian 10.13和Ubuntu 20.04上进行了测试。有关更多信息,请参阅VS Code 文档。
工作区加载项
- 在极狐GitLab 17.2中引入。
VS Code 的极狐GitLab 工作流扩展默认在 Python 中配置。使用此扩展,您可以查看问题、创建合并请求和管理CI/CD流水线。
当前,极狐GitLab 已经正式推出了基于 AI 大模型的 AI 编程与软件智能研发助手——驭码CodeRider。可以直接在主流 IDE 中下载驭码CodeRider 插件使用。
扩展市场
- 在极狐GitLab 16.9中作为 Beta 引入,使用名为
allow_extensions_marketplace_in_workspace
的功能标志。默认情况下禁用。- 功能标志
allow_extensions_marketplace_in_workspace
在极狐GitLab 17.6中删除。
你可以使用工作取得扩展插件市场,当然前提是启用了此功能。
扩展插件市场连接到 Open VSX Registry。
个人访问令牌
- 引入于极狐GitLab 16.4。
当您创建工作区时,您将获得具有 write_repository
权限的个人访问令牌。该令牌用于在启动工作区时初始克隆项目。
您在工作区中执行的任何 Git 操作都使用此令牌进行身份验证和授权。当您终止工作区时,令牌将被撤销。
集群中的 Pod 交互
工作区在 Kubernetes 集群中作为 Pod 运行。极狐GitLab 不对 Pod 相互交互的方式施加任何限制。
由于此要求,您可能希望将此功能与集群中的其他容器隔离开来。
网络访问和工作区授权
限制对 Kubernetes 控制平面的网络访问是客户端的责任,因为极狐GitLab 无法控制 API。
只有工作区创建者可以访问工作区和该工作区中公开的任何端点。工作区创建者仅在使用 OAuth 进行用户身份验证后才有权访问工作区。
计算资源和卷存储
停止工作区时,该工作区的计算资源将缩减为零。但是,为工作区调配的卷仍然存在。要删除预配的卷,必须终止工作区。
自动工作空间停止和终止
- 工作区将在上次启动或重新启动后36小时自动停止。有关详细信息,请参阅
max_active_hours_before_stop
的代理配置设置文档。 - 工作区将在最后一次停止后722小时自动终止。有关详细信息,请参阅
max_stopped_hours_before_termination
的代理配置设置文档。
任意用户 ID
您可以提供自己的容器镜像,它可以作为任何 Linux 用户 ID 运行。
极狐GitLab 无法预测容器镜像的 Linux 用户 ID。极狐GitLab 使用 Linux 根群组 ID 权限来创建、更新或删除容器中的文件。Kubernetes 集群使用的容器运行时必须确保所有容器的默认 Linux 群组 ID 为 0
。
如果您的容器镜像不支持任意用户 ID,则无法在工作区中创建、更新或删除文件。要创建支持任意用户 ID 的容器镜像,可查阅创建支持任意用户 ID 的自定义工作区镜像。