惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
月光博客
月光博客
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
NISL@THU
NISL@THU
爱范儿
爱范儿
S
Securelist
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
G
GRAHAM CLULEY
P
Proofpoint News Feed
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
博客园 - 【当耐特】
H
Help Net Security
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss

Gitee 官方博客

花几千块报志愿之前,先把这 7 个问题问清楚 Gitee 618 年中盛典开启:企业版新购最高送一年,PocketClaw 首次限时折扣 Gitee 成为首批「供应链安全号」成员单位,携手共建国产工业软件生态 七大赛道 TOP 10 公布!Gitee 年度开源项目评选结果正式揭晓 GLM-Image 上线模力方舟:首个国产芯片训练的多模态图像生成模型 「开源技术」正式纳入国家职教体系,Gitee 已为开源教育落地做好准备 Gitee 软件工厂:以密级管理为底座,构建符合国家保密资质的安全研发体系 Claude Code 的代码安全困境:插件机制齐全,却绕不开模型幻觉 北京中关村学院入驻 Gitee:打造 AI for Science 教学新范式 Gitee 移动软件工厂:突破网络限制的开发新模式 从依赖到可控:开源基础设施的国家命题 模力方舟 MCP Server 上线:在 Cursor 里玩 AI 生图+语音 【国内首家】 Gitee Repo 通过信通院《可信制品管理能力分级要求》先进级(最高级)评估 Gitee Repo 助力关键领域 DevSecOps落地:构建安全可控的制品管理体系 会翻译、懂产品、还能画头像:Gitee 智能三连上线! Gitee Pipe:关键领域 DevSecOps 的核心引擎 时代命题下的民营科技担当:从备份战略看 Gitee 的国家定位 没人喜欢写 README?Gitee:现在你不用写了 关键领域软件工厂的安全中枢:Gitee Scan 全面升级供应链检测能力 Gitee MCP 现已支持远程访问:无需本地部署,AI 助手即插即用 Gitee 企业版效能度量全面升级:构建可衡量、可洞察、可优化的研发体系 高标准+安全可控:关键领域研发为什么选择 Gitee Code? 河南农担 x Gitee:以数字化赋能「三农」信贷服务新范式 Gitee Test:驱动软件工厂DevSecOps 落地,保障关键领域安全稳定 马建仓 AI 助手全流程升级:更聪明的研发搭子,更专业的协作助手 从公益初心到商业化探索,开源中国助推中国开源生态之路 以知识管理赋能 DevSecOps,Gitee Wiki 加速关键领域软件自主演进 Gitee 企业版测试管理全面升级:流程更顺畅,交付更可靠 Gitee 企业版 AI 队友邀测开启:程序员的贴身助理来了 Gitee 构件治理实践:CBB 分布式管理助力软件工厂建设 重塑研发组织形态:从「中心软件工厂」到「移动软件工厂」 Gitee 企业版三大模块升级解读:项目、工作项、测试体系全面进化! Gitee 软件工厂的构件之道:CBB 与内源库(代码库\制品库)的本质差异 Gitee 软件工厂新范式:高安全、强协同、快交付,一体化研发全打通 当关键软件也被卡,我们的答案在哪里 Gitee 获北京市“科学技术进步奖”一等奖 加速项目管理效率,Gitee PPM 驱动软件工厂的智能化转型 打造智能化软件工厂:Gitee Insight 的 DevSecOps 度量实践 Gitee MCP 上线 Trae,AI 助手从代码生成走向仓库联动 开源中国荣获专精特新“小巨人”:做关键行业的可信研发底座 用智能体重塑 DevOps:Gitee 如何打造全域研发引擎 Gitee Repo 联邦仓库能力展示及最佳实践 Gitee AI 队友公测启动!自主申请,从审代码到漏洞检测全都自动搞定 Gitee 企业版更新:工作项、安全管理与测试用例能力升级 GOTC 2025 回顾|打通数据到生产,AI 应用工程化加速落地 Gitee Team 如何支撑关键领域行业 DevSecOps 落地? 软件工厂驱动 DevSecOps:高效集成发布的演进实践 Gitee 正式发布企业版 MCP Server:让 AI 深度融入企业研发管理 马建仓 AI 助手再进化:懂场景,也懂老板,但更懂你 一次提交更新两个仓库,Get 更优雅的 GitHub/Gitee 仓库镜像同步 当开源的门缝变窄,真正需要我们警觉的是什么? Gitee构建智能研发闭环:从数据飞轮到多智能体协同 一套平台管理上千构件:Gitee DevSecOps 如何用 CBB 重塑军工研发范式? DeepSeek 与开源:肥沃土壤孕育 AI 硕果 开源中国入选「2025年度中国软件高质量发展百强企业」 Gitee Go Release 插件上线:自动发版、上传构建产物一步到位 【重磅升级】制品库安全知识库自动更新与分析,制品安全防护「快人一步」 Gitee AI 队友新升级:PR 审查更智能,安全治理更灵活,个人用户也能用! Gitee 产品更新:Web 端提交、工作项与知识库体验提升 开源中国参加2025敏捷生态大会:智能化软件工厂构筑工业研发新范式 Gitee x AGIROS:与中科院软件所共建国产具身智能基础设施 开源中国董事长马越出席香港开源论坛:开源基础设施服务香港智能转型 沐曦股份选择 Gitee 企业版,打造国产 GPU 开源生态阵地 国产IronBank——源盾可信中心仓 Gitee CodePecker 支撑 DevSecOps 落地,双擎驱动全链路研发安全 开源中国入选「2025年度中国信创软件高质量发展百强企业」 破解安全研发三大难题:Gitee 软件工厂助力高标准合规落地 Jira 停售一年后,国产研发管理平台谁能真正站出来? 从断网交付到敏捷协同:Gitee 移动软件工厂的增量落地全路径 Gitee 企业版更新:优化测试管理流程,闭环能力再提升 Gitee DevOps 全面支持信创,驱动企业数字化安全与效能跃升 武汉人工智能研究院 x Gitee:跨模态智能研发的革新之路 Gitee DevSecOps:打造智能化军工软件工厂,破解版本管理难题 智能化 Issue 管理:基于 Coze + Gitee API 的自动化实践 Gitee 发布官方 MCP Server :让 AI 助手直连你的代码仓库 Gitee MCP Server:让 AI 助手接管繁琐事务,助力 Gitee 专业版研发提效 开源中国完成数亿元 C 轮融资:Gitee 加速智能化研发效能革新 启航 AI 新航道!Gitee 双十一与你共享智能新未来 《中国DevOps现状调查报告(2023)》发布,Gitee 领跑国产平台 研运一体化之下,Gitee 如何精准赋能银行实施大规模敏捷 对数字「祛魅」,中大型规模企业如何进行有效的研发效能度量? 从混乱到卓越,Gitee Code 如何治好 IT 部门的精神内耗 科技赋能,Gitee 助力国家海关总署实现重大业务改革 科大讯飞选择Gitee旗舰版,完成研发协作平台国产化替代 用脑图做测试用例,高效到家了! 信创驶入快车道,中国赛宝实验室选择 Gitee 搭建高效研发协作平台 金融人怎么写出安全可靠的代码?知名证券企业这样做 16家单位、2万名研发,金融科技领头羊如何集中统一代码管理? 《Gitee 专业版白皮书》重磅发布,助力企业实现高效、快捷交付 Gitee x 未来物联:高效能产研团队是怎样炼成的? 点击查看2022年你与Gitee的记忆 我们让 ChatGPT 写了一篇开源项目推荐 Gitee 自动化全新上线,让提效融入每处细节 Gitee Scan 四大升级,助力企业完美实现质量左移 Gitee携手内燃机龙头企业,为数字化研发注入新势能 【永久有效】初创企业限时特惠,999 即可购买 Gitee 标准版 Gitee与浪潮集团达成合作 加速国内DevOps生态建设 Gitee助力宁波银行DevOps三级认证,加速数字化转型 海通证券携手Gitee,以科技赋能金融行业研发转型 产品研发交给外包,怎么管理才能做到心里有底?
基于 Gitee Go 的 Golang 持续集成部署体验
Gitee · 2020-12-16 · via Gitee 官方博客

