@@ -28,29 +28,48 @@ jobs:
2828 uses : rancher-eio/read-vault-secrets@main
2929 with :
3030 secrets : |
31- secret/data/github/repo/${{ github.repository }}/key/app-credentials passphrase | GPG_PASSPHRASE ;
32- secret/data/github/repo/${{ github.repository }}/key/app-credentials privateKey | GPG_KEY
31+ secret/data/github/repo/${{ github.repository }}/signing/gpg passphrase | GPG_PASSPHRASE ;
32+ secret/data/github/repo/${{ github.repository }}/signing/gpg privateKeyId | GPG_KEY_ID ;
33+ secret/data/github/repo/${{ github.repository }}/signing/gpg privateKey | GPG_KEY
3334
3435 - name : sign shasum
3536 env :
36- GPG_KEY : ${{ env.GPG_KEY }}
3737 GPG_PASSPHRASE : ${{ env.GPG_PASSPHRASE }}
38+ GPG_KEY_ID : ${{ env.GPG_KEY_ID }}
39+ GPG_KEY : ${{ env.GPG_KEY }}
3840 run : |
41+ cleanup() {
42+ # clear history just in case
43+ history -c
44+ }
45+ trap cleanup EXIT TERM
46+
47+ # sanitize variables
48+ GPG_PASSPHRASE="$(echo "${GPG_PASSPHRASE}" | xargs)"
49+ GPG_KEY_ID="$(echo "${GPG_KEY_ID}" | xargs)"
50+ GPG_KEY="$(echo -n "${GPG_KEY}" | awk '/-----BEGIN PGP PRIVATE KEY BLOCK-----/,/-----END PGP PRIVATE KEY BLOCK-----/')"
51+
52+ if [ -z "${GPG_PASSPHRASE}" ]; then echo "gpg passphrase empty"; exit 1; fi
53+ if [ -z "${GPG_KEY_ID}" ]; then echo "key id empty"; exit 1; fi
54+ if [ -z "${GPG_KEY}" ]; then echo "key contents empty"; exit 1; fi
55+
3956 echo "Importing gpg key"
40- echo -n '${{ env.GPG_KEY }}' | gpg --import --batch > /dev/null
41- echo "signing SHASUM file"
42- VERSION_NO_V="$(echo ${{ github.ref_name }} | tr -d 'v')"
57+ echo "${GPG_KEY}" | gpg --import --batch > /dev/null || { echo "Failed to import GPG key"; exit 1; }
58+
59+ echo "Signing SHASUM file"
60+ VERSION_NO_V="$(echo "${{ github.ref_name }}" | tr -d 'v')"
4361 SHASUM_FILE="dist/artifacts/${{ github.ref_name }}/terraform-provider-rancher2_${VERSION_NO_V}_SHA256SUMS"
44- echo '${{ env.GPG_PASSPHRASE }}' | gpg --detach-sig --pinentry-mode loopback --passphrase-fd 0 --output "${SHASUM_FILE}.sig" --sign "${SHASUM_FILE}"
4562
46- echo "Validating signature..."
63+ gpg --detach-sig \
64+ --pinentry-mode loopback \
65+ --passphrase "${GPG_PASSPHRASE}" \
66+ --local-user "${GPG_KEY_ID}" \
67+ --output "${SHASUM_FILE}.sig" \
68+ --sign "${SHASUM_FILE}" || { echo "Failed to sign checksum."; exit 1; }
4769
48- if ! gpg --verify "${SHASUM_FILE}.sig" "${SHASUM_FILE}"; then
49- echo "Signature is valid..."
50- else
51- echo "Signature verification failed!"
52- exit 1
53- fi
70+ echo "Validating signature..."
71+ gpg --verify "${SHASUM_FILE}.sig" "${SHASUM_FILE}" || { echo "Signature verification failed!"; exit 1; }
72+ echo "Signature is valid..."
5473 - name : GH release
5574 env :
5675 GH_TOKEN : ${{ github.token }}
0 commit comments