Skip to content

Commit 5282cb0

Browse files
authored
CSHARP-5050: Sign release artifacts or tags with MongoDB-managed keys
1 parent 7b9f51e commit 5282cb0

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

evergreen/build-packages.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#!/usr/bin/env bash
22
set -o errexit # Exit the script with error if any of the commands fail
33

4+
# Environment variables used as input:
5+
# PACKAGE_VERSION
6+
47
if [ -z "$PACKAGE_VERSION" ]; then
58
PACKAGE_VERSION=$(bash ./evergreen/get-version.sh)
69
echo Calculated PACKAGE_VERSION value: "$PACKAGE_VERSION"
@@ -9,4 +12,4 @@ fi
912
echo Creating nuget package...
1013

1114
dotnet clean ./CSharpDriver.sln
12-
dotnet pack ./CSharpDriver.sln -o ./artifacts/nuget -c Release -p:Version="$PACKAGE_VERSION" --include-symbols -p:SymbolPackageFormat=snupkg -p:ContinuousIntegrationBuild=true
15+
dotnet pack ./CSharpDriver.sln -o ./artifacts/nuget -c Release -p:Version="$PACKAGE_VERSION" --include-symbols -p:SymbolPackageFormat=snupkg -p:ContinuousIntegrationBuild=true

evergreen/evergreen.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1008,12 +1008,29 @@ functions:
10081008
${PREPARE_SHELL}
10091009
. ./evergreen/build-packages.sh
10101010
1011+
sign-packages:
1012+
- command: shell.exec
1013+
params:
1014+
shell: bash
1015+
working_dir: mongo-csharp-driver
1016+
env:
1017+
ARTIFACTORY_PASSWORD: ${ARTIFACTORY_PASSWORD}
1018+
ARTIFACTORY_USERNAME: ${ARTIFACTORY_USERNAME}
1019+
AZURE_NUGET_SIGN_TENANT_ID: ${AZURE_NUGET_SIGN_TENANT_ID}
1020+
AZURE_NUGET_SIGN_CLIENT_ID: ${AZURE_NUGET_SIGN_CLIENT_ID}
1021+
AZURE_NUGET_SIGN_CLIENT_SECRET: ${AZURE_NUGET_SIGN_CLIENT_SECRET}
1022+
PACKAGE_VERSION: "$PACKAGE_VERSION"
1023+
script: |
1024+
${PREPARE_SHELL}
1025+
. ./evergreen/sign-packages.sh
1026+
10111027
push-packages:
10121028
- command: shell.exec
10131029
params:
10141030
shell: bash
10151031
working_dir: mongo-csharp-driver
10161032
env:
1033+
NUGET_SIGN_CERTIFICATE_FINGERPRINT: ${NUGET_SIGN_CERTIFICATE_FINGERPRINT}
10171034
PACKAGES_SOURCE: ${PACKAGES_SOURCE}
10181035
PACKAGES_SOURCE_KEY: ${PACKAGES_SOURCE_KEY}
10191036
script: |
@@ -1857,6 +1874,7 @@ tasks:
18571874
commands:
18581875
- func: install-dotnet
18591876
- func: download-packages
1877+
- func: sign-packages
18601878
- func: push-packages
18611879
vars:
18621880
PACKAGES_SOURCE: "https://api.nuget.org/v3/index.json"
@@ -1866,6 +1884,7 @@ tasks:
18661884
commands:
18671885
- func: install-dotnet
18681886
- func: download-packages
1887+
- func: sign-packages
18691888
- func: push-packages
18701889
vars:
18711890
PACKAGES_SOURCE: "https://www.myget.org/F/mongodb/api/v3/index.json"
@@ -2690,7 +2709,7 @@ buildvariants:
26902709
# Package release variants
26912710
- matrix_name: build-packages
26922711
matrix_spec:
2693-
os: "windows-64" # should produce package on Windows to make sure full framework binaries created.
2712+
os: "windows-64" # should produce package on Windows to build .NET framework (net472) packages.
26942713
display_name: "Packages Pack"
26952714
tags: ["build-packages", "release-tag"]
26962715
tasks:

evergreen/push-packages.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
set -o errexit # Exit the script with error if any of the commands fail
33
set +o xtrace # Disable tracing.
44

5+
# Environment variables used as inpu
6+
# NUGET_SIGN_CERTIFICATE_FINGERPRINT
7+
# PACKAGES_SOURCE
8+
# PACKAGES_SOURCE_KEY
9+
# PACKAGE_VERSION
10+
511
# querying nuget source to find search base url
612
packages_search_url=$(curl -X GET -s "${PACKAGES_SOURCE}" | jq -r 'first(.resources[] | select(."@type"=="SearchQueryService") | ."@id")')
713

@@ -50,6 +56,11 @@ if [ "$PACKAGES_SOURCE" = "https://api.nuget.org/v3/index.json" ] && [[ ! "$PACK
5056
fi
5157

5258
PACKAGES=("MongoDB.Bson" "MongoDB.Driver.Core" "MongoDB.Driver" "MongoDB.Driver.GridFS" "mongocsharpdriver")
59+
60+
for package in ${PACKAGES[*]}; do
61+
dotnet nuget verify ./artifacts/nuget/"$package"."$PACKAGE_VERSION".nupkg --certificate-fingerprint "$NUGET_SIGN_CERTIFICATE_FINGERPRINT"
62+
done
63+
5364
for package in ${PACKAGES[*]}; do
5465
dotnet nuget push --source "$PACKAGES_SOURCE" --api-key "$PACKAGES_SOURCE_KEY" ./artifacts/nuget/"$package"."$PACKAGE_VERSION".nupkg
5566
done

evergreen/sign-packages.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -o errexit # Exit the script with error if any of the commands fail
3+
4+
# Environment variables used as input:
5+
# ARTIFACTORY_PASSWORD
6+
# ARTIFACTORY_USERNAME
7+
# AZURE_NUGET_SIGN_TENANT_ID
8+
# AZURE_NUGET_SIGN_CLIENT_ID
9+
# AZURE_NUGET_SIGN_CLIENT_SECRET
10+
# PACKAGE_VERSION
11+
12+
echo "${ARTIFACTORY_PASSWORD}" | docker login --password-stdin --username "${ARTIFACTORY_USERNAME}" artifactory.corp.mongodb.com
13+
14+
docker run --platform="linux/amd64" --rm -v $(pwd):/workdir -w /workdir \
15+
artifactory.corp.mongodb.com/release-tools-container-registry-local/azure-keyvault-nuget \
16+
NuGetKeyVaultSignTool sign "artifacts/nuget/*.$PACKAGE_VERSION.nupkg" \
17+
--force \
18+
--file-digest=sha256 \
19+
--timestamp-rfc3161=http://timestamp.digicert.com \
20+
--timestamp-digest=sha256 \
21+
--azure-key-vault-url=https://mdb-authenticode.vault.azure.net \
22+
--azure-key-vault-tenant-id="$AZURE_NUGET_SIGN_TENANT_ID" \
23+
--azure-key-vault-client-secret="$AZURE_NUGET_SIGN_CLIENT_SECRET" \
24+
--azure-key-vault-client-id="$AZURE_NUGET_SIGN_CLIENT_ID" \
25+
--azure-key-vault-certificate=authenticode-2021

0 commit comments

Comments
 (0)