Gitee Go 快速体验入口:https://gitee.com/features/gitee-go

Gitee Go 是 Gitee 推出的 CI/CD 服务,通过自定义构建流程,可以实现从代码仓库到构建部署自动化。目前已支持 MavenGradlenpmPythonAntPHPGolang 等工具和语言的持续构建与集成能力。

本次实践将基于 Gitee Go 完成一个 Golang 应用的 自动化构建编译+部署,并通过外网访问预览效果。

实现思路

Gitee Go 提供了将项目持续集成并部署到指定主机环境中的能力,目前支持在任意可连通公网的 Linux 主机上进行部署,推荐主机环境使用 Ubuntu/CentOS。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

环境准备

  • 实现 Gitee Go 持续部署集成需要一台可连通外网的 Linux 主机,推荐使用 Ubuntu/CentOS。
  • 用户部署目标机器需要自行集成运行环境。
  • 通过文章顶部开头链接(Gitee Go)获取可用的构建时长,以用于流水线使用。

Gitee Go 的持续集成主要通过 Agent 方式实现,故会在系统中安装 JDK 1.6+ 环境。

持续部署的流程

在持续部署过程中,通过持续集成编译并打包的制品工程,结合用户定义具体的部署脚本,可以轻松将用户的代码部署到指定的机器上。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

