|
| 1 | +# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. |
| 2 | + |
| 3 | +# This OCI DevOps build specification file [1] generates a Software Bill of Materials (SBOM) of the repository. |
| 4 | +# The file is needed to run checks for third-party vulnerabilities and business approval according to Oracle’s GitHub policies. |
| 5 | +# [1] https://docs.oracle.com/en-us/iaas/Content/devops/using/build_specs.htm |
| 6 | + |
| 7 | +version: 0.1 |
| 8 | +component: build |
| 9 | +timeoutInSeconds: 1000 |
| 10 | +shell: bash |
| 11 | +env: |
| 12 | + variables: |
| 13 | + PYTHON_CMD: "python3" |
| 14 | + CDXGEN_DEBUG_MODE: "debug" |
| 15 | +steps: |
| 16 | + - type: Command |
| 17 | + name: "Download the version 10.10.0 of cdxgen globally" |
| 18 | + command: | |
| 19 | + npm install -g @cyclonedx/cdxgen@10.10.0 |
| 20 | + - type: Command |
| 21 | + name: "Workaround to let cdxgen run on nodejs 16" |
| 22 | + command: | |
| 23 | + # cdxgen relies on a fourth-party dependency that cannot be executed in a Node.js environment running version 16 |
| 24 | + # (as installed on the build runner instance) |
| 25 | + # This is a workaround to ensure cdxgen functions correctly, even in an older Node.js environment. |
| 26 | + cd /node/node-v16.14.2-linux-x64/lib/node_modules/@cyclonedx/cdxgen && \ |
| 27 | + npm install cheerio@v1.0.0-rc.12 |
| 28 | + - type: Command |
| 29 | + name: "Generate SBOM for Python " |
| 30 | + command: | |
| 31 | + # Search the test or dev requirements files, so that test and dev py packages can be excluded in the generated SBOM |
| 32 | + files=$(find . -type f -regex ".*\(test.*requirements\|requirements.*test\|dev.*requirements\|requirements.*dev\).*\.txt") && \ |
| 33 | + if [ -n "$files" ]; then \ |
| 34 | + cdxgen -t python -o artifactSBOM.json --spec-version 1.4 \ |
| 35 | + --exclude "*{requirements,dev,test}*{requirements,dev,test}*.txt" --project-name "$(basename $OCI_PRIMARY_SOURCE_URL)" --no-recurse |
| 36 | + else \ |
| 37 | + cdxgen -t python -o artifactSBOM.json --spec-version 1.4 --project-name "$(basename $OCI_PRIMARY_SOURCE_URL)" --no-recurse |
| 38 | + fi \ |
| 39 | +outputArtifacts: |
| 40 | + - name: artifactSBOM |
| 41 | + type: BINARY |
| 42 | + location: ${OCI_PRIMARY_SOURCE_DIR}/artifactSBOM.json |
0 commit comments