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 (...
Centos7卸载docker环境
死所有运行容器1# docker kill $(docker ps -a -q) 删除所有容器1# docker rm $(docker ps -a -q) 删除所有镜像1# docker rmi $(docker images -q) 停止 docker 服务1# systemctl stop docker 删除存储目录1234# rm -rf /etc/docker# rm -rf /run/docker# rm -rf /var/lib/dockershim# rm -rf /var/lib/docker 如果发现删除不掉,需要先 umount,如 1# umount /var/lib/docker/devicemapper 卸载 docker 查看已安装的 docker 包 1# yum list installed | grep docker 卸载相关包12345# yum –y remove docker-buildx-plugin.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-roo...
几种修改docker默认存储位置的方法
转自:https://blog.csdn.net/BigData_Mining/article/details/104921479 需求 docker容器存放目录磁盘空间满了,需要转移数据,修改Docker默认存储位置 解决方法方法1:迁移到新目录 停止docker服务。 1systemctl stop docker; //每个liunx版本的命令不一样。 创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/home目录下面,我的/home目录大小有900G。 我在 /home目录下面建了/home/work/docker_root目录,执行的命令是: 1mkdir -p /home/work/docker_root 迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面 1cp -R /var/lib/docker/* /home/work/docker_root 注意:如果文件内容很...
低版本Docker升级高版本Docker
摘自:https://blog.csdn.net/weixin_46152207/article/details/127533584 在升级前确定几个重点:原配置文件备份一下123456789101112131415161718192021222324252627282930313233343536373839404142[root@localhost ~]# cat /usr/lib/systemd/system/docker.service [Unit]Description=Docker Application Container EngineDocumentation=http://docs.docker.comAfter=network.targetWants=docker-storage-setup.serviceRequires=docker-cleanup.timer[Service]Type=notifyNotifyAccess=mainEnvironmentFile=-/run/containers/registries.confEnvironmentFile...
使用kubeconfig或token进行用户身份认证
参考:https://jimmysong.io/kubernetes-handbook/guide/auth-with-kubeconfig-or-token.html 在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式,在 dashboard 的登录功能就可以使用这两种登录功能。 下文分两块以示例的方式来讲解两种登陆认证方式: 为 brand 命名空间下的 brand 用户创建 kubeconfig 文件 为集群的管理员(拥有所有命名空间的 amdin 权限)创建 token 使用 kubeconfig 方式如何生成kubeconfig文件请参考创建用户认证授权的kubeconfig文件。 注意我们生成的 kubeconfig 文件中没有 token 字段,需要手动添加该字段。 比如我们为 brand namespace 下的 brand 用户生成了名为 brand.kubeconfig 的 kubeconfig 文件,还要再该文件中追加一行 token 的...
记录一次k8s网络DNS问题排查过程
问题1: k8s环境下,服务使用node:xxx-alpine镜像,服务间访问报错: getaddrinfo EAI_AGAIN问题2: 非alpine镜像, 使用clusterip访问频繁出现超时问题: connect ECONNRESET,read ECONNRESET还有服务本身axios报的timeout问题3: 非alpine镜像, 使用dns访问报错: getaddrinfo ENOTFOUND 详细背景见: https://github.com/k3s-io/k3s/issues/5897 问题4: coreDns报错出现error: [ERROR] plugin/errors: 2 . NS: read udp 10.42.2.5:38764->183.60.82.98:53: i/o timeout[DONE]记录问题解决过程问题1问题排查/解决过程 现象1: 问题发生在流量高峰阶段 现象2: 压测tps,200线程仅30多每秒, 吞吐量极差 现象3: 是偶尔性的, 200线程50次仅发现十几条这样的报错日志 原因描述(...
Docker Buildx
前言Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持 Moby BuildKit 提供的功能。提供了与 docker build 相同的用户体验,并增加了许多新功能。 该功能仅适用于 Docker v19.03+ 版本 BuildKitBuildKit 是下一代的镜像构建组件,在 https://github.com/moby/buildkit 开源。 注意:如果您的镜像构建使用的是云服务商提供的镜像构建服务(腾讯云容器服务、阿里云容器服务等),由于上述服务提供商的 Docker 版本低于 18.09,BuildKit 无法使用,将造成镜像构建失败。建议使用 BuildKit 构建镜像时使用一个新的 Dockerfile 文件(例如 Dockerfile.buildkit) 目前,Docker Hub 自动构建已经支持 buildkit,具体参考 https://github.com/docker-practice/docker-hub-buildx Dockerfile 新增指令详解启用 BuildKit 之后,我们可以使用...
docker-compose控制多个容器启动的优先级
docker-compose.yaml中healthcheck配置项作用:可用于检查容器是否正常运行,初始状态为starting,最后一次检查完成后显示sucess或者unhealthy,以下是命令执行返回的状态对应容器状态0:状态是sucess,容器正常运行1:状态是unhealthy,容器非正常运行2:忽略执行命令的状态包含healthcheck的docker-compose文件 12345678910111213141516171819202122version: "3.7" #docker compose的版本services: tomcat: image: tomcat:v10.0.7 ports: - 18080:8080 # 暴露端口信息 - "宿主机端口:容器暴露端口" container_name: tomcat_test #设置启动容器的名称,若不设置会默认生成一个 links: - mysql:db #指定关联的容器 mysql: image: ...
WSL2 开发环境配置指南:高效整合 IDEA、Go、Node.js 等工具
引言Windows Subsystem for Linux (WSL) 彻底改变了 Windows 用户的开发体验,特别是 WSL2 版本,它通过完整的 Linux 内核提供了接近原生的性能和兼容性。这使得开发者可以在熟悉的 Windows 系统上,无缝地利用 Linux 强大的生态系统和命令行工具。 本指南旨在提供一个全面的 WSL2 开发环境配置手册,帮助你高效地整合 IntelliJ IDEA、Go、Node.js、Git、Maven 等常用工具,并解决网络代理等常见问题,从而搭建一个流畅、高效的开发工作流。 重要提示:现代版本的 IntelliJ IDEA (2022.3+), GoLand, 和其他 JetBrains IDE 已经内置了对 WSL2 的无缝远程开发支持。推荐优先使用 IDE 自带的 WSL 远程功能,它比手动配置更简单、稳定,且能避免许多潜在的兼容性问题。 一、IntelliJ IDEA 与 WSL2 深度整合1.1 将 WSL 设置为默认终端要在 IDEA 中直接使用强大的 Linux 终端,可以按以下步骤操作: 打开 File -> S...
