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的执行任务。

相关推荐
信创DevOps先锋4 分钟前
中国DevOps市场格局重塑:本土化与全球化技术的博弈与融合
运维·devops
亚远景aspice4 分钟前
亚远景-ISO 21434:汽车网络安全全生命周期风险管理的技术框架
运维·网络·安全
EasyGBS10 分钟前
国标GB28181视频分析平台EasyGBS视频质量诊断技术让监控从“能用”变“好用”
运维·人工智能·音视频
白鸽梦游指南11 分钟前
docker部署和常规使用方法
运维·docker·容器
Percep_gan10 小时前
Linux中安装Redis,很详细
linux·运维·redis
七七powerful10 小时前
运维养龙虾--AI 驱动的架构图革命:draw.io MCP 让运维画图效率提升 10 倍,使用codebuddy实战
运维·人工智能·draw.io
枕书10 小时前
实战记录:如何使用 Docker 一键部署长亭 PandaWiki 智能知识库
运维·docker·容器
Irene199111 小时前
什么是 DevOps
gitlab·devops
feng_you_ying_li11 小时前
linux之用户的权限详解(4)
linux·运维·服务器
TEC_INO14 小时前
嵌入式 Linux 开发知识总结
linux·运维·服务器