Github Actions Go lambda 项目不同的 sha256sums
我有 golang aws lambda 项目。我使用 terraform 脚本将其部署在 github actinos 上。 我有这样的情况: 构建#1
-rwxr-xr-x 1 runner docker 14717304 jan 1 2022 atest -rw-r--r-- 1 runner docker 7776780 jan 1 2022 atest.zip
我在某个文件中做了 1 处更改,该更改甚至未在任何其他文件中导入,并且 构建#2
-rwxr-xr-x 1 runner docker 14717304 jan 1 2022 atest -rw-r--r-- 1 runner docker 7776755 jan 1 2022 atest.zip
zip 大小已更改,但二进制文件未更改
这是我的 makefile 的重要部分
build: ## Build Linux binary with path consistent with passed functionction layere (layer) and functionction name (function) build: resolve-env @$(BUILD_FLAGS) ${GOCMD} build ${LDFLAGS} -o ${BINARY_PATH} ${GO_PKG} @touch -t 202201010000.00 ${BINARY_PATH} .PHONY: package package: build @cd ${DST} && ${ZIPCMD} -X -q --latest-time ${ABS_ZIP_PATH} ${function} @touch -t 202201010000.00 ${ABS_ZIP_PATH}
当我在本地进行相同的更改,并使用 terraform 或名为“act”的工具运行构建时,没有这样的更改..仅在 github actions 上。 我需要保持相同的大小,这会影响 sha256sum (以避免部署每个 lambda )。 可能是什么原因?
正确答案
这个答案重点关注 go 二进制文件的可重复构建。
虽然它显示 go 二进制文件具有相同的大小,但我怀疑内容是否不同。请首先检查二进制文件的哈希值以确认这一点。
要获得可重现的构建,除了其他明显的要求之外,您还需要:
- 确保 cgo 构建可重现(工具链、依赖项等),或禁用 cgo。您已经设置了
CGO_ENABLED=0
(此信息由另一个已删除的问题提供)。 - 使用
-trimpath
标志。也许 GitHub 操作总是将源代码放在同一目录中。为了安全起见,我们指定此选项。 - 设置
-buildvcs=false
。默认情况下(“自动”),版本控制信息将被标记到二进制文件中(如果可用)。这解释了为什么仅自述文件中存在差异的两次提交会产生不同的二进制文件。
参考文献:
以上是Github Actions Go lambda 项目不同的 sha256sums的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

OpenSSL,作为广泛应用于安全通信的开源库,提供了加密算法、密钥和证书管理等功能。然而,其历史版本中存在一些已知安全漏洞,其中一些危害极大。本文将重点介绍Debian系统中OpenSSL的常见漏洞及应对措施。DebianOpenSSL已知漏洞:OpenSSL曾出现过多个严重漏洞,例如:心脏出血漏洞(CVE-2014-0160):该漏洞影响OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻击者可利用此漏洞未经授权读取服务器上的敏感信息,包括加密密钥等。

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

后端学习路径:从前端转型到后端的探索之旅作为一名从前端开发转型的后端初学者,你已经有了nodejs的基础,...

本文讨论了通过go.mod,涵盖规范,更新和冲突解决方案管理GO模块依赖关系。它强调了最佳实践,例如语义版本控制和定期更新。

本文介绍在Debian系统下监控PostgreSQL数据库的多种方法和工具,助您全面掌握数据库性能监控。一、利用PostgreSQL内置监控视图PostgreSQL自身提供多个视图用于监控数据库活动:pg_stat_activity:实时展现数据库活动,包括连接、查询和事务等信息。pg_stat_replication:监控复制状态,尤其适用于流复制集群。pg_stat_database:提供数据库统计信息,例如数据库大小、事务提交/回滚次数等关键指标。二、借助日志分析工具pgBadg
