Devops+Jenkins+flask部署
一、DevOps简介
DevOps(英文Development和Operations是一组过程、方法与系统的统称,DevOps是一组最佳实践强调(开发、运维、测试)在应用和服务生命周期中的协作和沟通,强调整个组织的合作,以及交付和基础设施变更的自动化,从而实现持续集成、持续部署和持续交付。
1、什么是持续集成
持续集成是指开发人员在程序的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
- 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
- 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心
2、什么是持续交付
持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境。
3、什么是持续部署
在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的。
二、部署简介
一般网站部署的流程:
- 需求分析
- 原型设计
- 开发代码
- 内网部署
- 提交测试
- 确认上线
- 备份数据
- 外网更新
- 最终测试
三、部署流程
jenkins工具平台可以实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能,Jenkins非常易于安装和配置。
由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins。
1、安装java
sudo apt install openjdk-8-jdk
2、安装Jenkins
包含在默认Ubuntu软件包中的Jenkins版本往往落后于项目本身的最新版本。 为了利用最新的修复和功能,我们将使用项目维护的软件包来安装Jenkins。
首先,我们将存储库密钥添加到系统。
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
当这两个都到位时,我们将运行update
,以便apt-get
将使用新的存储库:
sudo apt-get update
最后,我们将安装Jenkins及其依赖项,包括Java:
sudo apt-get install jenkins
3、开始Jenkins
使用systemctl
我们将启动Jenkins:
sudo systemctl start jenkins
由于systemctl
不显示输出,我们将使用其status
命令来验证它是否成功启动:
sudo systemctl status jenkins
如果一切顺利,输出的开始应显示服务处于活动状态,并配置为启动时启动:
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
Active:active (exited) since Thu 2017-04-20 16:51:13 UTC; 2min 7s ago
Docs: man:systemd-sysv-generator(8)
4、设置Jenkins
要设置我们的安装,我们将使用服务器域名或IP地址访问Jenkins的默认端口8080
: http:// ip_address_or_domain_name :8080
默认端口是8080,有时候由于端口占用需要修改如下:
- 检查 /etc/init.d/jenkins 脚本,修改 do_start 函数的 check_tcp_port 命令,端口号从 8080 换成 8082:
- 修改 /etc/default/jenkins 文件,将端口 8080 改成 8082
HTTP_PORT=8082
- 重启Jenkins
sudo systemctl restart jenkins
我们应该看到“解锁Jenkins”屏幕,显示初始密码的位置
在终端窗口中,我们将使用cat
命令显示密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
我们将从终端复制32个字符的字母数字密码,并将其粘贴到“管理员密码”字段中,然后单击“继续”。 下一个屏幕提供安装建议的插件或选择特定插件的选项。
我们将点击“安装建议的插件”选项,这将立即开始安装过程:
安装完成后,系统将提示您设置第一个管理用户。 可以跳过此步骤,并使用上面使用的初始密码作为admin
继续,但是我们将花一点时间创建用户。
创建一个admin用户,密码自己定义
一旦第一个管理员用户到位,你应该看到一个“Jenkins准备好了!” 确认屏幕。
点击“开始使用Jenkins”来访问主要的Jenkins仪表板:
查看
[ubuntu@ip-172-31-43-146 ~]$ sudo netstat -plntu|grep java
tcp6 0 0 :::8080 :::* LISTEN 14788/java
此时,Jenkins已经成功运行。
四、创建项目
默认python3以及python的代码包已经在服务器上下载好了。
我们访问已经部署好的jenkins项目
1、新建item
选择freestyle project
点击确认之后我们可以看到如下界面
我们最需要关注的就是源码管理,以及环境的构建,暂且不管项目的配置。我们先看一下gitee或者github的配置。
2、gitee上的公私钥配置
源码管理方面我们是从gitee中拉取项目代码,如下图所示:
所以我们需要将公钥放在gitee中。
访问我的gitee点击个人设置,查看ssh公钥。我是之前就添加进来的一个公钥。
公私钥如何产生。我们要在我们搭建了jenkins的服务器上生成公私钥。
将公钥放在gitee上。
3、jenkins的项目配置
回到jenkins的项目配置页面
源码管理中输入我们的源码ssh的url地址,如图所示
添加凭证
然后发现我们的项目不红了
但是要填写这两个内容(否则项目不会工作)
这两个内容,我们用如下方式获取
点击保存,返回面板,我们部署一下项目尝试。
点击之后,我们查看工作空间,如下图,我们的项目部署成功。
部署失败的话,可以查看左侧的日志栏。
4、启动项目
配置启动脚本。
点击立即构建
访问页面。成功!
5、配置任务触发时间表达式
继续配置当前的项目
Jenkins 定时任务触发时间表达式 ,H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发)
6、修改项目代码
一旦修改项目,并push上去,jenkins就会每两分钟检查一次是否改变,如果改变就会触发构建!
如图所示。