DevOps与CI/CD简介

DevOps 是一种软件开发和运维的文化、实践和方法论,旨在通过加强开发团队和运维团队之间的合作和沟通,实现快速、高效、可靠的软件交付和运维。DevOps 是由 Development(开发)和 Operations(运维)两个单词组合而成的缩写。

DevOps 的目标是通过实现上述实践和原则,缩短软件交付周期、提高交付频率、降低故障率、加强团队合作,从而实现更快速、更灵活、更可靠的软件开发和运维。

DevOps的核心在于CI/CD,实现自动化集成CI能帮助程序员极大减少在开发打包,构建,测试的时间。

Jenkins是一个自动化服务器,是比较成熟的CI工具(也可以CD)能够实现自动化集成发布。

特点:

  • 开源免费
  • 多平台支持(windows/linux/macos)
  • 主从分布式架构
  • 提供web可视化配置管理页面
  • 安装配置简单
  • 插件资源丰富

Jenkins

jenkins中文文档

Jenkins由java语言开发因此,需要JRE环境。

shell 复制代码
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

安装成功后jenkins会自动启动,如果没有启动可能是端口被占用了因为jenkins默认使用8080端口为常用端口。

修改/etc/init.d/jenkins文件 修改HTTP_PORT=8080为其他未被占用的端口即可,如下:

其他系统的暗账请参考官网安装Jenkins

除了docker,系统上安装jenkins还支持web一件应用,直接通过启动web服务完成,直接下载jebkins.war,使用web容器运行。jenkins是由java语言写的,在任何存在jre和jdk的环境都可以启动。

运行jenkin服务:java -jar jenkins.war --httpPort=8080

打开浏览器进入链接 http://localhost:8080.

根据提示查看密码:

安装组件:

自动安装组件

等待安装完成后创建用户


设置完成登录

进入主页

Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中。pipeline的构建过程遵循的规则被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。

选择New Item,填写pipline名称,选择构建的任务类型,一般为Multibranch Pipeline

配置流水线,如下:

添加代码仓库,jenkins是从代码从库获取代码的

根据需要配置,配置完成后,jenkins就会获取代码并打包,如下:

但是我们可以看到jenkins自动从仓库获取了代码,但是由于没有Jenkinsfile没有构建流程。接下来学习Jenkinsfile的书写。

shell 复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'echo "Hello World"'
                sh '''
                    echo "Multiline shell steps works too"
                    ls -lah
                '''
            }
        }
    }
}

Pipelines 由多个步骤(step)组成,允许你构建、测试和部署应用。 Jenkins Pipeline 允许您使用一种简单的方式组合多个步骤, 以帮助您实现多种类型的自动化构建过程。pipeline表示一个Pipelines,agent表示运行的环境,stage一个任务,steps表示任务的步骤,每个步骤内部就是一个单独的命令。

更多移步Jenkins执行多个步骤(step)

agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集,所有的Pipeline都需要 agent 指令。agent可以被多种方式定义,这里一般用docker,当执行Pipeline时,Jenkins将会自动运行指定的容器,并执行Pipeline中已经定义好的步骤steps。

另外pipeline中也可以使用环境变量,如下:

shell 复制代码
environment {
    DISABLE_AUTH = 'true'
    DB_ENGINE    = 'sqlite'
}

编写Jenkinsfile:

stackoverflow

选择Manage:

选择Plugins:

选择Available plugins:

安装如下插件

权限不足错误:

shell 复制代码
# 添加jenkins用户到用户组
sudo usermod -a -G docker jenkins

# 修改/var/run/docker.sock文件的权限
cd /var/run
chmod 777 docker.sock

写完pipline让jenkins构建即可。

shell 复制代码
pipeline {
    agent {
        docker {
            image 'maven:latest'
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Run JAR') {
            steps {
                sh 'java -jar target/hellojava.jar'
            }
        }
    }
}

CI/CD

在gitlab CI/CD中,构建自动化的一般步骤:

  1. 安装gitlab-runner,runner是实现CI/CD的关键,安装完runner配置gitlab连接,实现gitlab仓库与runner的连接,runner可以部署在任何服务器上。

  2. 编写.gitlab-ci.yml文件,在项目的根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的各个阶段(如构建、测试、部署)以及相应的任务。runner就可以安装yml定义的步骤构建任务。

  3. git commit每次自动提交会自动出发Pipeline的执行任务。

相关推荐
2601_949847751 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906941 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
今天重构了吗2 小时前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
KaiwuDB2 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
codezzzsleep2 小时前
学术汇报 PPT 自动化生成实战指南
运维·自动化·powerpoint
古法老登瞎折腾2 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
讯捷蓝达3 小时前
IBM V3500存储 双控故障、数据怎么恢复?
运维
qq_谁赞成_谁反对4 小时前
甲方IT的成长之路--SG TCP网络优化工具--20261026
运维·服务器·udp·tcp
龙亘川5 小时前
适应人工智能发展、构建就业友好型发展方式
大数据·运维·人工智能·信息可视化·智慧城市
数据库小学妹5 小时前
OLAP数据库怎么选、怎么优化?路线、提速与边界
运维·数据库·后端