Skip to content

Commit 2b1ea0b

Browse files
authored
MONGOCRYPT-837 sign libmongocrypt-all.tar.gz (#1143)
Add a separate non-patchable `sign-all` task. The Garasign credentials are (by request) marked "Admin only" to reduce exposure during patches. * upload to same locations as libmongocrypt-all.tar.gz
1 parent e492cbd commit 2b1ea0b

1 file changed

Lines changed: 93 additions & 1 deletion

File tree

.evergreen/config.yml

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,97 @@ tasks:
947947
filenames:
948948
- libmongocrypt-all-${tag_upload_location!|*revision}.tar.gz
949949

950+
- name: sign-all
951+
patchable: false # Garasign credentials are marked as "Admin only" in Evergreen project. "Admin only" variables are not included in patch builds. To test a patch: temporarily unselect "Admin only".
952+
depends_on: upload-all
953+
commands:
954+
- func: "fetch source" # To get Earthfile.
955+
- command: s3.get
956+
params:
957+
role_arn: '${upload_arn}'
958+
remote_file: 'libmongocrypt/all/${branch_name}/${libmongocrypt_s3_suffix}/libmongocrypt-all.tar.gz'
959+
bucket: ${upload_bucket}
960+
local_file: 'libmongocrypt/libmongocrypt-all.tar.gz'
961+
- func: "earthly" # Sign tarball.
962+
vars:
963+
args: --secret garasign_username=${garasign_username} --secret garasign_password=${garasign_password} +sign --file_to_sign=libmongocrypt-all.tar.gz --output_file=libmongocrypt-all.asc --is_patch="${is_patch}"
964+
# Upload to same locations as libmongocrypt-all.tar.gz
965+
- command: shell.exec
966+
params:
967+
script: |-
968+
set -o errexit
969+
cd libmongocrypt
970+
if [ -n "${tag_upload_location}" ]; then
971+
# the "fetch source" step detected a release tag on HEAD, so we
972+
# prepare a local file for upload to a location based on the tag
973+
cp -a libmongocrypt-all.asc libmongocrypt-all-${tag_upload_location}.asc
974+
975+
if [[ "$tag_upload_location" = *-* ]]; then
976+
# Unstable release, like 1.1.0-beta1 or 1.0.1-rc0.
977+
mkdir unstable
978+
cp -a libmongocrypt-all.asc unstable/libmongocrypt-all-${tag_upload_location}.asc
979+
else
980+
mkdir stable
981+
cp -a libmongocrypt-all.asc stable/libmongocrypt-all-${tag_upload_location}.asc
982+
fi
983+
fi
984+
- command: s3.put
985+
params:
986+
role_arn: ${upload_arn}
987+
skip_existing: true
988+
remote_file: 'libmongocrypt/all/${branch_name}/${libmongocrypt_s3_suffix}/libmongocrypt-all.asc'
989+
bucket: ${upload_bucket}
990+
permissions: ${upload_permissions}
991+
visibility: ${upload_visibility}
992+
local_file: 'libmongocrypt/libmongocrypt-all.asc'
993+
content_type: 'application/pgp-signature'
994+
- command: s3.put
995+
params:
996+
role_arn: ${upload_arn}
997+
skip_existing: true
998+
remote_file: 'libmongocrypt/all/${branch_name}/${libmongocrypt_s3_suffix_copy}/libmongocrypt-all.asc'
999+
bucket: ${upload_bucket}
1000+
permissions: ${upload_permissions}
1001+
visibility: ${upload_visibility}
1002+
local_file: 'libmongocrypt/libmongocrypt-all.asc'
1003+
content_type: 'application/pgp-signature'
1004+
- command: s3.put
1005+
params:
1006+
role_arn: ${upload_arn}
1007+
skip_existing: true
1008+
remote_file: 'libmongocrypt/all/${tag_upload_location}/libmongocrypt-all.asc'
1009+
bucket: ${upload_bucket}
1010+
permissions: ${upload_permissions}
1011+
visibility: ${upload_visibility}
1012+
optional: true # Do not fail task if `local_file` does not exist. `local_file` only exists for tagged release.
1013+
display_name: 'libmongocrypt-all-${tag_upload_location}.asc'
1014+
local_file: 'libmongocrypt/libmongocrypt-all-${tag_upload_location}.asc'
1015+
content_type: 'application/pgp-signature'
1016+
- command: s3.put
1017+
params:
1018+
role_arn: ${upload_arn}
1019+
skip_existing: true
1020+
remote_file: 'libmongocrypt/all/latest/stable/libmongocrypt-all.asc'
1021+
bucket: ${upload_bucket}
1022+
permissions: ${upload_permissions}
1023+
visibility: ${upload_visibility}
1024+
optional: true # Do not fail task if `local_file` does not exist. `local_file` only exists for stable release.
1025+
display_name: 'stable/libmongocrypt-all-${tag_upload_location}.asc'
1026+
local_file: 'libmongocrypt/stable/libmongocrypt-all-${tag_upload_location}.asc'
1027+
content_type: 'application/pgp-signature'
1028+
- command: s3.put
1029+
params:
1030+
role_arn: ${upload_arn}
1031+
skip_existing: true
1032+
remote_file: 'libmongocrypt/all/latest/unstable/libmongocrypt-all.asc'
1033+
bucket: ${upload_bucket}
1034+
permissions: ${upload_permissions}
1035+
visibility: ${upload_visibility}
1036+
optional: true # Do not fail task if `local_file` does not exist. `local_file` only exists for unstable release.
1037+
display_name: 'unstable/libmongocrypt-all-${tag_upload_location}.asc'
1038+
local_file: 'libmongocrypt/unstable/libmongocrypt-all-${tag_upload_location}.asc'
1039+
content_type: 'application/pgp-signature'
1040+
9501041
- name: publish-packages
9511042
depends_on: build-packages
9521043
commands:
@@ -1775,10 +1866,11 @@ buildvariants:
17751866
- ubuntu2004-small
17761867
- name: publish
17771868
display_name: "Publish"
1778-
run_on: ubuntu1804-test
1869+
run_on: ubuntu2404-latest-small
17791870
tasks:
17801871
- name: "upload-java"
17811872
- name: "upload-all"
1873+
- name: "sign-all"
17821874
- name: packaging
17831875
display_name: "Linux Distro Packaging"
17841876
tasks: [.packaging]

0 commit comments

Comments
 (0)