一、Jenkins 是啥?
Jenkins 就是一个自动帮你干活 的工具,专门用来持续集成 (CI)和持续交付/部署 (CD)。
它用 Java 写的,装起来很简单,下载一个 jenkins.war 文件就能跑,不用装数据库。
它可以自动从 Git、SVN 这类代码仓库拉代码,然后编译、测试、打包、甚至部署到服务器上。
出了问题会发邮件提醒,还能用图表展示构建情况。
二、啥是 CI / CD?
-
持续集成(CI):开发人员一天多次把代码提交到主干,Jenkins 自动拉代码、编译、测试。这样能早点发现冲突和错误,避免最后集成时乱成一锅粥。
-
持续交付(CD):在 CI 的基础上,自动把代码部署到"类生产环境"(比如测试服务器),随时可以手动发布到生产。
-
持续部署(CD) :更近一步,代码通过测试后自动部署到生产环境,不用人工点按钮。
简单说:CI 解决"代码能不能合到一起",CD 解决"代码能不能随时上线"。
三、怎么安装 Jenkins(以 OpenEuler 系统为例)
-
添加安装源:下载 Jenkins 的 repo 文件,导入密钥。
-
安装 :先装
fontconfig和java-17-openjdk,再装jenkins。 -
启动后访问 :浏览器打开 Jenkins,第一次登录需要从服务器上找初始密码(命令
cat /var/lib/jenkins/secrets/initialAdminPassword)。 -
初始化设置:安装推荐插件、创建管理员账号、配置实例地址。
-
改密码、装插件:登录后可以改密码,按需安装插件,比如:
-
Publish Over SSH:通过 SSH 把文件发到远程服务器。
-
Maven Integration:支持 Maven 项目构建。
-
-
调整配置:设置 Jenkins 同时跑几个任务、配置邮件通知等。
四、一句话总结
这份文档就是教你从零搭一个 Jenkins 自动构建环境,让代码一提交就自动编译、测试、打包,还能自动发到服务器,省得手动折腾。适合想要提高开发效率和发布质量的团队。
PHP
1. 准备工作(环境)
-
有几台机器:Git 服务器 (放代码)、Jenkins 服务器 (负责自动发布)、Web 服务器(跑网站)。
-
需要先装好 Git、Jenkins、Web 环境(比如 Nginx + PHP + MySQL)。
2. 搭建 Git 仓库
-
在 Git 服务器上新建一个用户
git,然后建一个"裸仓库"(就是一个专门用来存代码版本、不干活的地方)。 -
开发人员把写好的 PHP 代码(比如
index.php)上传到这个仓库里。
3. 配置 Web 服务器
-
安装 Nginx(或 Apache)+ PHP + MySQL + PHP-FPM。
-
修改 Nginx 配置文件,让它能处理
.php文件。 -
启动服务,测试一下能正常访问 PHP 页面。
4. Jenkins 免密登录
-
在 Jenkins 机器上生成 SSH 密钥(公钥+私钥)。
-
把公钥复制到 Git 服务器和 Web 服务器上,这样 Jenkins 不用输密码就能拉代码、推代码。
5. 几种自动部署方式
方式一:用 rsync 同步(自由风格项目)
-
在 Jenkins 里新建一个"自由风格"任务。
-
配置 Git 仓库地址,让 Jenkins 去拉代码。
-
构建步骤里写
rsync命令,把拉下来的代码同步到 Web 服务器的网站目录。 -
点"立即构建",Jenkins 就会自动完成拉代码+同步。
方式二:用 Ansible 部署
-
在 Jenkins 机器上装 Ansible,配置好 Web 服务器的 IP(比如
[webserver]组)。 -
把 Jenkins 运行用户改成
root(避免权限问题),并配好 SSH 免密。 -
安装 Jenkins 的 Ansible 插件。
-
在 Jenkins 任务里调用 Ansible 命令或 playbook,把代码部署到 Web 服务器。
方式三:用 Pipeline(流水线)
-
写一个
Jenkinsfile,里面定义两个阶段:-
拉代码 :用
git从仓库克隆代码。 -
部署 :用
scp命令把代码复制到 Web 服务器上。
-
-
Jenkins 按这个脚本自动执行,成功或失败都会有提示。
6. 最后顺便提了一下 Discuz 论坛的部署
- 文档里只写了个标题,内容没展开,意思是可以把 Discuz(一个 PHP 论坛程序)也按同样方式自动部署。
总结一句话
让 Jenkins 自动从 Git 拉取 PHP 代码,然后通过 rsync、Ansible 或 scp 把它发到 Web 服务器上,省得每次手动上传。 前提是先把 SSH 免密登录配好,Web 环境也要提前装好。