From 4f02d279f9b94d5af3577b855d96c2234f757bac Mon Sep 17 00:00:00 2001 From: Dave Tryon <45672944+DaveTryon@users.noreply.github.com> Date: Wed, 16 Oct 2024 09:03:50 -0700 Subject: [PATCH 1/4] Add a job to build macos-arm64 binaries --- pipelines/sbom-tool-main-build.yaml | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/pipelines/sbom-tool-main-build.yaml b/pipelines/sbom-tool-main-build.yaml index b374aea2d..defd949a0 100644 --- a/pipelines/sbom-tool-main-build.yaml +++ b/pipelines/sbom-tool-main-build.yaml @@ -21,9 +21,11 @@ variables: ForceSigning: 'false' WindowsNetRuntime: 'win-x64' MacOSNetRuntime: 'osx-x64' + MacOSArm64NetRuntime: 'osx-arm64' LinuxNetRuntime: 'linux-x64' BinaryNameWindows: 'sbom-tool-win-x64.exe' BinaryNameMacOS: 'sbom-tool-osx-x64' + BinaryNameMacOSArm64: 'sbom-tool-osx-arm64' BinaryNameLinux: 'sbom-tool-linux-x64' extends: @@ -297,3 +299,53 @@ extends: Move-Item -Path $(Build.ArtifactStagingDirectory)/osx/$(BinaryNameMacOS) -Destination $(Build.ArtifactStagingDirectory)/bin/$(BinaryNameMacOS) Remove-Item $(Build.ArtifactStagingDirectory)/osx -Recurse displayName: 'Restructure Artifact' + + - job: Job_4 + displayName: 'Build (macOS-arm64)' + templateContext: + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: '$(OutputArtifactName)-macOS-arm64' + pool: + name: Azure Pipelines + image: macos-latest + os: macOS + steps: + - task: UseDotNet@2 + displayName: 'Use .NET Core' + inputs: + useGlobalJson: true + + - task: DotNetCoreCLI@2 + displayName: 'Restore solution' + inputs: + command: restore + feedsToUse: config + nugetConfigPath: nuget.config + verbosityRestore: Normal + + - task: DotNetCoreCLI@2 + displayName: Build + inputs: + arguments: '-c $(BuildConfiguration)' + + - task: DotNetCoreCLI@2 + displayName: 'Build self-contained binary' + inputs: + command: publish + publishWebProjects: false + projects: src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj + arguments: '-c $(BuildConfiguration) --no-restore --output $(Build.ArtifactStagingDirectory)/osx --self-contained --runtime $(MacOSArm64NetRuntime) -p:PublishSingleFile=true -p:DebugType=None -f net8.0' + zipAfterPublish: false + modifyOutputPath: false + + - powershell: 'Rename-Item -Path $(Build.ArtifactStagingDirectory)\osx\Microsoft.Sbom.Tool -NewName $(BinaryNameMacOSArm64)' + displayName: 'Rename binaries' + + - powershell: | + del $(Build.ArtifactStagingDirectory)/CodeSignSummary-*.md + mkdir $(Build.ArtifactStagingDirectory)/bin + Move-Item -Path $(Build.ArtifactStagingDirectory)/osx/$(BinaryNameMacOSArm64) -Destination $(Build.ArtifactStagingDirectory)/bin/$(BinaryNameMacOSArm64) + Remove-Item $(Build.ArtifactStagingDirectory)/osx -Recurse + displayName: 'Restructure Artifact' From f0526b7420bc7da73e99022f859879bfcf1fff0f Mon Sep 17 00:00:00 2001 From: Dave Tryon <45672944+DaveTryon@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:25:14 -0700 Subject: [PATCH 2/4] Put arm64 in a unique output folder --- pipelines/sbom-tool-main-build.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/sbom-tool-main-build.yaml b/pipelines/sbom-tool-main-build.yaml index defd949a0..2543d93eb 100644 --- a/pipelines/sbom-tool-main-build.yaml +++ b/pipelines/sbom-tool-main-build.yaml @@ -336,16 +336,16 @@ extends: command: publish publishWebProjects: false projects: src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj - arguments: '-c $(BuildConfiguration) --no-restore --output $(Build.ArtifactStagingDirectory)/osx --self-contained --runtime $(MacOSArm64NetRuntime) -p:PublishSingleFile=true -p:DebugType=None -f net8.0' + arguments: '-c $(BuildConfiguration) --no-restore --output $(Build.ArtifactStagingDirectory)/osx-arm64 --self-contained --runtime $(MacOSArm64NetRuntime) -p:PublishSingleFile=true -p:DebugType=None -f net8.0' zipAfterPublish: false modifyOutputPath: false - - powershell: 'Rename-Item -Path $(Build.ArtifactStagingDirectory)\osx\Microsoft.Sbom.Tool -NewName $(BinaryNameMacOSArm64)' + - powershell: 'Rename-Item -Path $(Build.ArtifactStagingDirectory)\osx-arm64\Microsoft.Sbom.Tool -NewName $(BinaryNameMacOSArm64)' displayName: 'Rename binaries' - powershell: | del $(Build.ArtifactStagingDirectory)/CodeSignSummary-*.md mkdir $(Build.ArtifactStagingDirectory)/bin - Move-Item -Path $(Build.ArtifactStagingDirectory)/osx/$(BinaryNameMacOSArm64) -Destination $(Build.ArtifactStagingDirectory)/bin/$(BinaryNameMacOSArm64) - Remove-Item $(Build.ArtifactStagingDirectory)/osx -Recurse + Move-Item -Path $(Build.ArtifactStagingDirectory)/osx-arm64/$(BinaryNameMacOSArm64) -Destination $(Build.ArtifactStagingDirectory)/bin/$(BinaryNameMacOSArm64) + Remove-Item $(Build.ArtifactStagingDirectory)/osx-arm64 -Recurse displayName: 'Restructure Artifact' From 8d70187d6d5d0d099184c08080580fa0540c262d Mon Sep 17 00:00:00 2001 From: Dave Tryon <45672944+DaveTryon@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:26:46 -0700 Subject: [PATCH 3/4] Add osx-arm64 runtime identifier --- src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj b/src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj index 3a8d5167a..91f39bc6b 100644 --- a/src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj +++ b/src/Microsoft.Sbom.Tool/Microsoft.Sbom.Tool.csproj @@ -3,7 +3,7 @@ Exe Microsoft.Sbom.Tool - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;osx-arm64;linux-x64 true true Highly scalable and enterprise ready tool to create SBOMs for any variety of artifacts. From 1dca241b79ba17e827ee16c7a63d8b08a7066fdc Mon Sep 17 00:00:00 2001 From: Dave Tryon <45672944+DaveTryon@users.noreply.github.com> Date: Wed, 16 Oct 2024 12:38:30 -0700 Subject: [PATCH 4/4] Update local building docs --- docs/building-from-source.md | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/docs/building-from-source.md b/docs/building-from-source.md index 97674bbe3..760d434f7 100644 --- a/docs/building-from-source.md +++ b/docs/building-from-source.md @@ -49,12 +49,12 @@ dotnet run --project src/Microsoft.Sbom.Tool generate -b -bc