modified | Thursday 1 May 2025 |
---|
Monday, August 2, 2021 at 07:10
私 有 代 码 托 管 平 台 的 搭 建 与 运 维
zhonger
zhonger 前 端 开 发 者 , 喜 爱 运 维 管 理
前 言
版 本 控 制
当 我 们 谈 到 代 码 托 管 王 台 , i 谈 版 本 控 制 。 尘
3 或 若
样 可 以 轻 松 回 复 到 原 先 的 养 殖 , 而 且 额 外 增 加 的 工 作 量 却 龛 微 抚 其 微 。
其 实 除 了 代 码 之 外 , 任 何 文 件 都 可 以 加 入 版 本 控 制 。 比 如 像 最 新 的
office 365 中 , 如 笋 将 文 件 放 在 与 Onedrive 同 步 的 文 件 夹 中 , 那 么
Office 365 不 饲 会 时 不 时 为 你 自 动 保 存 文 件 , 而 且 会 把 每 一 次 的 保 存 都
记 录 下 来 , 同 时 在 你 关 闭 文 档 时 记 录 为 一 个 版 本 。
回 过 头 来 看 版 本 控 制 系 统 , 它 主 要 可 以 分 为 本 地 版 本 控 制 系 统 、 集
中 化 的 版 本 控 制 系 统 和 分 布 式 版 本 控 制 系 统 。
本 地 版 本 控 制 系 统
举 个 例 子 当 我 在 五 论 文 或 者 做 PPT 的 时 候 , . 我 习 惯 在 文 件 名 的
明 巳 in 一 穴 口 灵 月 白 |j 井 厅 八 “ 江 拷 HHfhu n 佐 _ 二 XZ 日 h& 皂 / 巾 圭 “/ 旱 旦
举 个 例 子 , 当 我 在 写 论 文 或 者 做 PPT 的 时 候 , 我 习 惯 在 文 件 名 的
尉 厌 标 去 窍 战 年 月 日 以 示 匹 分 。 这 样 做 的 唯 一 好 处 就 是 简 单 便 捷 , 但 是
于 刀 J 谷
决 这 种 问 题 , 很 久 以 前 就 有 许 多 中 本 地 版 本 控 制 系 统 被 开 发 出 来 , 其 中
大 多 数 都 是 札 用 标 种 简 单 的 数 据 库 来 记 记 录 文 件 的 历 次 更 新 差 异 。 其 中 最
流 行 的 二 种 叫 做 RCS, 现 今 许 多 计 算 机 系 统 上 还 看 得 到 它 的 踪 影 ,RCS
的 工 作 原 理 是 在 硬 盘 上 保 留 礼 丁 集 ( 补 丁 是 指 文 件 修 订 前 后 的 变 化 ) ;
通 过 应 用 所 有 的 补 了 , P 人 我 们 常 用
的 网 盘 的 增 量 同 步 就 是 采 用 了 这 种 方 式 , 网 盘 同 步 工 具 会 在 间 步 的 主 目
录 建 立 一 个 文 件 来 描 述 本 地 文 件 的 修 订 情 况 , 在 联 两 之 后 与 远 程 服 务 器
的 信 意 进 行 对 比 就 能 发 现 本 珊 文 件 与 远 程 文 华 是 否 一 敏 。 如 果 两 个 文 件
的 MCS 像 标 月 则 可以 语 朋 文 件 汀 约 操 作 , 知 果 不 同 则 根 据 时 间 截 采 判
断 哪 个 文 件 最 新 , 并 将 最 新 的 文 似 更 新 络
Local1 Computer
Checkout Versilon DatabasSe
Version 3
VWers 10h 2
Version 3
Versio0n 2
Version 1
集 中 化 的 版 本 控 制 系 统
以 上 的 本 地 版 本 控 制 系 统 也 有 一 定 的 局 限 性 , 比 如 无 法 让 不 同 系 统
上 的 开 发 者 协 同 工 作 。 于 是 就 有 了 集 中 化 的 版 本 接 制 系 统 tCVCS) 。
比 较 有 名 的 像 SUbvefsion (SVNJ : CVS 等 等 , 都 有 一 个 单 一 的 集 画
宣 户 端 连 描 刺 这 台 能 务 器 , 取 出 最 新 的 文 视 或 者 提 交 更 新 。 在 Git 没 有
裴 带 明 击 根 之 前 这 是 主 要 的 版 本 控 制 系 统 的 标 准 , 而 且 生 要 以 SVN
取 <
这 样 一 来 , 的 确 在 某 种 程 度 上 提 供 了 多 人 开 发 协 同 的 功 能 , 但 是 如
失 T 皇 无 雒 司 厂 人 央 有 一 印 刀 纠 堑 那 「 五 云
Centrat VC9 server
于 是 分 布 式 版 本 控 制 系 统 (DVCS) 应 运 而 生 , 其 中 比 较 知 名 的 有
Git、Mercurial、Bazaar 等 等 。 在 这 类 系 统 中 , 哈 户 端 并 不 史 提 取 最 新
于 是 分 布 式 版 本 控 制 系 统 (DVCS) 应 运 而 生 , 其 中 比 较 知 名 的 有
Git、Mercurial、Bazaar 等 等 。 在 这 类 系 统 中 , 客 户 端 并 不 只 提 取 最 新
录 、
E 东 个 镜 像 出 来 的 本 地 仓 库 侠 复 。 因 为 每 一 次 的 克 隆 操 作 , 实 际 上 都
一 次 对 代 码 仓 库 的 完 整 备 份 。
关 于 Git 的 诞 生 有 个 小 故 事 一 直 被 人 津 津 乐 道 。Linux 内 核 开 源 项
目 有 着 众 多 的 参 与 者 , 但 是 早 期 (1991~2002 年 间 ) 绝 大 多 数 的 Linux
内 核 维 护 工 作 都 花 在 了 提 交 补 丁 和 保 存 归 档 的 繁 琐 事 务 上 。 从 2002 年
开 始 , 整 个 项 目 组 开 始 启 用 一 个 专 门 的 分 布 式 版 本 控 制 系 统 BitKeeper
来 管 途 和 维 护 代 码 。 到 了 2005 年 , 开 发 BitKeeper 的 商 业 公 司 同
Linux 内 核 开 源 社 区 的 合 作 关 系 结 束 , 他 们 收 回 了 Linux 内 核 开 源 社 区
1 有
5 Lihux 内 核 一 样 的 超 大 矫 复 顶 自 行 芸 江 一
其 适 合 管 理 大 项 目 。
Git 诞 生 以 前 几 乎 是 SVN 占 据 了 开 源 届 版 本 控 制 系 统 的 江 山 , 但 之
后 随 着 Git 的 诞 生 与 日 臻 完 善 , 版 本 控 制 系 统 的 天 下 早 已 被 Git 收 入 囊
中 。 就 连 原 来 以 SVN 作 为 版 本 控 制 系 统 的 SourceForge 和 以 Mercurial
作 为 版 本 控 制 系 统 的 Bitbucket 都 相 继 支 持 Git。
Server Compute r
Version DatabaSe
Version 3
|
VRrs 1nml 2
e
作 大
湘
i 连 原 来 以 SVN 作 为 版 本 控 制 系 统 的 SourceForge 和 以 Mercurial
本 控 制 系 统 的 Bitbucket 都 相 继 支 持 Git。
茨
Server Computer
Version DatabaSe
Version 3
1
Version 2
1
Version 1
Computer A Computer B
Version DatabasSe Version DatabasSe
Version DatabasSe Version DatabasSe
Version 3 Version 3
| |
Version 2 Version 2
| |
Version 1 Version 1
Git 私 有 代 码 托 管 平 台 解 决 方 案
目 前 公 有 代 码 托 管 平 台 国 外 主 要 有
Github、Gitlab、SourceForge、Bitbucket 等 , 国 内 主 要 有
Gitee、Coding、 阿 里 云 Code 等 。 其 师 ,Github、SourceForge 、
Bitbucket、Gitee 都 提 供 商 业 化 的 Git 私 有 代 码 托 管 平 台 解 决 方 案 , 只
有 Gitlab 提 供 开 源 的 Git 私 有 代 码 托 管 平 台 解 决 方 案 , 其 他 平 台 暂 不 了
解 是 否 有 相 应 的 解 决 方 案 。
除 了 Gitlab 这 家 开 源 的 解 决 方 案 之 外 , 其 实 还 有 gogs、Gitea 等 。
Gitlab CE 版 本 提 供 了 与 C E 卯
河 比 如 Pages C 托 管 ) 、Oauth2 ( 第 三 方 应 用 登 录 验
证 ) 、Cl ( 持 续 集 成 ) 、CD ( 持 续 部 署 ) 等 。 相 比 之 下 ; 王
Gitea 贤 婷 命 子 更 育 基 碳 、 “ 帝 倩 咤 Git 私 有 代 码 托 管 平 台 解 决 方 案 。
Gitea 提 供 的 Gitea compared to other Git hosting options 一 文 可 仪
出 ,Gitlab CE、Gitlab EE 与 Github EE 事 实 上 是 特 性 最 为 丰 富 的 ,
特 性 , 比 如 Pages ( 静 态 页 面 托 管 ) 、 Oauth2 ( 第 三 方 应 用 登 录 验
江 河 CI ( 持 续 集 成 ) 、CD ( 持 续 部 署 ) 等 。 相 比 之 下 ,gogs 或 者
Gitea 贤 婷 命 子 更 育 基 碳 、 精 悍 的 Git 私 有 代 码 托 管 平 台 解 决 方 案 。 从
Gitea 提 供 的 Gitea compared to other Git hosting options 一 文 可 以 看
出 ,Gitlab CE,、Gitlab EE 与 Github EE 事 实 上 是 特 性 最 为 丰 富 的 ,
Gitea 除 了 不 支 持 Pages、 内 置 容 器 Registry、 内 置 C/VCD、 提 交 人 身
份 验 证 等 特 性 之 外 , 还 是 支 持 大 部 分 特 性 的 。 考 芸 刑 李 扬 史 胺 河 吊 节
加 复 杂 的 应 用 场 景 需 求 , 比 如 JupyterLab 的 Oauth2 登 录 验 证 等 ,
里 我 们 采 用 了 Gitlab CE 的 解 决 方 案 。
随 着 Docker 的 广 泛 使 用 和 发 展 ,Gitlab CE 官 方 也 提 供 了 Docker
化 的 部 署 方 式 , 但 是 相 比 较 而 言 , 由 sameersbn 提 供 的
sameersbn/docker-gitlab 更 加 适 合 实 践 。 主 要 的 理 由 有 以 下 两 点 :
接 从 一 个 旧 版 本 直 接 升 级 到 最 新 版 本 。
平 台 搭 建
由 于 这 里 采 用 了 Docker 化 的 方 式 进 行 部 署 Gitlab CE, 所 以 预 先 需
要 安 装 Docker 环 境 和 docker-compose 工 具 , 这 里 不 对 此 进 行 赘 述 。
准 备
江 为 Gitlab 创 建 一 个 目 录 用 于 放 置 应 用 配 置 和 数 据
mkdir -~/web/gitlab
水 下 载 docker-compose.yml 文 件
由 于 这 里 采 用 了 Docker 化 的 方 式 进 行 部 署 Gitlab CE, 所 以 预 先 需
要 安 装 Docker 环 境 和 docker-compose 工 具 , 这 里 不 对 此 进 行 赘 述 。
准 备
江 为 Gitlab 创 建 一 个 目 录 用 于 放 置 应 用 配 置 和 数 据
mkdir -~/web/gitlab
水 下 载 docker-compose.yml 文 件
wget -c https://raw.githubusercontent.…
gitLab/master/docker-compose .Yml
修 改 配 置
镜 像 版 本 的 设 置
编 辑 C yml 配 置 文 件 。 配 置 文 件 包 含 了 对 于 使 用 的
各 个 容 器 镜 像 的 定 义 要 有 三 个 : redis、postgresql、gitlab。 由 于
盛 行 勇 命 展 鲜 的 用 光 时 表 罡 史学 仁 史 是 为 了 加 快 庇 用 的 访 问 响 应
速 度 , 所 以 redis 镜 像 一 般 是 使 用 默 认 的 最 新 镜 像 即 可 , a
的 最 新 版 本 号 , 也 可 以 直 接 使 用 latest 标 签 。 数 据 库 这 里
postgresql 数 据 库 , 一 般 来 说 使 用 pn 钟 国 皋 李 人 由 于
Gitlab 在 13.70 版 未 之 后 将 postgresql 最 低 版 本 的 要 求 升 级 到 了 12,
所 以 现 在 一 般 sammersbn/postgresql 镜 像 的 版 本 标 签 都 是 12-
20200524, 以 前 postgresql 11 的 时 候 对 应 的 标 签 就 是 11-
20200524。gitlab 镜 像 的 版 本 号 主 要 是 跟 着 Gitlab 的 本 身 的 版 本 升 级
而 变 化 , 但 是 由 于 Gitlab 的 版 本 更 新 比 较 频 繁 (Gitlab 素 来 有 版 本 帝 “
的 称 号 , 所 以 sameersbny/gitlab 的 版 本 更 新 可 能 不 会 包 含 每 一 个 版
本 , 但 是 已 编 译 的 版 本 标 签 是 符 合 Gitlab 官 方 的 版 本 升 级 路 线 图 的 。
数 据 持 久 化
这 里 为 了 使 容 器 的 数 据 能 够 持 久 化 , 一 般 来 说 会 把 挂 载 一 个 本 地 目
录 来 对 应 容 器 的 数 据 目 录 。 当 然 , Docker 本 身 提 供 了 volume 的 创 建 和
二 D 心 L
这 里 为 了 使 容 器 的 数 据 能 够 持 久 化 , 一 般 来 说 会 把 挂 载 一 个 本 地 目
录 来 对 应 容 器 的 数 据 目 录 。 当 然 Dock 本 身 提 恍 了 v6lume 的 创 建 和
管 理 ,sameersbn 推 荐 的 祀 是 volumie 的 方 式 挂 载 , 但 是 考 虑 到 实 际 的
中 心 宣 储 服 务 器 来 存 储 所 有 数 据 , 仍 然 使 用 最 原 娼 的 本 地 目 录 对 应 挂
载 。 在 下 面 的 配 置 文 件 中 , 三 个 宪 器 对 应 的 数 据 目 录 都 做 了 这 项 变 动 。
随 机 秘 钥
由 于 Gitlab 应 用 本 身 需 要 有 三 个 随 机 字 符 串 来 分 别 完 成 数 据 库 记 录
生 成 、 密 码 加 密 、 二 次 验 证 生 成 , 所 以 这 里 建 议 使 用 uuid 命 令 生 成 三
个 长 随 机 字 符 丨 替 代 GITLAB_SECRETS_DB_KEY_BASE 、
GITLAB_SECRETS_SECRET_LKEY_BASE、
GITLAB_SECRETS_OTP_KEY_BASE 三 个 参 数 , 如 下 所 示 。
时 区 设 置
这 里 使 用 的 时 区 默 认 是 sameersbn 所 在 的 时 区 , 如 果 需 要 改 成 中
国 , 则 TZ 为 Asia/Shanghai ,GITLAB_TIMEZONE 为 Beijing。 注 意 ,
中 国 时 区 的 表 示 并 不 是 Asia/Beijing, 而 是 Asia/Shanghai。 只 用 一 个 单
词 表 示 时 区 时 , 则 使 用 Beijing ( 北 京 时 间 ) 。
端 口 和 SSL 设 置
在 gitlab 容 器 中 实 际 上 是 有 Nginx 服 务 的 , 所 以 官 方 提 供 了 自 带 的
SSL 加 载 方 式 。 但 是 考 虑 到 搭 建 Gitlab 的 服 务 器 可 能 还 要 用 于 其 他 服
务 , 所 以 这 里 的 80 和 22 端 口 将 会 修 改 成 本 地 其 他 端 口 , 而 在 宿 主 机
上 使 用 统 一 的 Nginx + SSL 来 支 持 SSL 化 。 虽 然 这 样 不 需 要 把 SSL 证
书 挂 载 到 容 器 内 , 但 还 是 需 要 告 诉 容 器 启 动 HTTPS
(GITLAB_HTTPS) 和 实 际 使 用 的 端 口 (GITLAB_PORT 和
GITLAB_SSH_PORT), 否 则 在 UI 上 显 示 的 将 是 HTTP 和 容 器 内 部 的 端
口 。
白 了 文 伟 j 介 罢
一 般 来 说 采 用 默 认 的 . 每 天 凌 晨 1 点 “ 策 略 自 动 备 份 即 可 , 可 以 根 据
实 际 需 求 修 改 为 不 同 的 时 间 点 或 每 周 或 每 月 。 备 份 的 压 缩 包 会 保 存 在
gitlab-data 目 录 下 的 backups 目 录 里 。
Pages 设 置
Pages 功 能 是 Gitlab CE 提 供 的 一 个 非 常 实 用 的 内 部 静 态 页 面 托 管
方 案 , 不 像 Github Pages 是 完 全 公 开 的 , Gitlab Pages 也 可 以 根 据
Gitlab 本 身 的 用 户 验 证 来 限 制 页 面 的 访 问 权 限 。 这 里 上 面 下 载 的 配 置 文
九 队 E 需 要 i V
二 级 域 名 , 非 主 域 名 ) , 并 将 该 域 君 对 应 的 通 配 符 解 析 制 Gitlab 服 务
器 。 解 析 好 后 , 普 通 项 目 的 访 问 URL 是
https://{username}.pages.example.com/tprojecty, 比 如 项 目
zhonger/zhonger 的 Pages 访 问 URL 为
https://zhonger.pages.example.…。 如 果 项 目 名 与 前 面 的 域
名 完 全 对 应 , 那 么 就 可 以 直 接 使 用 域 名 访 问 , 无 须 带 子 目 录 , 比 如 项 目
zhonger/zhonger.pages.example.com 的 Pages 使 用
https://zhonger.pages.example.… 访 问 即 可 。
相 对 路 径 配 置
如 果 想 要 把 Gitlab 服 务 与 其 他 服 务 共 用 一 个 域 名 对 外 提 供 服 务 , 那
么 就 需 要 设 置 相 对 路 径 GITLAB_RELATIVE_URL_ROOT。 比 如 想 要 使 用
https://lexample. Com/git 的 URL 访 问 Gitlab 服 务 , e 沥
雯 锷 新 设 置 相 对 跳 彼 编 详 生 效 编 译 过 程 可 能 比 较 长 M
初 始 root 密 码 配 置
GITLAB_ ROOT _PASSWORD 配 置 节 为 初 始 管 理 员 用 户 (root) 密
二 一 n
GITLAB_ROOT_PASSWORD 配 置 节 为 初 始 管 理 员 用 户 (root) 密
码 , 如 果 置 空 则 为 Gitlab 官 方 常 用 默 认 密 码 5iveL!fe。
verSion: “2.3,「
services :
redis :
restart: alLwayS
image: redis : 6 .2
command :
postgresdl :
restart: alLwayS
image: sameersbn/postgresql:12-20200524
volumes :
gitlab :
restart: alLwayS
image: sameersbn/gitlab:14.1.1
depends_on:
Iedis
Postgresql
PortS :
“10080:80“
一 “10022:22“
volumes :
healthcheck :
test: [【“CMD“, “/usr/LocalL/sbin/healthcheck“ ]
interVal : 5m
EHR ES
image: sameersbn/gitlab:14.1.1
depends_on:
Iedis
Postgresql
PortS :
“10080:80“
“10022:22“
volumes :
/gitLab-data: /home/git/data
healthcheck :
test: [【“CMD“, “/usr/LocalL/sbin/healthcheck“ ]
interVal : 5m
timeout: 108
retries: 3
start_period: 5m
environment :
DEBUG=false
_DB_ARDAPTER=postgresq1
_DB_HOST=postgresq1
DB_PORT=5432
DB_USER=git1ab
_DB_PASS=password
_DB_NAME=gitlabhq_production
REDIS_HOST=redis
REDIS_PORT=6379
T2=Rsia/Shanghai
GITLAB _TIMEZONE=Beijing
GITLAB _HTTPS=true
SSL_SELF_SIGNED=false
TLAB_HOST=Localhost
TLAB_PORT=10080
TLAB_SSH_PORT=10022
TLAB_RELATIVE_URL_ROOT-
GITLAB_SECRETS_DB_KEY BASE=fd6d127c-f4ce-11eb-8163-
1e008a0e6985
GITLAB_SECRETS_SECRET _KEY BASE=03221924-f4cf-1leb-a75e-
人 口 口 口 一人 一 一
1
@ 0 Q @ Q
s
TLAB_HOST=Localhost
TLAB_PORT=10080
pLAB_SSH_PORT=10022
TLAB_RELATIVE_URL_ROOT-
GITLAB_SECRETS_DB_KEY BASE=fd6d127c-f4ce-11eb-8163-
1e008a0e6985
GITLAB_SECRETS_SECRET _KEY BASE=03221924-f4cf-1leb-a75e-
1e008a0e6985
_ GITLAB_SECRETS_0TP_KEY BASE=07d5caec-f4cf-1leb-ab3b-
1e008a0e6985
1
Q Q 9 Q Q
GITLAB_ROOT_PASSWORD=root&@root
GITLAB_ROOT_EMAIL=root&@example .com
GITLAB _NOTIFY_ON _BROKEN _BUILDS=true
GITLAB_NOTIFY _PUSHER=false
TLAB_EMAIL=notifications&examplLe .com
pLAB_EMAIL _ REPLY _ TO=norep1y&example .com
TLAB_INCOMING_EMAIL _ADDRESS=rep1y&example .com
1
Q G @
TLAB _BACKUP_SCHEDULE=daily
TLAB_BRCKUP_TIME=01 : 00
Q G
TLAB_SHARED_DIR=/home/git/data/shared
TLAB_PAGES_ENABLED=true
TLAB_PAGBES_DOMAIN=pageS .example .com
TLAB_PAGES_DIR-=$GITLAB_SHARED_DIR/pages
TLAB_PAGES_PORT=80
TLAB_PAGES_HTTPS=true
Q Q 9 Q Q @
启 动 与 测 试
在 ~/web/gitlaby 目 录 使 用 以 下 命 令 拉 取 并 启 动 所 有 容 器 实 例 。 如
果 已 经 在 宿 主 机 的 Nginx 上 预 先 配 置 好 Gitlab 访 问 域 名
gitexample.com 以 及 SSL 证 书 , 则 可 以 使 用 https://git:example.com
怀 心
在 ~/web/gitlaby 目 录 使 用 以 下 命 令 拉 取 并 启 动 所 有 容 器 实 例 。 如
果 已 经 在 宿 主 机 的 Nginx 上 预 先 配 置 好 Gitlab 访 问 域 名
gitexample.com 以 及 SSL 证 书 , 则 可 以 使 用 https://git.example.com
雷 揉 访 闯 吴 劣 好 的 Gitlab。
docker-compose up -Qd
Gitlab Runner
Gitlab CE 提 供 的 Pages 功 能 必 须 与 Gitlab Runner 不 吊
贺 则 源 代 码 无 法 编 译 成 静 态 页 面 , 从 而 无 法 正 常 提 供 Pages 功 能 。 虫
然 Gitlab Runner 有 好 几 种 方 式 , 但 是 为 子 避免 对 于 服 务 器 的 环 境 的 破
坏 和 支 持 更 多 的 源 码 编 译 环 境 , 这 里 建 议 采 用 docker 方 式 启 动 Gitlab
rUnner。
启 动
使 用 以 下 命 令 拉 取 并 启 动 gitlab-runner 的 最 新 镜 像 。
docker run -d –name gitlab-runner –restart alwayS
-V /srv/gitlab-runner/config: /etc/gitLlab-runner 飞
-V /var/run/docker.sock: /Var/run/docker .Sock
-n gitLab-runner “
gitLab/gitLab-runner : Latest
配 置
江 进 入 gitlab-runner 容 器
docker exec -ti gitlab-runner registeI
江 根 据 提 示 输 入 内 容
江 输 入 Gitlab 服 务 的 URL, 比 如 https: //git .example .com
江 输 入 Token, 可 以 在 Gitlab 的 管 理 员 配 置 的 Runner 里 面 看 到
永 输 入 描 逊 , 棣 据 实 际 自 行 设 定 , 可 以 是 主 机 别 名
仁 标 林 门 许 runner 绑 定 的 标 盖 tag, 可 以 输 入 一 个 或 空 格 间 隔 多 个 , 也 可 以 置 空
飞
北 冼 挟 rmnner“_RxenmDT 为 nrier
江 进 入 gitlab-runner 容 器
docker exec -ti gitlab-runner registeI
江 根 据 提 示 输 入 内 容
江 输 入 Gitlab 服 务 的 URL, 比 如 https : //git .example .com
江 输 入 Troken, 可 以 在 Gitlab 的 管 理 员 配 置 的 Runner 里 面 看 到
永 输 入 描 逊 , 棣 据 实 际 自 行 设 定 , 可 以 是 主 机 别 名
仁 标 林 门 许 runner 绑 定 的 标 签 tag, 可 以 输 入 一 个 或 空 格 间 隔 多 个 , 也 可 以 置 空
飞
江 选 择 runner executor 为 docker
江 输 入 默 认 的 编 译 环 境 镜 像 , 比 如 python:alpine
平 台 运 维
升 级
升 级 路 线 规 划
前 面 已 经 提 到 过 Gitlab 的 升 级 实 际 上 是 要 遵 循 Gitlab 官 方 提 供 的 路
线 图 的 , 即 按 版 本 逐 步 迭 代 升 级 , 具 体 可 以 查 看 Upgrade-paths。 截
上 到 文 章 撰 写 之 时 ,Gitlab 的 版 本 升 级 主 要 路 线 为 : 8.11.Z -> 8.12.0 ->
8.17.7 -> 9.5.10 -> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 ->
13.0.14 -> 13.1.11 -> latest 13.12.Z -> latest 14.0.Z -> 14.1.Z -> latest
14.Y.Z。 这 里 的 Z 指 的 是 该 主 要 版 本 的 最 后 一 个 次 要 版 本 ,Y 指 的 是 最
新 的 主 要 版 本 。Gitlab 的 版 本 可 以 通 过 Version-specific upgrading
instructions 和 Releases 来 确 认 。 当 然 , 在 文 档 中 我 们 也 可 以 看 到 一 些
具 体 的 版 本 升 级 路 线 的 示 例 。 如 果 我 们 当 前 的 版 本 符 合 某 一 条 升 级 路
线 , 那 久 可 以 直 接 接 照 仁 例 中 的 路 线 逐 矛 升 级 。 如 果 不 符 合 则 需 要 自 行
根 据 主 要 路 线 进 行 确 认 。
这 里 我 们 以 当 前 版 本 13.2.6 想 要 升 级 到 13 主 要 版 本 的 最 后 一 个 次
要 版 本 13.12.4 为 例 进 行 尝 试 。 首 先 查 阅 一 下 sameersbn/docker-gitlab
的 版 本 号 , 发 现 如 下 :
。 13.2.6 为 13.2.Z 的 最 后 一 个 修 补 (patch) 版 本
s 自 13.7.0 版 本 开 始 sameersbn/docker-gitlab 采 用 Postgresql 12
b 居 “ 24 是 13 主 要 (Major】 版 本 中 的 最 后 一 个 次 要 (Minor) 版
根 据 以 上 的 升 级 主 要 路 线 可 知 , 从 13.2.6 版 本 到 13.12.4 其 实 一 步
到 位 升 级 也 趸 可 行 的 。 住 是 实 际 上 「13.2.6 版 本 对 应 的 postgresql 的 版
未 适 奉 I 厂 从 13.7 古 朔 李 宇 厚 开 始 升 级 刺 12 林 据 GKlab 渡 循 的 版
/ 人
本 。 在 同 一 个 主 要 版
许 0 弓 余 所 以 订 以 设 定 升 级 绘 线 为 : 13.2.6 -> 13.7.4 ->
边 备 份 边 升 级
Gitlab 的 备 份 还 原 需 要 是 在 与 备 份 对 应 的 版 本 上 做 的 。 如 果 因 为 升
级 失 败 而 需 要 使 用 旧 版 本 的 备 份 还 原 , 需 要 移 除 失 败 版 本 所 用 的 文 件 夹
及 文 件 , 并 启 动 一 个 对 应 版 本 的 新 实 例 然 后 进 行 备 份 还 原 。
汀 首 先 对 13 .2 .6 版 本 进 行 备 份
docker-compose run –rm gitlab _app:rake gitlab:backup:create 江
将 会 进 行 手 动 备 份
江 修 改 docker-compose.yml 中 的 gitlab 镜 像 版 本 为 13.7.4,
江 同 时 修 改 postgresql 的 镜 像 版 本 为 12-20200524
江 销 毁 旧 版 本 的 实 例 集 群 并 启 动 新 的 实 例 集 群
docker-compose down && docker-compose
志
UP
江 英 弃 郭 量 吴 各 顺 服 务
口 gs gitL1ab_gitLab
江 亢 日 F 面 登 录 验 证 , - 雷 宏 妮 肖 动 级 成 功
江 对 13.7.4 版 本 进 行 备 价
docker-compose run –rm gitlab _app:rake gitlab:backup:create 江
将 会 进 行 手 动 备 份
江 修 改 dockerc-compose.yml 中 的 gitlab 镜 像 版 本 为 13 .12 .4,
江 同 时 修 改 redis 的 镜 像 版 本 为 6 . 2, 之 前 redis 的 镜 像 版 本 为 5.0.9
以 6 出 | 口 LE th sh/5| 佳 3 Hf 巳 =hEhh Sh /5| 余
Gitlab 的 备 份 还 原 需 要 是 在 与 备 份 对 应 的 版 本 上 做 的 。 如 果 因 为 升
级 失 败 而 需 要 使 用 旧 版 本 的 备 份 还 原 , 需 要 移 除 失 败 版 本 所 用 的 文 件 夹
及 文 件 , 并 启 动 一 个 对 应 版 本 的 新 实 例 然 后 进 行 备 份 还 原 。
江 首 先 对 13 .2 .6 版 本 进 行 备 份
docker-compose run –rm gitlab _app:rake gitlab:backup:create 江
将 会 进 行 手 动 备 份
江 修 改 docker-compose.yml 中 的 gitlab 镜 像 版 本 为 13.7.4,
江 同 时 修 改 postgresql 的 镜 像 版 本 为 12-20200524
江 销 毁 旧 版 本 的 实 例 集 群 并 启 动 新 的 实 例 集 群
小 命 吾 compose down && docker-compose up -Qd
丨 人 伟 人 CIE 弃 郎 b 量 启 各 项 服 务
查 i 实
口 Logs gitLab_gitLab_1
汀 访 问 界 面 , 登 录 验 证 , 确 认 实 例 升 级 成 功
江 对 13.7.4 版 本 进 行 备 价
docker-compose run –rm gitlab _app:rake gitlab:backup:create 江
将 会 进 行 手 动 备 份
江 修 改 dockerc-compose.yml 中 的 gitlab 镜 像 版 本 为 13.12 .4,
江 同 时 修 改 redis 的 镜 像 版 本 为 6 .2, 之 前 redis 的 镜 像 版 本 为 5.0.9
江 销 毁 旧 版 本 的 实 例 集 群 并 启 动 新 的 实 例 集 群
小 命 吾 -compose down && docker-compose up
英 弃 郭 b 菜 吴 各 顺 服 务
查 i 实
口 Logs gitlLab_gitLab
江 访 问 界 面 , 罪 桐 验 诛 - 雷 宏 妮 肖 动 级 成 功
如 果 在 升 级 之 后 发 现 升 级 失 败 或 新 版 本 中 某 些 组 件 有 问 题 愚 要 回
滚 , 就 需 要 利 用 刚 才 升 级 过 程 中 提 前 备 份 好 的 数 据 还 原 备 份 了 。
江 复 制 刚 才 备 份 的 所 有 数 据 文 件 到 当 前 工 作 目 录
cp gitLab/backups/* .tar /
江 销 毁 所 有 实 例
docker-compose down
江 移 除 本 地 持 久 化 文 件 夹 及 文 件
Sudo rm -rf _qitlab postqresaql redis
docker-compose run –Lm gitLab _ app:rake gitLlab:backup:create 永
将 会 进 行 手 动 备 份
江 修 改 dockerc-compose.yml 中 的 gitlab 镜 像 版 本 为 13.12 .4,
江 同 时 修 改 redis 的 镜 像 版 本 为 6 .2, 之 前 redis 的 镜 像 版 本 为 5.0.9
江 销 毁 旧 版 本 的 实 例 集 群 并 启 动 新 的 实 例 集 群
小 命 吾 -compose down && docker-compose up
英 弃 郭 b 菜 吴 各 顺 服 务
查 i 实
口 Logs gitlLab_gitLab
江 访 问 界 面 , 罪 桐 验 诛 - 雷 宏 妮 肖 动 级 成 功
如 果 在 升 级 之 后 发 现 升 级 失 败 或 新 版 本 中 某 些 组 件 有 问 题 愚 要 回
滚 , 就 需 要 利 用 刚 才 升 级 过 程 中 提 前 备 份 好 的 数 据 还 原 备 份 了 。
江 复 制 刚 才 备 份 的 所 有 数 据 文 件 到 当 前 工 作 目 录
cp gitLab/backups/* .tar /
江 销 毁 所 有 实 例
docker-compose down
江 移 除 本 地 持 久 化 文 件 夹 及 文 件
sudo rm -rf gitlab postgresql redis
江 修 改 docker-compose.yml 中 的 配 置 到 想 要 回 滚 的 备 份 数 据 对 应 的 版 本
江 此 处 注 意 三 个 镜 像 版 本 的 对 应 修 改
江 启 动 实 例 集 群
docker-compose up
汀 诊 英 许 利 技 述 伟 吊 备 价 文 件 央
cP ./*.tar gitlab/backups
江 『 扰 行 恢 复 数 揉 探 作
docker-compose run –rm gitlab _app:rake gitlLab:backup:restore 江
将 会 看 到 可 用 备 份 列 表
参 考 资 心
s 《Pro Git》
s Sameersbn/docker-gitlab