GitLab CI/CD 完全指南:从 Runner 安装到 Pipeline 实践
一、GitLab CI/CD 与 Runner 简介GitLab CI/CD 是 GitLab 内置的一套强大的持续集成、持续交付和持续部署工具。它通过项目根目录下的一个名为 .gitlab-ci.yml 的文件来定义和管理整个 CI/CD 流水线 (Pipeline)。 GitLab Runner 是执行 .gitlab-ci.yml 文件中定义任务(Jobs)的代理程序。它是一个独立的开源项目,可以安装在与 GitLab 实例不同的服务器上。Runner 接收来自 GitLab 的任务,在指定的环境中执行,并将结果(日志、产物等)回传给 GitLab。 二、安装 GitLab Runner官方推荐在独立的服务器上安装 GitLab Runner,以避免与 GitLab 实例争抢资源。不建议使用 Docker 或 Kubernetes 安装 Runner,因为这可能会给调用 docker, kubectl 等外部工具带来不便。 1. 使用官方仓库安装 (推荐)这是在主流 Linux 发行版上最简单的安装方式。 a. 添加 GitLab 官方仓库 1...
Jenkins 全方位指南:从入门到 CI/CD 实践
引言在现代软件开发实践中,持续集成和持续部署 (CI/CD) 是不可或缺的一环。Jenkins 作为开源 CI/CD 领域的领导者,以其强大的功能和灵活的扩展性,被广泛应用于自动化构建、测试和部署流程。本文将为您提供一份全面的 Jenkins 指南,从基本概念、安装部署,到核心的 Jenkinsfile 语法,再到与 GitLab/GitHub 的实战集成,帮助您快速掌握并应用 Jenkins 构建高效的自动化流水线。 同时,我们也会探讨 Jenkins 与另一个流行的 CI/CD 工具——GitLab CI 的差异,以帮助您在不同场景下做出更合适的选型。 GitLab CI vs. Jenkins:差异与选型在选择 CI/CD 工具时,了解不同工具的特点至关重要。 特性 GitLab CI Jenkins 集成度 与 GitLab 代码仓库深度集成,开箱即用。 独立于代码仓库,通过插件与各类平台(GitHub, GitLab, Bitbucket等)集成。 配置方式 基于 .gitlab-ci.yml 文件,语法...
SonarQube 全方位指南:从 Docker 安装到 CI/CD 集成
一、前言:为何需要 SonarQube?在现代软件开发中,代码质量是项目成功与否的关键因素之一。一个充满技术债、Bug 和安全漏洞的项目,不仅难以维护,更会随着时间的推移变得愈发脆弱。虽然优秀的程序员会努力编写高质量的代码,但完全依赖人的自觉性和经验是不可靠的。 SonarQube 是一个业界领先的开源平台,用于持续检查代码质量。它通过静态代码分析,可以检测出代码中的 Bug、漏洞 (Vulnerabilities) 和坏味道 (Code Smells),并提供详细的报告和改进建议。将 SonarQube 集成到 CI/CD 流水线中,可以建立起自动化的代码质量门禁,确保不合规的代码无法进入生产环境,从而持续提升团队的整体代码质量。 本指南将详细介绍如何使用 Docker 部署 SonarQube,并将其与 GitLab CI、Maven 等工具链集成。 二、使用 Docker 安装 SonarQube官方推荐使用 Docker 进行部署,方便快捷。 1. 版本选择SonarQube 提供多个版本,主要区别在于功能和支持的语言: Community Edition (...
在K8S中实现SpringBoot零宕机发布:滚动更新、优雅停机与弹性伸缩
引言在云原生时代,保证服务的稳定性和高可用性至关重要。本文将深入探讨如何结合 Kubernetes (K8s) 与 Spring Boot,实现零宕机发布。我们将覆盖以下核心主题: 健康检查:确保流量只被路由到健康的实例。 滚动更新:平滑地升级应用,不中断服务。 优雅停机:安全地关闭应用,避免数据丢失或请求失败。 弹性伸缩:根据负载自动调整实例数量。 Prometheus 监控:收集关键指标,洞察应用性能。 配置分离:实现镜像复用,提高交付效率。 参考资料: 微信公众号文章 Stack Overflow: Actuator health endpoint returns OUT_OF_SERVICE Spring Boot Actuator: Kubernetes Probes 1. 健康检查健康检查是实现零宕机发布的基础。K8s 通过就绪探针 (Readiness Probe) 和存活探针 (Liveness Probe) 来判断应用实例是否准备好接收流量或是否需要重启。 就绪探针 (Readiness): 告诉 K8s 应用是否准备好处理请求。如果失败,K8s...