一、开通 Gitee Go

在仓库中找到「DevOps」菜单中的「Gitee Go」功能,点击「同意并开通」,完成服务开通。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

二、制品库配置

在 Gitee Go 中,制品库主要是用于存放和管理 CI 过程产生的构建物,包括但不仅限于:二进制构建物、测试报告、其他数据报告等。 在制品库中,允许存在多个制品,单个制品支持历史版本下载和自定义标记版本号。

通过 Gitee Go 流水线页面找到「制品库管理」功能,创建一个制品库并设定制品库的唯一标识。此处以创建一个名为 “编译制品",唯一标识为 “compiled-artifact” 的制品库为例。如下图。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

三、添加部署机器

在 Gitee Go 中,“计算资源管理” 功能主要用于管理用户的计算资源,如集群、云主机等。 目前对主机资源的管理主要通过在宿主机安装 Agent 程序实现对机器的管理。

添加主机组

企业管理员通过访问 管理->功能设置->计算资源管理 进行设置管理。以下以创建名为 “后端服务”,唯一标识为 “backend-server” 的主机组为例。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客
添加主机

在创建完主机组后,通过主机组 主机管理 选项添加一个新主机。 此处已准备了一台装有 Golang 的 Ubuntu 主机为例。相关信息如下:

  • 主机信息:Ubuntu 20.04.1 64bit LTS
  • Golang版本:1.13.8 linux/amd64
基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

通过选择 添加新主机,在弹出的界面中获取到 Agent 的安装脚本,复制到目标机器上执行。安装完成后,将看到 Agent started success! 的字样,表示 Agnet 安装并启动完成。回到主机添加界面,勾选对在线的主机,选择添加即可完成主机的添加。

添加主机

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

执行脚本,安装并启动 Agent 程序

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

回到 Web 端,勾选已在线的主机,点击「添加主机」,完成主机添加。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客
基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

在主机组中选择「关联仓库」,在弹出窗口搜索并关联要使用部署功能的仓库。

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

四、流水线配置

在完成 制品库主机组主机后,此处以构建一个 Golang 版本的 HTTP Web Server 程序为例,在仓库中创建流水线。具体流水线业务内容如下:

通过流水线构建服务端程序,并部署到目标机器部署,程序通过 8080 端口提供 web 服务,访问时输出 “Hello, Gitee Go” 的内容。在部署启动成功后通过 curl 检测服务启动情况。

注:为保证流水线构建顺利完整,案例中将程序源码通过 Shell 输出到 CI 环境中,默认情况下 CI 的 Shell 起点就是 仓库的根(即自动完成 git clone xxxx && cd xxxx 的操作)

# ========================================================
# Golang 构建参考流水线样例
# 功能:构建一个简单的 Go 程序并编译不同操作系统下的可执行环境
# ========================================================
name: gitee-go-golang-example              # 定义一个唯一 ID 标识为 gitee-go-golang-example,名称为 “Golang-流水线示例” 的流水线
displayName: 'Golang-流水线示例'               
triggers:                                  # 流水线触发器配置
  push:                                    # 设置 master 分支 在产生代码 push 时精确触发(PRECISE)构建
    - matchType: PRECISE
      branch: master
