Rumah >pembangunan bahagian belakang >Golang >Github Actions Go projek lambda sha256sum yang berbeza

Github Actions Go projek lambda sha256sum yang berbeza

WBOY
WBOYke hadapan
2024-02-06 11:30:03657semak imbas

Github Actions Go lambda 项目不同的 sha256sums

Isi soalan

Saya ada projek golang aws lambda. Saya menggunakannya pada github actinos menggunakan skrip terraform. Saya mempunyai situasi seperti ini: Binaan #1

-rwxr-xr-x  1 runner docker 14717304 jan  1  2022 atest
-rw-r--r--  1 runner docker  7776780 jan  1  2022 atest.zip

Saya membuat 1 perubahan dalam fail yang tidak diimport dalam mana-mana fail lain, dan Binaan #2

-rwxr-xr-x  1 runner docker 14717304 jan  1  2022 atest
-rw-r--r--  1 runner docker  7776755 jan  1  2022 atest.zip

saiz zip berubah, tetapi bukan fail binari

Ini adalah bahagian penting dalam makefile saya

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}

Apabila saya membuat perubahan yang sama secara setempat dan menjalankan binaan menggunakan terraform atau alat yang dipanggil "bertindak", tiada perubahan sedemikian..hanya pada tindakan github. Saya perlu mengekalkan saiz yang sama, yang mempengaruhi sha256sum (untuk mengelakkan penggunaan setiap lambda ). Apakah sebabnya?


Jawapan Betul


Jawapan ini memfokuskan pada binari go yang boleh berulang.

Walaupun ia menunjukkan bahawa binari go mempunyai saiz yang sama, saya ragu-ragu kandungannya berbeza. Sila semak cincang binari terlebih dahulu untuk mengesahkan ini.

Untuk mendapatkan binaan yang boleh dihasilkan semula, antara keperluan lain yang jelas, anda perlukan:

  1. Pastikan binaan cgo boleh dihasilkan semula (rantai alat, kebergantungan, dll.), atau lumpuhkan cgo. Anda telah pun menyediakannya CGO_ENABLED=0 (maklumat ini diberikan oleh soalan lain yang dipadamkan).
  2. Gunakan bendera -trimpath. Mungkin tindakan GitHub sentiasa meletakkan kod sumber dalam direktori yang sama. Atas sebab keselamatan, kami menentukan pilihan ini.
  3. Tetapan-buildvcs=false. Secara lalai ("auto") maklumat kawalan versi akan ditag ke dalam binari jika tersedia. Ini menjelaskan mengapa dua komit yang berbeza hanya dalam README menghasilkan binari yang berbeza.

Rujukan:

Atas ialah kandungan terperinci Github Actions Go projek lambda sha256sum yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam