GitLab 镜像到 CodeCommit 接流水线:七步实操,两个真正卡人的点

Alex2024年01月30日 1 分钟DevOps
GitLab 镜像到 CodeCommit 接流水线:七步实操,两个真正卡人的点

我做过一个项目,GitLab 是团队的主代码仓库,但客户侧的部署流水线跑在 AWS 上,中间必须把代码同步到 CodeCommit 才能接 CodePipeline。当时我花了大半天才把整条链路跑通,踩了几个坑,所以把流程整理出来,后面再遇到直接照着走就行。

我的整体思路

整条链路七步:建 IAM 用户、配策略、生成 HTTPS 凭证、建 CodeCommit 仓库、GitLab 设镜像、锁保护分支、验证。步骤看着不少,但真正容易卡住的地方就两处——IAM 权限的 ARN 写对,以及 GitLab 镜像 URL 的格式。我按顺序过一遍。

具体操作

1. 建 IAM 用户

AWS IAM 控制台新建一个用户,名字随意,但我建议带上用途标识,比如 `gitlab-mirror-bot`,后面审计的时候一眼就能认出来。

2. 配策略

挂一条内联策略,只授 `codecommit:GitPull` 和 `codecommit:GitPush` 两个 action。我踩过一次坑:资源 ARN 里区域和账户 ID 写错,GitLab 那边一直报 403,排查了快二十分钟才发现是 ARN 的问题。ARN 里必须带正确的区域与账户信息,别偷懒用通配。

3. 生成 HTTPS Git 凭证

切到该 IAM 用户的"安全凭证"选项卡,生成 AWS CodeCommit 对应的 HTTPS Git 凭证。AWS 会给你一对用户名和密码,后面 GitLab 镜像时要用。

4. 建 CodeCommit 仓库

CodeCommit 控制台新建一个仓库,用来接收来自 GitLab 的镜像,名字跟 GitLab 那边对齐比较省事。

5. 配置 GitLab 镜像

进 GitLab 项目 → 设置 → 存储库,拉到"镜像存储库"那一块。Git 存储库 URL 格式为:

`https://git-codecommit..amazonaws.com/v1/repos/`

用户名填第 3 步生成的专用 HTTPS Git 用户 ID,密码填对应密码。

6. 保护分支

勾上"仅镜像受保护的分支"。我的判断是这一步别省——镜像是单向推送,一旦把 main 之外的实验分支也同步过去,CodeCommit 那边的仓库会很乱,回滚也麻烦。

7. 验证

点"立即更新",GitLab 会触发一次手动同步。去 CodeCommit 控制台刷新,看到 commit 进来就通了。

收尾

跑通之后我日常维护成本很低,GitLab 那边正常 push,CodeCommit 自动跟。后面如果要接 CodePipeline,直接从 CodeCommit 建触发器就行,不用再折腾 webhook。

References

  • 统一DevOps流程:供应商协作的关键
  • AWS DevOps CodePipeline体系建设:构建高效、自动化的部署流程
B
关于作者 · Alex

我是 Alex,12 年+ 软件架构经验,专注 AI 私有化部署、DevOps 与云原生架构。这里持续分享一线技术实践与职业成长。

订阅更新

Stay updated with the latest insights on AI, DevOps, and cloud architecture.

RSS 订阅