commitMessage: ''                          # 通过匹配当前提交的 CommitMessage 决定是否执行流水线
stages:                                    # 构建阶段配置
  - stage:                                 # 定义一个 ID 标识为 golang-build-stage,名为 “Golang Stage” 的阶段
      name: golang-build-stage
      displayName: 'Golang Stage'
      failFast: false                      # 允许快速失败,即当 Stage 中有任务失败时,直接结束整个 Stage
      steps:                               # 构建步骤配置
        - step: golangbuild@1              # 采用 Golang 编译环境
          name: golang-build               # 定义一个 ID 标识为 golang-build ,名为 “Golang Step” 的阶段
          displayName: 'Golang Step'
          inputs:                          # 构建输入参数设定
            golangVersion: 1.13            # 指定 Golang 环境版本为 1.13
            goals: |                       # 示例脚本:创建并编译构建一个命令行输出 “Hello, Gitee Go” 的程序
              echo 'package main'                                                | tee -a main.go
              echo 'import ('                                                    | tee -a main.go
              echo '    "net/http"'                                              | tee -a main.go
              echo '    "fmt"'                                                   | tee -a main.go
              echo '    "log"'                                                   | tee -a main.go
              echo ')'                                                           | tee -a main.go
              echo 'func myHandler(w http.ResponseWriter, r *http.Request) {'    | tee -a main.go
              echo '    fmt.Fprintf(w, "“Hello, Gitee Go!\n")'                   | tee -a main.go
              echo '}'                                                           | tee -a main.go
              echo 'func main(){'                                                | tee -a main.go
              echo '    http.HandleFunc("/", myHandler)'                         | tee -a main.go
              echo '    log.Fatal(http.ListenAndServe(":8080", nil))'            | tee -a main.go
              echo '}'                                                           | tee -a main.go
              mkdir output
              GOOS=linux GOARCH=amd64 go build -o output/server.amd64 main.go
            uploadArtifact: true                              # 开启上传构建物选项
            uploadArtifactOptions:                            # 构建物参数
              artifactPath: 'output'                           # 要打包的构建物所在目录
              artifactRepository: 'compiled-artifact'         # 制品库名称
              artifactName: 'server'
        - step: agent-deploy@1                                # 定义通过 SA 部署插件
          name: deploy                                        # Step 唯一标识
          dependsOn: golang-build
          displayName: '部署发布'                              # Step 显示名称
          inputs:                                             # Step 入参
            hostGroupID: 'backend-server'                     # 指定部署主机组ID
            minComplicating: 0                                # 允许的最小并发部署数量
            maxComplicating: 2                                # 允许的最大并发部署数量
            deployArtifact:                                   # 上传的制品项
              - name: 'php-index'                             # 上传部署的制品名(仅作为显示,无具体作用,允许重复)
                source: build@golang-build-stage/golang-build # 部署制品文件引用自上游流水线 Stage/Step 的制品
                artifactRepository: 'compiled-artifact'       # 当制品引用自流水线,此参数可忽略
                artifactName: 'server'                        # 当制品引用自流水线,此参数可忽略
                target: /data                                 # 目标机器制品上传目录
                isForce: true                                 # 当目标存在时是否强制覆盖,默认为 true,可选
            script: |                                         # 部署脚本,到目标机器制品上传目录解压并启动构建程序,并通过curl检测
              cd /data
              ls
              tar -zxf server.tar.gz
              cd output
              chmod +x ./server.amd64
              nohup ./server.amd64 & 
              echo "Deploy Success"
              curl 127.0.0.1:8080

五、触发构建部署效果

通过向仓库提交代码即可触发流水线构建,流水线的构建效果如下:

构建环节

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

部署环节

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客

通过浏览器访问对应目标机器服务效果,如果顺利的话可以看到主机的 8080 端口可以访问并得到一个「Hello there!」的内容

基于 Gitee Go 的 Golang 持续集成部署体验-Gitee 官方博客