releng: workaround awscli breaking garage by changing checksum algo

We use https://garagehq.deuxfleurs.fr for https://docs.lix.systems,
https://releases.lix.systems, https://cache.lix.systems. It's generally
great, but AWS doesn't, erm, care, about other implementations and broke
their client library.

We already ran into
https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/824, which was
mitigated by a garage upgrade to create a new error. These bugs were
what got us:
- https://github.com/boto/boto3/issues/4392
- https://github.com/aws/aws-cli/issues/9214

Error:
upload failed: release/manual/.nojekyll to s3://docs/manual/lix/nightly/.nojekyll An error occurred (InvalidRequest) when calling the PutObject operation: Bad request: invalid checksum algorithm

The missing checksum algorithm is CRC32NVME, with a bug filed here:
https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/963

Change-Id: Ib78a89034bf0f2a6773fc505a347b2aadb775e93
This commit is contained in:
Jade Lovelace
2025-03-13 15:08:43 -07:00
parent a4514e44f8
commit 0f4c5b3b8a
+6 -3
View File
@@ -32,6 +32,9 @@ RELENG_MSG = "Release created with releng/create_release.xsh"
BUILD_CORES = 16
MAX_JOBS = 2
# Workaround for bug in garage: https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/963
S3_ARGS = ['--checksum-algorithm=SHA256']
def setup_creds(env: RelengEnvironment):
key = keys.get_ephemeral_key(env)
@@ -237,7 +240,7 @@ def upload_artifacts(env: RelengEnvironment, noconfirm=False, no_check_git=False
docker.upload_docker_images(target, docker_images)
print('[+] Upload to release bucket')
aws s3 cp --recursive @(ARTIFACTS)/ @(env.releases_bucket)/
aws s3 cp @(S3_ARGS) --recursive @(ARTIFACTS)/ @(env.releases_bucket)/
print('[+] Upload manual')
upload_manual(env)
@@ -284,9 +287,9 @@ def upload_manual(env: RelengEnvironment):
version = 'nightly'
print('[+] aws s3 sync manual')
aws s3 sync --delete @(MANUAL)/ @(env.docs_bucket)/manual/lix/@(version)/
aws s3 sync @(S3_ARGS) --delete @(MANUAL)/ @(env.docs_bucket)/manual/lix/@(version)/
if OFFICIAL_RELEASE:
aws s3 sync --delete @(MANUAL)/ @(env.docs_bucket)/manual/lix/stable/
aws s3 sync @(S3_ARGS) --delete @(MANUAL)/ @(env.docs_bucket)/manual/lix/stable/
def build_artifacts(build_profile, no_check_git=False):