-
Notifications
You must be signed in to change notification settings - Fork 63
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #247 from PowerShell/OBP_Official_andschwa_fyprNM
Migrate build and publish system
- Loading branch information
Showing
35 changed files
with
643 additions
and
1,585 deletions.
There are no files selected for viewing
This file contains 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,8 @@ | ||
{ | ||
"instanceUrl": "https://msazure.visualstudio.com", | ||
"projectName": "One", | ||
"areaPath": "One\\MGMT\\Compute\\Powershell\\Powershell", | ||
"notificationAliases": [ "andschwa@microsoft.com", "slee@microsoft.com" ], | ||
"codebaseName": "PowerShell_ConsoleGuiTools_20240404", | ||
"tools": [ "CredScan", "PoliCheck", "BinSkim" ] | ||
} |
This file contains 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,51 @@ | ||
name: CI Tests | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
merge_group: | ||
types: [ checks_requested ] | ||
|
||
jobs: | ||
ci: | ||
name: dotnet | ||
strategy: | ||
matrix: | ||
os: [ windows-latest, macos-latest, ubuntu-latest ] | ||
runs-on: ${{ matrix.os }} | ||
env: | ||
DOTNET_NOLOGO: true | ||
DOTNET_CLI_TELEMETRY_OPTOUT: true | ||
DOTNET_GENERATE_ASPNET_CERTIFICATE: false | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install dotnet | ||
uses: actions/setup-dotnet@v4 | ||
with: | ||
cache: true | ||
cache-dependency-path: '**/*.csproj' | ||
|
||
- name: Install PSResources | ||
shell: pwsh | ||
run: ./tools/installPSResources.ps1 | ||
|
||
- name: Build and test | ||
shell: pwsh | ||
run: Invoke-Build -Configuration Release Build, Package | ||
|
||
- name: Upload module | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ConsoleGuiTools-module-${{ matrix.os }} | ||
path: module | ||
|
||
- name: Upload NuGet package | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ConsoleGuiTools-nupkg-${{ matrix.os }} | ||
path: out/*.nupkg |
This file contains 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,47 +1,6 @@ | ||
*.swp | ||
*.*~ | ||
project.lock.json | ||
.DS_Store | ||
*.pyc | ||
nupkg/ | ||
|
||
# Rider | ||
.idea | ||
|
||
# User-specific files | ||
*.suo | ||
*.user | ||
*.userosscache | ||
*.sln.docstates | ||
|
||
# Build results | ||
[Dd]ebug/ | ||
[Dd]ebugPublic/ | ||
[Rr]elease/ | ||
[Rr]eleases/ | ||
x64/ | ||
x86/ | ||
build/ | ||
bld/ | ||
[Bb]in/ | ||
[Oo]bj/ | ||
[Oo]ut/ | ||
msbuild.log | ||
msbuild.err | ||
msbuild.wrn | ||
|
||
#Module build | ||
module/ | ||
|
||
# Visual Studio 2015 | ||
.vs/ | ||
|
||
# ingore downloaded .NET | ||
.dotnet | ||
|
||
# Ignore package | ||
Microsoft.PowerShell.GraphicalTools.zip | ||
Microsoft.PowerShell.ConsoleGuiTools.zip | ||
|
||
# git artifacts | ||
*.orig | ||
out/ | ||
bin/ | ||
obj/ | ||
publish/ | ||
*.sln |
This file contains 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,164 @@ | ||
################################################################################# | ||
# OneBranch Pipelines # | ||
# This pipeline was created by EasyStart from a sample located at: # | ||
# https://aka.ms/obpipelines/easystart/samples # | ||
# Documentation: https://aka.ms/obpipelines # | ||
# Yaml Schema: https://aka.ms/obpipelines/yaml/schema # | ||
# Retail Tasks: https://aka.ms/obpipelines/tasks # | ||
# Support: https://aka.ms/onebranchsup # | ||
################################################################################# | ||
|
||
trigger: none | ||
|
||
parameters: | ||
- name: debug | ||
displayName: Enable debug output | ||
type: boolean | ||
default: false | ||
|
||
variables: | ||
system.debug: ${{ parameters.debug }} | ||
BuildConfiguration: Release | ||
WindowsContainerImage: onebranch.azurecr.io/windows/ltsc2019/vse2022:latest | ||
DOTNET_NOLOGO: true | ||
DOTNET_CLI_TELEMETRY_OPTOUT: true | ||
DOTNET_GENERATE_ASPNET_CERTIFICATE: false | ||
|
||
resources: | ||
repositories: | ||
- repository: templates | ||
type: git | ||
name: OneBranch.Pipelines/GovernedTemplates | ||
ref: refs/heads/main | ||
|
||
extends: | ||
# https://aka.ms/obpipelines/templates | ||
template: v2/OneBranch.Official.CrossPlat.yml@templates | ||
parameters: | ||
globalSdl: # https://aka.ms/obpipelines/sdl | ||
asyncSdl: | ||
enabled: true | ||
forStages: [build] | ||
stages: | ||
- stage: build | ||
jobs: | ||
- job: main | ||
displayName: Build package | ||
pool: | ||
type: windows | ||
variables: | ||
ob_outputDirectory: $(Build.SourcesDirectory)/out | ||
steps: | ||
- pwsh: | | ||
$data = Import-PowerShellDataFile -Path src/Microsoft.PowerShell.ConsoleGuiTools/Microsoft.PowerShell.ConsoleGuiTools.psd1 | ||
Write-Output "##vso[task.setvariable variable=version;isOutput=true]$($data.ModuleVersion)" | ||
name: package | ||
displayName: Get version from project properties | ||
- task: onebranch.pipeline.version@1 | ||
displayName: Set OneBranch version | ||
inputs: | ||
system: Custom | ||
customVersion: $(package.version) | ||
- task: UseDotNet@2 | ||
displayName: Use .NET SDK | ||
inputs: | ||
packageType: sdk | ||
useGlobalJson: true | ||
- task: PowerShell@2 | ||
displayName: Install PSResources | ||
inputs: | ||
pwsh: true | ||
filePath: tools/installPSResources.ps1 | ||
- pwsh: Invoke-Build -Configuration $(BuildConfiguration) | ||
displayName: Build | ||
- task: onebranch.pipeline.signing@1 | ||
displayName: Sign 1st-party files | ||
inputs: | ||
command: sign | ||
signing_profile: external_distribution | ||
search_root: $(Build.SourcesDirectory)/module | ||
files_to_sign: | | ||
*.psd1; | ||
Microsoft.PowerShell.*.dll; | ||
- task: onebranch.pipeline.signing@1 | ||
displayName: Sign 3rd-party files | ||
inputs: | ||
command: sign | ||
signing_profile: 135020002 | ||
search_root: $(Build.SourcesDirectory)/module | ||
files_to_sign: | | ||
NStack.dll; | ||
Terminal.Gui.dll; | ||
- task: ArchiveFiles@2 | ||
displayName: Zip module | ||
inputs: | ||
rootFolderOrFile: $(Build.SourcesDirectory)/module | ||
includeRootFolder: false | ||
archiveType: zip | ||
archiveFile: out/ConsoleGuiTools-v$(package.version).zip | ||
- pwsh: Invoke-Build -Configuration $(BuildConfiguration) Package | ||
displayName: Package module | ||
- task: onebranch.pipeline.signing@1 | ||
displayName: Sign NuGet package | ||
inputs: | ||
command: sign | ||
signing_profile: external_distribution | ||
search_root: $(Build.SourcesDirectory)/out | ||
files_to_sign: "*.nupkg" | ||
- stage: release | ||
dependsOn: build | ||
variables: | ||
version: $[ stageDependencies.build.main.outputs['package.version'] ] | ||
drop: $(Pipeline.Workspace)/drop_build_main | ||
jobs: | ||
- job: github | ||
displayName: Publish draft to GitHub | ||
pool: | ||
type: windows | ||
variables: | ||
ob_outputDirectory: $(Build.SourcesDirectory)/out | ||
steps: | ||
- download: current | ||
displayName: Download artifacts | ||
- task: GitHubRelease@1 | ||
displayName: Create GitHub release | ||
inputs: | ||
gitHubConnection: GitHub | ||
repositoryName: PowerShell/ConsoleGuiTools | ||
assets: | | ||
$(drop)/Microsoft.PowerShell.ConsoleGuiTools.$(version).nupkg | ||
$(drop)/ConsoleGuiTools-v$(version).zip | ||
tagSource: userSpecifiedTag | ||
tag: v$(version) | ||
isDraft: true | ||
addChangeLog: false | ||
releaseNotesSource: inline | ||
releaseNotesInline: "<!-- TODO: Generate release notes on GitHub! -->" | ||
- job: validation | ||
displayName: Manual validation | ||
pool: | ||
type: agentless | ||
timeoutInMinutes: 1440 | ||
steps: | ||
- task: ManualValidation@0 | ||
displayName: Wait 24 hours for validation | ||
inputs: | ||
notifyUsers: $(Build.RequestedForEmail) | ||
instructions: Please validate the release and then publish it! | ||
timeoutInMinutes: 1440 | ||
- job: publish | ||
dependsOn: validation | ||
displayName: Publish to PowerShell Gallery | ||
pool: | ||
type: windows | ||
variables: | ||
ob_outputDirectory: $(Build.SourcesDirectory)/out | ||
steps: | ||
- download: current | ||
displayName: Download artifacts | ||
- task: NuGetCommand@2 | ||
displayName: Publish ConsoleGuiTools to PowerShell Gallery | ||
inputs: | ||
command: push | ||
packagesToPush: $(drop)/Microsoft.PowerShell.ConsoleGuiTools.$(version).nupkg | ||
publishFeedCredentials: PowerShellGallery |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.