尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

基于 Gitlab 实现 Go 的 CI/CD

基于 Gitlab 实现 Go 的 CI/CD
📅 发布时间:2026/6/19 8:53:11
# 定义流水线的几个阶段
stages:- lint- test- build- docker- deploy# 定义所有 job 的默认环境变量
variables:GO111MODULE: "on"CGO_ENABLED: "0"GOPROXY: "https://goproxy.cn,direct"# 代码静态检查
lint:                   # 这是 job 的名字(随便起,但最好能看懂)stage: lint           # 声明它属于 lint 阶段image: golang:1.23    # 使用官方 Go 镜像,保证环境一致script:               # job 内真正执行的命令# 安装最新的 golangci-lint 工具- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest# 检查整个项目代码- golangci-lint run ./...# 代码测试
test:stage: testimage: golang:1.23script:# 测试所有包,并输出覆盖率,可以加 -race 选项检查并发问题,可以保存 coverage.out 作为 artifact,生成覆盖率报告- go test ./... -cover# 代码构建
# 提示:这一步和 docker 阶段分离,是为了方便调试(不必每次都打镜像
build:stage: buildimage: golang:1.23script:# 编译入口文件,生成二进制- go build -o bin/app ./cmd/main.go# 指定要保存的产物artifacts:paths:# bin/app 上传到 GitLab 的 artifact 系统,供后续 job 使用或下载- bin/app# 构建 docker 镜像,并将其推送到指定路径下
# 提示:需要在 CI/CD 设置里配置 Registry 的登录凭证(CI_REGISTRY_USER、CI_REGISTRY_PASSWORD)
# 提示:如果嫌 DinD 慢,可以用 kaniko 或 buildah 作为无特权构建器
docker:stage: dockerimage: docker:latest          # 使用官方 Docker 镜像作为 runner 环境services:# 启用 Docker in Docker,让 CI job 能执行 docker build/push- docker:dindscript:# 构建镜像,打标签为 registry.gitlab.com/yourgroup/yourproject:$CI_COMMIT_SHORT_SHA# $CI_COMMIT_SHORT_SHA 是 GitLab 内置变量,表示当前提交的短 hash(保证镜像唯一性)- docker build -t registry.gitlab.com/yourgroup/yourproject:$CI_COMMIT_SHORT_SHA .# 推送镜像到 GitLab Registry- docker push registry.gitlab.com/yourgroup/yourproject:$CI_COMMIT_SHORT_SHA# 部署应用到开发、测试、生产环境
# 需要提前在 CI/CD 设置里配置好 SSH Key,否则无法远程部署
# 如果要多环境部署,可以加 environment: staging、environment: dev
deploy:stage: deploy# 这个 job 不会自动执行,必须手动点击运行(避免误上线)when: manualscript:# 通过 ssh 登录到目标服务器,拉取新镜像并更新服务(这里用 docker-compose up -d 管理容器)- ssh user@server "docker pull registry.gitlab.com/yourgroup/yourproject:$CI_COMMIT_SHORT_SHA && docker-compose up -d"environment:# 定义环境名,在 GitLab UI 里会展示name: production # dev/test/pro# 点击环境名可以跳转到你的线上地址url: https://yourdomain.com# 总结:
# 这个 .gitlab-ci.yml 实际上体现了完整的 Go 项目 CI/CD 流程
# 1、Lint → 代码质量
# 2、Test → 自动化验证
# 3、Build → 编译产物
# 4、Docker → 制作镜像并上传
# 5、Deploy → 手动上线

相关新闻

  • 2025.9.11
  • 如何使用jobleap.cn避免简历中的严重错误
  • 如何用产品思维优化简历的“用户体验”?

最新新闻

  • 武汉三新职业技术学校-学校介绍以及招生专业2026年 - 武汉中职最新信息发布
  • 沧州黄金回收市场实地测评:六家正规机构横向对比 - 余生黄金回收
  • 2026长沙黄金回收避坑测评榜|不压价、无套路正规门店排名 - 奢侈品回收测评
  • LabVIEW Crypto工具包:一体化工业级加密解决方案与实战指南
  • RFT强化微调:将专家隐性知识转化为可执行评分函数
  • 高价透明省心变现,2026哈尔滨回收黄金口碑实力排名 - 名奢变现站

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号