新在Symfo欧宝娱乐app下载地址ny:可再生的构建
2018年2月14日·发表的哈维尔Eguiluz
可再生的构建一组软件开发实践,创建“可核查的路径从人类可读的源代码,二进制代码所使用的计算机”。换句话说,如果你不改变源代码,编译结果应该是完全相同的。
解释在Symfony中更简单:如果你建立的容器和热身缓存相同的不变应用程序欧宝娱乐app下载地址多次,结果应该是一样的。
为什么重复构建重要?因为软件检查和审计是在源代码,但应用程序总是在设备上运行编译。如果构建是可再生的,可以编译源代码审计,并验证编译后的结果是完全一样的在一些设备上运行。多个政党可以重做这个过程独立,并确保他们都得到完全相同的结果,确保二进制代码来自给定的源代码。
在实践中,可再生的建立意味着编译过程必须完全确定的。编译后的代码不包含日期/时间值或随机生成的值。事实并非如此Symfony和它的一些主要第三方依赖像欧宝娱乐app下载地址独白和教义。
这需要一些Symfony应用程序编译方式的变化(我们所做的这些变化在3.4分欧宝娱乐app下载地址支,所以你不需要安装Symfony 4使用):
- 变量名不再是随机的(
函数(mt_rand(),真的),假)
)编制树枝模板(树枝# 2621) - 类名称为懒惰生成服务代理不再是随机的(
散列(sha256, spl_object_hash(定义)美元。$ this - >盐)
在Symf欧宝娱乐app下载地址ony容器(欧宝娱乐app下载地址symfony # 25978) - 独白包不再为它的一些服务(生成随机的id
monolog.gelf.publisher函数”。”,真的)
)(monolog-bundle # 248) - Symfony缓存组件的文件系统适配器现在non-expir欧宝娱乐app下载地址able项目独立于时间(一年才过期)(欧宝娱乐app下载地址symfony # 26127)
- Symfony编纂的容器使用构建datetime生成欧宝娱乐app下载地址独特的散列容器(它使用了一个简单的
时间()
调用)。现在这个时间是可配置的kernel.container_build_time
参数(欧宝娱乐app下载地址symfony # 26128)
工作使Symfony的构建可再生的欧宝娱乐app下载地址完成在Symfony的一面,但你可能仍面临一些问题在其他依赖项中常用Symfony应用。例如:
- APCu前缀由作曲家的优化自动装卸机不确定性(作曲家# 7049)
发表在#生活在边缘
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
和确定的属性名ProxyManager已经一件事如果你安装2.2版本(这需要PHP 7.2 +)。见https://github.com/Ocramius/ProxyManager/pull/385公关。讨论在他们一边似乎是他们不想补丁旧版本。
作曲家,有一种方法可以得到一个确定的构建:使用权威类地图优化APCu的自动装卸机,而不是一个。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now