@@ -8,17 +8,34 @@ version: 0.1
8
8
component : build
9
9
timeoutInSeconds : 1000
10
10
shell : bash
11
-
11
+ env :
12
+ variables :
13
+ PYTHON_CMD : " python3"
14
+ CDXGEN_DEBUG_MODE : " debug"
12
15
steps :
13
16
- type : Command
14
- name : " Install cyclonedx_py module"
17
+ name : " Download the version 10.10.0 of cdxgen globally"
18
+ command : |
19
+ npm install -g @cyclonedx/[email protected]
20
+ - type : Command
21
+ name : " Workaround to let cdxgen run on nodejs 16"
15
22
command : |
16
- pip install cyclonedx-bom
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
+
17
28
- type : Command
18
- name : " Run Python cyclonedx_py module "
29
+ name : " Generate SBOM for Python "
19
30
command : |
20
- # For more details, visit https://github.com/CycloneDX/cyclonedx-python/blob/main/README.md
21
- python3 -m cyclonedx_py -r -pb --format json -o artifactSBOM.json --schema-version 1.4
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 \
22
39
outputArtifacts :
23
40
- name : artifactSBOM
24
41
type : BINARY
0 commit comments