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
Libérer: 2024-02-06 11:30:03
avant
643 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal