2025-10-31 10:53:57 +01:00
|
|
|
parameters:
|
|
|
|
|
- name: projectName
|
|
|
|
|
type: string
|
|
|
|
|
- name: umbracoVersion
|
|
|
|
|
type: string
|
|
|
|
|
- name: projects
|
|
|
|
|
type: object
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
- job: Create_DT_Project
|
|
|
|
|
displayName: Create Dependency Track Project
|
|
|
|
|
steps:
|
|
|
|
|
- checkout: none
|
|
|
|
|
|
|
|
|
|
- bash: |
|
2025-11-17 14:54:03 +01:00
|
|
|
project_id=$(curl --no-progress-meter -H "X-Api-Key: $(DT_API_KEY)" "$(DT_API_URI)/api/v1/project/lookup?name=${{ parameters.projectName }}&version=${{ parameters.umbracoVersion }}" | jq -r '.uuid')
|
2025-10-31 10:53:57 +01:00
|
|
|
if [ "$project_id" != "null" ] && [ -n "$project_id" ]; then
|
|
|
|
|
echo "Project '${{ parameters.projectName }}' with version '${{ parameters.umbracoVersion }}' already exists (ID: $project_id)."
|
|
|
|
|
else
|
|
|
|
|
project_id=$(curl --no-progress-meter \
|
2025-11-17 14:54:03 +01:00
|
|
|
-X PUT "$(DT_API_URI)/api/v1/project" \
|
2025-10-31 10:53:57 +01:00
|
|
|
-H "X-Api-Key: $(DT_API_KEY)" \
|
|
|
|
|
-H "Content-Type: application/json" \
|
|
|
|
|
-d '{"name": "${{ parameters.projectName }}", "version": "${{ parameters.umbracoVersion }}", "collectionLogic": "AGGREGATE_DIRECT_CHILDREN"}' \
|
|
|
|
|
| jq -r '.uuid')
|
|
|
|
|
if [ -z "$project_id" ] || [ "$project_id" == "null" ]; then
|
|
|
|
|
echo "Failed to create project '${{ parameters.projectName }}' version '${{ parameters.umbracoVersion }}'."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
echo "Created project '${{ parameters.projectName }}' with version '${{ parameters.umbracoVersion }}' (ID: $project_id)."
|
|
|
|
|
fi
|
|
|
|
|
displayName: Ensure main project exists in Dependency Track
|
|
|
|
|
|
|
|
|
|
- ${{ each project in parameters.projects }}:
|
|
|
|
|
- job:
|
|
|
|
|
displayName: Upload ${{ project.name }} BOM
|
|
|
|
|
dependsOn: Create_DT_Project
|
|
|
|
|
steps:
|
|
|
|
|
- checkout: none
|
|
|
|
|
|
|
|
|
|
- download: current
|
|
|
|
|
artifact: ${{ project.artifact }}
|
|
|
|
|
displayName: Download ${{ project.artifact }} artifact
|
|
|
|
|
|
2025-11-17 14:54:03 +01:00
|
|
|
- task: upload-bom-dtrack@1
|
|
|
|
|
inputs:
|
|
|
|
|
dtrackURI: $(DT_API_URI)
|
|
|
|
|
dtrackAPIKey: $(DT_API_KEY)
|
|
|
|
|
dtrackProjAutoCreate: true
|
|
|
|
|
dtrackProjName: '${{ parameters.projectName }}-${{ project.name }}'
|
|
|
|
|
dtrackProjVersion: ${{ parameters.umbracoVersion }}
|
|
|
|
|
dtrackParentProjName: ${{ parameters.projectName }}
|
|
|
|
|
dtrackParentProjVersion: ${{ parameters.umbracoVersion }}
|
|
|
|
|
bomFilePath: '$(Pipeline.Workspace)/${{ project.artifact }}/${{ project.bomFilePath }}'
|
2025-10-31 10:53:57 +01:00
|
|
|
displayName: Upload ${{ project.name }} BOM to Dependency Track
|