GitLab 外部协作者
文档用途
介绍 Gitlab 外部协作者相关的使用场景和常用操作.
简介
使用场景
通过恰当的访问权限设置, 使得外部协作者能随时 查看项目进展 或参与其中,
同时 避免 由于操作不当或账户被盗等原因引起的 危险事件 (例如源代码泄露).
场景举例
- 与外部团队协作开发.
- 让公司股东随时了解各项目进展.
- 若是对外销售的技术方案, 可用作客户反馈.
协作方式
需求 Issue
详见 Issues 工作流 文档, 这里再做些补充.
在 GitLab 主页, 可以看到每个仓库处于 open 状态的 issue 数量,
点击下图中红圈内的 UI, 即可跳转该仓库的 issue 列表 页面.

使用快捷键 Shift+P 可以从任何页面跳转至 GitLab 主页.
效果等同于点击左上角的 GitLab 图标.
进度 Milestone
在 Issues 工作流 文档中也有介绍, 这里补充一些常用操作.
在 GitLab 主页, 点击左侧导航栏的 Milestones, 就能看到所有参与项目的 Milestone.
推荐使用快捷键 Shift+L, 可以从任意页面跳转至 Milestone 列表 页面.

注意看清各 Milestone 所属的项目 (毕竟若以版本命名则容易混淆).

文档 Wiki
与具体代码仓库关联的文档可以使用 GitLab Wiki 托管.
在具体的代码仓库中, 点击左侧导航栏中的 Plan / Wiki 可以打开 Wiki 页面.
更推荐使用快捷键 g w (使用此快捷键时, 请确保已处于某个代码仓库).

如果文档数量较多, 右侧目录就无法完整显示文档索引.
建议点击右下方 View All Pages 按钮查看完整的 Wiki 目录.
另外也可以考虑点击右上方的 Clone repository 来将所有文档下载至本地.
INFO
若协作者没有权限贡献代码, 那么进入代码仓库后默认的页面就是 Wiki 的 Home.md.
代码仓库根目录的 README.md 不会被展示. 因此建议给每个代码仓库都至少添加 Wiki 主页.
另外也可以在仓库设置中关闭 Wiki 功能, 使得默认页面为 Issues.
动态 Activity
在 GitLab 主页, 点击左侧导航栏的 Activity 即可看到动态 (快捷键 Shift+A).
另外在具体的代码仓库中, 也可以查看此仓库的动态 (快捷键 g v).

通常希望看到所参与项目的动态, 此时选择下图中的 Your projects.

常见问题
管理通知
GitLab 会将各类动态以通知发送到相关用户 (包括站通知和邮件通知).
如果觉得通知太多和或者太少, 可以修改通知设置.
点击头像, 选择 Preferences. 左侧导航栏, 点击 Notifications.


默认的值为 Participate, 只有在所参与的 Issue 有新的动态时, 才会收到通知.
如果希望收到来自所有 Issue 的通知, 可以修改为 Watch (通知会非常频繁).
如果完全不想被通知打扰, 可以选择 On Mention 或 Disable.

管理员操作
INFO
这部分是 GitLab 管理员才需要了解的内容.
新建账户
需要管理员权限, 打开 Admin Area / Overview / Users 页面.

创建新用户时, 记得勾选 External, 方面后续的精细授权.

仓库成员
打开具体代码仓库的 Manage / Members 页面.

点击右上角的 Invite members 或 Invite a group.
如果仅涉及到 单个 外部协作者, 使用 Invite members 最方便.
如果涉及到 多个有着相同权限 的外部协作者, 建议使用 Invite a group, 便于统一授权.

INFO
通过 Shift+G 快捷键打开 group 列表页面, 可以创建新的 group.
为代码仓库邀请成员时, 有不同角色可选, 详见 Permissions and roles.
如果协作者不需要贡献代码, 选择 Guest 角色即可.
CI/CD 可见性
默认情况下, 每个工程 CI/CD Pipeline 是对所有成员可见的, 这包括其中 Artifacts.
这可能会有敏感文件泄露的风险, 例如容器镜像, 更平台安装包等等.
此时我们可以在每个代码仓库中做单独的设置, 使得 CI/CD Pipeline 不可见:
在代码仓库的 Settings / CI/CD 页面中, 找到 Public pipelines 并取消勾选.

除了上述 Public pipelines 设置外, 从 GitLab 16.10 起 , 还可以用更精细的方式实现.
在具体的 CI/CD Job 的 artifacts:access 字段中做配置, 以控制其访问权限, 详见 此文档.
trivy:
script:
- touch nice.txt
artifacts:
# 仅允许 Developer 或更高权限的角色访问
access: developer
paths:
- nice.txt