【Jenkins】简单的项目自动化部署

Jenkins 官网:Jenkins
Jenkins 使用文档: 创建您的第一个Pipeline
WeChat5ee45fda42f178c4d1f81871282d78ad.jpg

基础概念

什么是CI:

CI (Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
image.png

什么是CD:

CD (Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
image.png

Jenkins的三种构建方式

jenkins有三种构建方式:

  • 触发式构建:用于开发环境部署,开发人员可以 **push **代码或者合并代码到 gitlab 项目的 master 分支上,jenkins就部署代码到对应服务器;
  • 参数化构建:用于测试环境或者预上线环境部署,只需要在jenkins的界面传入对应参数即可执行部署;
  • 定时构建:在参数化基础上添加,可以每天定时打包;

Jenkins进行项目构建和发布(触发式构建)

Jenkins是一个强大的CI工具,虽然本身使用Java开发,但也能用来做其他语言开发的项目CI。下面讲解如何使用Jenkins创建一个构建任务。

Gitlab 添加 Jenkins 服务器公钥

Jenkins 服务器(用户):生成公钥放到 Gitlab 中;拉取代码可以通过 ssh 免密拉取;
测试环境(部署项目服务器):生成公钥放到 Gitlab 中;拉取代码可以通过 ssh 免密拉取;

Jenkins or 测试服务器没有bash;
1
2
3
4
[root@xjr-pc]# grep jenkins /etc/passwd
jenkins:x:982:976:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@xjr-pc]# usermod -s /bin/bash jenkins
[root@xjr-pc]# grep jenkins /etc/passwd

生成对应用户的公钥
1
2
3
4
5
6
7
# Jenkins 公钥
jenkins@xjr-pc:/$ ssh-keygen -t rsa
jenkins@xjr-pc:/$ cat ~/.ssh/id_rsa.pub

# 测试环境服务器 Root 公钥 (因为要用用这个用户部署项目)
root@xjr-pc:~/.ssh# ssh-keygen -t rsa
root@xjr-pc:~/.ssh# cat ~/.ssh/id_rsa.pub

Gitlab服务器部署

image.png

创建认证凭证

根据不同的需求可以创建不同的凭证
image.png

创建触发式任务

image.png

配置项目源码管理(Git)

WeChat4a96aabb4febce52c3678cbab7ab444e.jpg

设定触发条件

(这些选择的是通过 webhook 触发构建)
image.png
GitLab 中配置触发条件(webhook
image.png

项目构建

image.png

0%