使用Jenkins自动发布django项目
前面介绍过django项目在Ubuntu上的手动部署,这里介绍一下通过Jenkins自动发布django项目。
Jenkins准备
先检查一下当前环境有没有安装jdk,如果没有就安装一下:
如果下载很慢,可以到software & update这个应用中更新一下镜像源:
更新镜像源的设置位置:
更换源后会自动提醒是否需要更新软件,最好是选择更新。
更新资源后,安装openjdk就比较快了:
安装完成后通过常用的java、javac、java -version三个命令检查一下java环境:
接下来就是下载并安装Jenkins:
使用的命令如下:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
如果以前没安装过curl,可以通过apt-get命令安装一下。
安装Jenkins基本就是按照官方给出的方式进行安装的,官方安装文档地址:
https://pkg.jenkins.io/debian-stable/
安装成功后,可能会启动失败,或者无法打开登录页面,比如这样:
这是因为有个官方的地址访问失败了。只要修改这个文件中的一个地址就可以:
修改成这样:
我使用的是国内的清华大学的镜像地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
更新地址后重启一下Jenkins:
访问最初登录页面成功:
这个管理员密码可以到控制台的启动日志中查,也可以直接查看这个文件,里面会记录初始管理员密码:
通过密码登录后,就是一些Jenkins初始化的插件安装选择,如果你是照着官方给的安装方式进行安装的,又切换了国内的镜像源,这里的插件应该是能够下载成功的。
如果遇到某些插件安装失败了,没有关系,可以先跳过,进入Jenkins内部去手动安装或者找找安装失败的原因,解决问题后再安装。比较常遇到的安装插件失败原因可能是:
- Jenkins版本低了。
- 使用了国外的镜像源。
成功后就进入Jenkins的dashboard页面了:
创建部署django项目的任务
先要设置github(根据实际使用,也可以是gitlab),到github中通过这个路径:头像→Settings→Developer settings→Personal access tokens→Generate new token,勾选以下内容:
点击底部的generate toke,会生成一个token,找个地方记录一下,避免丢失或者忘记。
以前好像是可以用账户名、密码git fetch代码的,但是现在我尝试了几次,都失败告终,后来换token才能正常拉取代码。
回Jenkins去建新任务:
选择freestyle project就可以:
在general中选择GitHub项目,并填入项目地址:
在源码管理中这样设置:
项目源码拉取地址就不用说了,证书类型选择username with password类型,但是密码里面别填github的登录密码,需要填前面获取的token。还有要注意分支名称,如果分支不存在也会导致拉取失败。
如果你的网络不好,可能会遇到即使填的证书和地址都是正确的,但是还是显示访问失败,可以手动访问一下github,看当前是否可以正常访问。
遇到网络不好,拉取代码很慢的时候,可以设置一个拉取代码的超时时间:
构建环境中这样设置一下:
变量中填的还是前面那个token。
然后就是构建:
这里是在拉取完代码后输出一个文本,提示代码拉取完成。然后给脚本添加权限后执行。
脚本内容:
# 关闭当前正在执行的django,如果有很多django再执行,可以再加端口进行过滤
ps -aux | grep python|xargs kill -9
# 后台执行django项目,这样Jenkins的任务就可以顺利完成,避免Jenkins任务一直被
nohup python3 manage.py runserver 0.0.0.0:1234 >django_log.out 2>&1 &
第一次构建的时候,可能会遇到一些模块没有的现象,可以在构建中加入pip install xxxx的命令,install成功过一次后就可以删除这些pip install的命令了。
保存配置后,应该可以正常构建这个任务了:
尝试去访问部署的django项目:
配置自动触发django任务构建
先到github的目标工程中设置github webhooks:
回Jenkins设置一下GitHub servers,入口在Manage Jenkins菜单里面:
找到github server配置部分,按照要求进行配置:
其中新增凭证的时候选择secret text,就可以使用前面得到的github token了。
配置完以后测试一下链接,有这个提示就表示成功:
进入前面创建的任务设置页面:
如果你的Jenkins处于可以被github访问到的机器中,这个时候已经可以自动触发构建了。但是我比较穷,玩的虚拟机,局域网ip无法被github访问到,所以这里就不演示自动触发效果了。
总结
虽然第一次配置Jenkins项目总是会遇到各种各样的坑,例如github拉取失败、找不到模块、没有权限等等。但是一旦配置完成,还是非常方便的。现在软件开发应该都会使用Jenkins或者类似功能的工具,所以作为一个软件技术从业人员,学习一下Jenkins的操作,还是挺有用处的。
相关文章
- SQL Server导出表结构和数据(sql导出表结构和表数据)
- 告别单证积压!一套系统打破信息孤岛,电子化存证一键溯源!
- 速看!SQL server数据库日志文件过大怎么办?
- 云计算实战:数据备份(如何实现数据云备份)
- SQLServer收缩日志文件(sqlserver收缩日志文件是什么意思)
- RDS sql server使用DTS进行数据库迁移,同阿里云RDS进行数据库迁移
- 如何轻松搞定SAP HANA数据库备份?
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 超详细的SqlServer数据库触发器总结
- Acronis Backup (Advanced)使用示例:备份与恢复(一)