-
Notifications
You must be signed in to change notification settings - Fork 395
move to new signing process for release build and prep for 1.20.0 #1625
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 35 commits
Commits
Show all changes
36 commits
Select commit
Hold shift + click to select a range
150d81e
First cut at new release/signing build yml
JamesWTruher 7943547
remove display name from incorrect location
JamesWTruher 232cb28
change paths for changes in build system
JamesWTruher 21a029a
add debugging info
JamesWTruher daadefc
Be sure to build all versions
JamesWTruher 1faf27b
change debugging code for 'Copy signed files'
JamesWTruher d47c013
be sure to be in the correct location for creating the nupkg
JamesWTruher fd6d5c2
Change nupkg building logic
JamesWTruher 57d4635
make not finding dotnet.exe a non fatal error for loading the module
JamesWTruher 308f923
fix path to suppression file
JamesWTruher 2d1f8f4
debugging statements for compliance
JamesWTruher 5495b95
fix typo for credscan suppressions
JamesWTruher b535c72
Update to publish build directory
JamesWTruher caf23fa
Be sure to publish the build directory
JamesWTruher f9231e5
published signed files need their own name
JamesWTruher 91e0921
add exception for README.md for cred scanner
JamesWTruher 7fafc46
try to get binskim to work with more direct path to assemblies
JamesWTruher 484c051
debugging to find issues with signing files
JamesWTruher 8a6aeb2
fix typo
JamesWTruher 0794d19
more debugging
JamesWTruher 39edbf6
remove debugging
JamesWTruher a55814b
remove publish of nupkg
JamesWTruher 275cbf2
remove newtonsoft signing stage
JamesWTruher 3dab1f9
try the newton soft signing again
JamesWTruher 29e870d
disable newtonsoft signing
JamesWTruher 5e0a1de
try a 2 step process for signing
JamesWTruher f0d5e1c
remove most of the debugging code
JamesWTruher bb976f7
calculate version and publish nupkg
JamesWTruher 7f55032
fix 1 for module version
JamesWTruher a66cb27
typo for module version
JamesWTruher 2f1cf42
Add a lot of comments to the yaml
JamesWTruher b6415c3
suppress warnings for using PSRepository cmdlets
JamesWTruher 43935ad
bump version to 1.20.0
JamesWTruher debd5fc
change to use allowlist in documentation and tests
JamesWTruher c0714ab
Update .ci/releaseBuild.yml
JamesWTruher 6edaba1
Apply suggestions from code review
rjmholt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
# The name of the build that will be seen in mscodehub | ||
name: PSSA-Release-$(Build.BuildId) | ||
# how is the build triggered | ||
# since this is a release build, no trigger as it's a manual release | ||
trigger: none | ||
|
||
pr: | ||
branches: | ||
include: | ||
- master | ||
- release* | ||
|
||
# variables to set in the build environment | ||
variables: | ||
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | ||
POWERSHELL_TELEMETRY_OPTOUT: 1 | ||
|
||
# since this build relies on templates, we need access to those | ||
# This needs a service connection in the build to work | ||
# the *name* of the service connection must be the same as the endpoint | ||
resources: | ||
repositories: | ||
- repository: ComplianceRepo | ||
type: github | ||
endpoint: ComplianceGHRepo | ||
name: PowerShell/compliance | ||
# this can be any branch of your choosing | ||
ref: master | ||
|
||
# the stages in this build. There are 2 | ||
# the assumption for script analyzer is that test is done as part of | ||
# CI so we needn't do it here | ||
stages: | ||
- stage: Build | ||
displayName: Build | ||
pool: | ||
name: Package ES CodeHub Lab E | ||
jobs: | ||
- job: Build_Job | ||
displayName: Build Microsoft.PowerShell.ScriptAnalyzer | ||
# note the variable reference to ESRP. | ||
# this must be created in Project -> Pipelines -> Library -> VariableGroups | ||
# where it describes the link to the SigningServer | ||
variables: | ||
- group: ESRP | ||
steps: | ||
- checkout: self | ||
|
||
# the steps for building the module go here | ||
- pwsh: | | ||
Set-Location "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA" | ||
try { ./build.ps1 -Configuration Release -All } catch { throw $_ } | ||
displayName: Execute build | ||
|
||
# these are setting vso variables which will be persisted between stages | ||
- pwsh: | | ||
$signSrcPath = "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA/out" | ||
# Set signing src path variable | ||
$vstsCommandString = "vso[task.setvariable variable=signSrcPath]${signSrcPath}" | ||
Write-Host "sending $vstsCommandString" | ||
Write-Host "##$vstsCommandString" | ||
|
||
$signOutStep1 = "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA/Step1" | ||
$null = New-Item -ItemType Directory -Path $signOutStep1 | ||
# Set signing out path variable | ||
$vstsCommandString = "vso[task.setvariable variable=signOutStep1]${signOutStep1}" | ||
Write-Host "sending " + $vstsCommandString | ||
Write-Host "##$vstsCommandString" | ||
|
||
$signOutPath = "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA/signed" | ||
$null = New-Item -ItemType Directory -Path $signOutPath | ||
# Set signing out path variable | ||
$vstsCommandString = "vso[task.setvariable variable=signOutPath]${signOutPath}" | ||
Write-Host "sending " + $vstsCommandString | ||
rjmholt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Write-Host "##$vstsCommandString" | ||
|
||
# Set path variable for guardian codesign validation | ||
$vstsCommandString = "vso[task.setvariable variable=GDN_CODESIGN_TARGETDIRECTORY]${signOutPath}" | ||
Write-Host "sending " + $vstsCommandString | ||
rjmholt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Write-Host "##$vstsCommandString" | ||
|
||
# Get version and create a variable | ||
$moduleData = Import-PowerShellDataFile "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA/Engine/PSScriptAnalyzer.psd1" | ||
$moduleVersion = $moduleData.ModuleVersion | ||
$vstsCommandString = "vso[task.setvariable variable=moduleVersion]${moduleVersion}" | ||
Write-Host "sending " + $vstsCommandString | ||
rjmholt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Write-Host "##$vstsCommandString" | ||
|
||
|
||
displayName: Setup variables for signing | ||
|
||
# checkout the Compliance repository so it can be used to do the actual signing | ||
- checkout: ComplianceRepo | ||
|
||
# in script analyzer, we must sign with 2 different certs | ||
# the normal cert for MS created items and the 3rd party cert | ||
# this the MS authored step | ||
# Because this needs 2 certs, we do it in 2 steps. | ||
# the first step signs the binaries and puts them in a staging directory which | ||
# will then be used for the second step. | ||
- template: EsrpSign.yml@ComplianceRepo | ||
parameters: | ||
# the folder which contains the binaries to sign | ||
buildOutputPath: $(signSrcPath) | ||
# the location to put the signed output | ||
signOutputPath: $(signOutStep1) | ||
# the certificate ID to use | ||
certificateId: "CP-230012" | ||
# use minimatch because we need to exclude the NewtonSoft assembly | ||
useMinimatch: true | ||
# the file pattern to use - newtonSoft is excluded | ||
pattern: | | ||
**\*.psd1 | ||
**\*.psm1 | ||
**\*.ps1xml | ||
**\Microsoft*.dll | ||
|
||
# this is the second step of the signing. | ||
# note that the buildOutputPath (where we get the files to sign) | ||
# is the same as the signOutputPath in the previous step | ||
# at the end of this step we will have all the files signed that should be | ||
# signOutPath is the location which contains the files we will use to make the module | ||
- template: EsrpSign.yml@ComplianceRepo | ||
parameters: | ||
# the folder which contains the binaries to sign | ||
buildOutputPath: $(signOutStep1) | ||
# the location to put the signed output | ||
signOutputPath: $(signOutPath) | ||
# the certificate ID to use | ||
# we'll need to change this to the 3rd party cert id | ||
certificateId: "CP-231522" | ||
# the file pattern to use - only sign newtonsoft | ||
pattern: 'Newtonsoft*.dll' | ||
|
||
# now create the nupkg which we will use to publish the module | ||
# to the powershell gallery (not part of this yaml) | ||
- pwsh: | | ||
Set-Location "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA" | ||
./build -BuildNupkg -signed | ||
displayName: Create nupkg for publishing | ||
|
||
# finally publish the parts of the build which will be used in the next stages | ||
# if it's not published, the subsequent stages will not be able to access it. | ||
# This is the build directory (it contains all of the dll/pdb files) | ||
- publish: "$(Build.SourcesDirectory)/OSS_Microsoft_PSSA" | ||
artifact: build | ||
displayName: publish build directory | ||
|
||
# export the nupkg only which will be used in the release pipeline | ||
- publish: "$(signOutPath)/PSScriptAnalyzer.$(moduleVersion).nupkg" | ||
artifact: nupkg | ||
displayName: Publish module nupkg | ||
|
||
# Now on to the compliance stage | ||
- stage: compliance | ||
displayName: Compliance | ||
dependsOn: Build | ||
jobs: | ||
- job: Compliance_Job | ||
pool: | ||
name: Package ES CodeHub Lab E | ||
steps: | ||
- checkout: self | ||
- checkout: ComplianceRepo | ||
- download: current | ||
artifact: build | ||
|
||
# use the templates in the compliance repo | ||
# since script analyzer has modules, we're using the assembly-module-compliance template | ||
# if you don't have assemblies, you should use script-module-compliance template | ||
- template: assembly-module-compliance.yml@ComplianceRepo | ||
parameters: | ||
# component-governance - the path to sources | ||
sourceScanPath: '$(Build.SourcesDirectory)/OSS_Microsoft_PSSA' | ||
# binskim - this isn't recursive, so you need the path to the assemblies | ||
AnalyzeTarget: '$(Pipeline.Workspace)\build\bin\PSV7Release\netcoreapp3.1\*.dll' | ||
# credscan - scan the repo for credentials | ||
# you can suppress some files with this. | ||
suppressionsFile: '$(Build.SourcesDirectory)/OSS_Microsoft_PSSA/tools/ReleaseBuild/CredScan.Suppressions.json' | ||
# TermCheck | ||
optionsRulesDBPath: '' | ||
optionsFTPath: '' | ||
# tsa-upload | ||
# the compliance scanning must be uploaded, which you need to request | ||
codeBaseName: 'PSSA_202004' | ||
# selections | ||
APIScan: false # set to false when not using Windows APIs. | ||
|
||
#- template: template/publish.yml | ||
# parameters: | ||
# stageName: AzArtifactsFeed | ||
# environmentName: | ||
# feedCredential: | ||
|
||
#- template: template/publish.yml | ||
# parameters: | ||
# stageName: NuGet | ||
# environmentName: PSMarkdownRenderNuGetApproval | ||
# feedCredential: NugetOrgPush |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
...or/Microsoft.PowerShell.CrossCompatibility/Microsoft.PowerShell.CrossCompatibility.csproj
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
@{ | ||
'Rules' = @{ | ||
'PSAvoidUsingCmdletAliases' = @{ | ||
'Whitelist' = @('cd') | ||
'allowlist' = @('cd') | ||
} | ||
} | ||
} | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.