J'ai un projet Golang AWS Lambda. Je l'ai déployé sur github actinos en utilisant le script terraform. J'ai une situation comme celle-ci : Construction n°1
-rwxr-xr-x 1 runner docker 14717304 jan 1 2022 atest -rw-r--r-- 1 runner docker 7776780 jan 1 2022 atest.zip
J'ai effectué 1 modification dans un fichier qui n'a même pas été importé dans un autre fichier, et Construction n°2
-rwxr-xr-x 1 runner docker 14717304 jan 1 2022 atest -rw-r--r-- 1 runner docker 7776755 jan 1 2022 atest.zip
la taille du zip a changé, mais pas le fichier binaire
C'est la partie importante de mon 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}
Lorsque j'effectue les mêmes modifications localement et que j'exécute la construction à l'aide de Terraform ou d'un outil appelé "act", il n'y a pas de changement de ce type... uniquement sur les actions github. Je dois conserver la même taille, ce qui affecte la somme sha256 (pour éviter de déployer chaque lambda ). Quelle pourrait être la raison?
Cette réponse se concentre sur les versions répétables de binaires go.
Bien que cela montre que les binaires go ont la même taille, je doute que le contenu soit différent. Veuillez d'abord vérifier le hachage du binaire pour le confirmer.
Pour obtenir un build reproductible, entre autres exigences évidentes, il vous faut :
CGO_ENABLED=0
(cette information a été fournie par une autre question supprimée). -trimpath
. Peut-être que l'action GitHub place toujours le code source dans le même répertoire. Pour des raisons de sécurité, nous précisons cette option. -buildvcs=false
. Par défaut (« auto ») les informations de contrôle de version seront marquées dans le binaire si elles sont disponibles. Cela explique pourquoi deux commits qui diffèrent uniquement dans le README produisent des binaires différents. Référence :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!