一段时间以来,我一直在努力将(主要是 PHP)网站部署为 .deb 文件,并想知道是否有比我相当复杂的方法更好的方法。我的目标是在我的临时服务器上进行持续集成,并从 Jenkins 内一键部署到实时服务器。
我现在的用例:
- 在 OSX 上开发代码
- Git 中的版本控制
- 源包含带有控制、postinst 和 prerm 脚本的 debian/ 文件夹
- Phing 构建脚本在 fakeroot 环境中本地运行
- 将文件复制到镜像文件系统布局的 /tmp 构建文件夹中
- 根据需要将文件所有权设置为 root / www-data
- 运行 dpkg-deb --build ${build.dir} ${working.dir}
- 将包复制到我 LAN 上的私有 deb 存储库
我试图设置一个 Jenkins CI 服务器来观察 Git 存储库的提交并自动执行构建。问题是 Jenkins 以自己的用户身份运行,该用户无权设置上述文件权限。我也看不到在 Jenkins 内部的 fakeroot 环境中运行 Phing 构建的明显方法。
我的问题是:
- 有没有更好的方法来设置正确的文件所有权和权限,而不必将所有内容复制到临时目录并使用 Phing 步骤来修改所有内容?
- dpkg-deb 命令真的需要事先在文件系统上设置所有文件权限吗?在安装 .deb 时,我可以在 debian/ 文件夹中放入一些可以设置这些权限的东西吗?
- 如何让 Jenkins 运行具有设置文件所有权的正确权限的构建脚本?
我可能误解了 .debs 是如何工作的,但是本地文件系统源代码上的文件所有权必须镜像目标似乎相当不方便!
我对人们用来执行类似任务的任何其他构建和 CI 系统的建议持开放态度。