Maison >développement back-end >Golang >Github Actions Go projet lambda différentes sommes sha256

Github Actions Go projet lambda différentes sommes sha256

WBOY
WBOYavant
2024-02-06 11:30:03646parcourir

Github Actions Go lambda 项目不同的 sha256sums

Contenu de la question

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?


Réponse correcte


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 :

  1. Assurez-vous que les builds cgo sont reproductibles (chaîne d'outils, dépendances, etc.) ou désactivez cgo. Vous l'avez déjà configuré CGO_ENABLED=0 (cette information a été fournie par une autre question supprimée).
  2. Utilisez le drapeau -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.
  3. Paramètres -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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer