1+ #! /bin/bash
2+ set -eu
3+
4+ echo " Create or checkout the branch."
5+ OWNER_REPO=" ${GITHUB_REPOSITORY} "
6+ git ls-remote --exit-code --heads https://github.com/${OWNER_REPO} .git refs/heads/$BRANCH || {
7+ git branch $BRANCH $BASE_REF
8+ }
9+ git fetch origin $BRANCH || true
10+ git checkout $BRANCH
11+
12+ echo " Get silk creds."
13+ # shellcheck disable=SC2046
14+ export $( grep -v ' ^#' $SILKBOMB_ENVFILE | xargs -0)
15+
16+ echo " Get a silk token."
17+ SILK_JWT_TOKEN=$( curl -s -X POST " https://silkapi.us1.app.silk.security/api/v1/authenticate" \
18+ -H " accept: application/json" -H " Content-Type: application/json" \
19+ -d ' { "client_id": "' ${SILK_CLIENT_ID} ' ", "client_secret": "' ${SILK_CLIENT_SECRET} ' " }' \
20+ | jq -r ' .token' )
21+
22+ echo " Get the silk asset group prefix."
23+ if [ -z " ${SILK_PREFIX:- } " ]; then
24+ REPO=" ${OWNER_REPO##*/ } "
25+ SILK_PREFIX=${REPO}
26+ fi
27+ SILK_GROUP=" ${SILK_PREFIX} -${BRANCH} "
28+
29+ echo " Create the silk asset group."
30+ json_payload=$( cat << EOF
31+ {
32+ "active": true,
33+ "name": "${SILK_GROUP} ",
34+ "code_repo_url": "https://github.com/${OWNER_REPO} ",
35+ "branch": "${BRANCH} ",
36+ "metadata": {
37+ "sbom_lite_path": "${SBOM_FILE_PATH} "
38+ },
39+ "file_paths": [],
40+ "asset_id": "$SILK_GROUP "
41+ }
42+ EOF
43+ )
44+ curl -X ' POST' \
45+ ' https://silkapi.us1.app.silk.security/api/v1/raw/asset_group' \
46+ -H " accept: application/json" -H " Authorization: ${SILK_JWT_TOKEN} " \
47+ -H ' Content-Type: application/json' \
48+ -d " $json_payload "
49+
50+ echo " SILK_ASSET_GROUP=$SILK_GROUP " >> $GITHUB_STEP_SUMMARY
51+
52+ echo " Create a temp sbom."
53+ TMP_SBOM=sbom-for-${BRANCH} .json
54+ podman run --platform=" linux/amd64" --rm -v " $( pwd) " :/pwd \
55+ ${ARTIFACTORY_IMAGE} /silkbomb:1.0 \
56+ update --sbom-out /pwd/${TMP_SBOM}
57+
58+ echo " Get the new timestamp and serial number."
59+ set -x
60+ SERIAL=$( jq -r ' .serialNumber' ${TMP_SBOM} )
61+ TIMESTAMP=$( jq -r ' .metadata.timestamp' ${TMP_SBOM} )
62+ rm ${TMP_SBOM}
63+
64+ cat ${SBOM_FILE_PATH}
65+ echo " Replace the values in the existing sbom."
66+ cat <<< " $(jq --indent 4 '.serialNumber = " ' ${SERIAL}' " ' ${SBOM_FILE_PATH} )" > ${SBOM_FILE_PATH}
67+ cat <<< " $(jq --indent 4 '.metadata.timestamp = " ' ${TIMESTAMP}' " ' ${SBOM_FILE_PATH} )" > ${SBOM_FILE_PATH}
68+ cat ${SBOM_FILE_PATH}
69+
70+ echo " Update the workflow with the silk asset group and evergreen project."
71+ sed -i ' s/SILK_ASSET_GROUP:.*/SILK_ASSET_GROUP: ' ${SILK_GROUP} ' /' ${RELEASE_WORKFLOW_PATH}
72+ sed -i ' s/EVERGREEN_PROJECT:.*/EVERGREEN_PROJECT: ' ${EVERGREEN_PROJECT} ' /' ${RELEASE_WORKFLOW_PATH}
73+
74+ echo " Add the changed files."
75+ git --no-pager diff
76+ git add ${SBOM_FILE_PATH} ${RELEASE_WORKFLOW_PATH}
0 commit comments