Skip to content

Commit 952b1fc

Browse files
Adding dependency track
1 parent 96059c2 commit 952b1fc

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Build and Upload SBOMs to Dependency-Track
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- '*'
8+
9+
jobs:
10+
sbom:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
# .NET SBOM
17+
- name: Setup .NET
18+
uses: actions/setup-dotnet@v3
19+
with:
20+
dotnet-version: '9.0.x'
21+
22+
- name: Restore .NET dependencies
23+
run: dotnet restore
24+
25+
- name: Install CycloneDX for .NET
26+
run: dotnet tool install --global CycloneDX
27+
28+
- name: Generate SBOM for .NET
29+
run: |
30+
mkdir -p ./sbom
31+
SOLUTION_FILE=$(find . -name "*.sln" | head -n 1)
32+
if [ -z "$SOLUTION_FILE" ]; then
33+
PROJECT_FILE=$(find . -name "*.csproj" -o -name "*.fsproj" -o -name "*.vbproj" | head -n 1)
34+
if [ -z "$PROJECT_FILE" ]; then
35+
echo "No solution or project files found!"
36+
exit 1
37+
else
38+
TARGET_FILE="$PROJECT_FILE"
39+
fi
40+
else
41+
TARGET_FILE="$SOLUTION_FILE"
42+
fi
43+
dotnet-CycloneDX "$TARGET_FILE" --output ./sbom --filename bom-dotnet.xml --output-format Xml --enable-github-licenses --github-bearer-token ${{ secrets.GITHUB_TOKEN }}
44+
45+
# Extract major version from Umbraco.Commerce dependency
46+
- name: Extract Umbraco.Commerce major version
47+
id: extract-version
48+
run: |
49+
PROJECT_FILE="src/Umbraco.Commerce.DemoStore.Web/Umbraco.Commerce.DemoStore.Web.csproj"
50+
COMMERCE_VERSION=$(grep -oP 'PackageReference Include="Umbraco.Commerce" Version="\K[^"]+' "$PROJECT_FILE")
51+
MAJOR_VERSION=$(echo "$COMMERCE_VERSION" | grep -oP '^\d+')
52+
echo "commerce_version=$COMMERCE_VERSION"
53+
echo "major_version=$MAJOR_VERSION"
54+
echo "major_version=$MAJOR_VERSION" >> $GITHUB_OUTPUT
55+
56+
# Upload .NET SBOM
57+
- name: Upload .NET SBOM to Dependency-Track
58+
env:
59+
DTRACK_URL: ${{ secrets.DTRACK_URL }}
60+
DTRACK_API_KEY: ${{ secrets.DTRACK_API_KEY }}
61+
run: |
62+
curl --fail-with-body -v -i -w "\nHTTP Status: %{http_code}\n" \
63+
-X POST "$DTRACK_URL" \
64+
-H "X-Api-Key: $DTRACK_API_KEY" \
65+
-H "accept: application/json" \
66+
-H "Content-Type: multipart/form-data" \
67+
-F "autoCreate=true" \
68+
-F "projectName=${{ github.event.repository.name }}" \
69+
-F "projectVersion=${{ steps.extract-version.outputs.major_version }}" \
70+
-F "bom=@./sbom/bom-dotnet.xml"

0 commit comments

Comments
 (0)