DevOps 是一种软件开发和运维的文化、实践和方法论,旨在通过加强开发团队和运维团队之间的合作和沟通,实现快速、高效、可靠的软件交付和运维。DevOps 是由 Development(开发)和 Operations(运维)两个单词组合而成的缩写。
DevOps 的目标是通过实现上述实践和原则,缩短软件交付周期、提高交付频率、降低故障率、加强团队合作,从而实现更快速、更灵活、更可靠的软件开发和运维。
DevOps的核心在于CI/CD,实现自动化集成CI能帮助程序员极大减少在开发打包,构建,测试的时间。
Jenkins是一个自动化服务器,是比较成熟的CI工具(也可以CD)能够实现自动化集成发布。
特点:
- 开源免费
- 多平台支持(windows/linux/macos)
- 主从分布式架构
- 提供web可视化配置管理页面
- 安装配置简单
- 插件资源丰富
Jenkins
Jenkins由java语言开发因此,需要JRE环境。
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
的书写。
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
表示任务的步骤,每个步骤内部就是一个单独的命令。
agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集,所有的Pipeline都需要 agent 指令。agent可以被多种方式定义,这里一般用docker,当执行Pipeline时,Jenkins将会自动运行指定的容器,并执行Pipeline中已经定义好的步骤steps。
另外pipeline
中也可以使用环境变量
,如下:
environment {
DISABLE_AUTH = 'true'
DB_ENGINE = 'sqlite'
}
编写Jenkinsfile
:
选择Manage
:
选择Plugins
:
选择Available plugins
:
安装如下插件
权限不足错误:
# 添加jenkins用户到用户组
sudo usermod -a -G docker jenkins
# 修改/var/run/docker.sock文件的权限
cd /var/run
chmod 777 docker.sock
写完pipline让jenkins构建即可。
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中,构建自动化的一般步骤:
-
安装
gitlab-runner
,runner是实现CI/CD的关键,安装完runner配置gitlab连接,实现gitlab仓库与runner的连接,runner可以部署在任何服务器上。 -
编写
.gitlab-ci.yml
文件,在项目的根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的各个阶段(如构建、测试、部署)以及相应的任务。runner就可以安装yml定义的步骤构建任务。 -
git commit每次自动提交会自动出发Pipeline的执行任务。