diff --git a/.azure-pipelines/Azure-PowerShell-Common-Publish.yml b/.azure-pipelines/Azure-PowerShell-Common-Publish.yml
new file mode 100644
index 0000000000..7f1fe7b98e
--- /dev/null
+++ b/.azure-pipelines/Azure-PowerShell-Common-Publish.yml
@@ -0,0 +1,106 @@
+# Starter pipeline
+# Start with a minimal pipeline that you can customize to build and deploy your code.
+# Add steps that build, run tests, deploy, and more:
+# https://aka.ms/yaml
+
+trigger:
+- master
+
+pool:
+ name: Hosted VS2017
+
+variables:
+- group: GitHub Release Variables
+
+steps:
+- powershell: |
+ # Write your PowerShell commands here.
+ if (-not ($env:VERSION -match "\d+\.\d+\.\d+"))
+ {
+ throw "The value of Version $env:VERSION must be format of X.X.X"
+ }
+
+ displayName: 'Check Version'
+
+- task: UseDotNet@2
+ displayName: 'Use dotnet sdk 2.1.302'
+ inputs:
+ version: 2.1.302
+
+- powershell: '$(Agent.ToolsDirectory)/dotnet/dotnet msbuild build.proj /t:Build /p:Configuration=Release /p:FileVersion=$env:VERSION /NoLogo'
+ displayName: build
+
+- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
+ displayName: 'dll Signing'
+ inputs:
+ ConnectedServiceName: 'ESRP Signing Service'
+ FolderPath: artifacts
+ Pattern: |
+ Release\netstandard2.0\Microsoft.Azure.PowerShell*.dll
+ !Release\netstandard2.0\Microsoft.Azure.PowerShell*.Test.dll
+ UseMinimatch: true
+ signConfigType: inlineSignParams
+ inlineOperation: |
+ [
+ {
+ "KeyCode": "CP-233863-SN",
+ "OperationCode": "StrongNameSign",
+ "Parameters": {},
+ "ToolName": "sign",
+ "ToolVersion": "1.0"
+ },
+ {
+ "KeyCode": "CP-233863-SN",
+ "OperationCode": "StrongNameVerify",
+ "Parameters": {},
+ "ToolName": "sign",
+ "ToolVersion": "1.0"
+ },
+ {
+ "KeyCode": "CP-230012",
+ "OperationCode": "SigntoolSign",
+ "Parameters": {
+ "OpusName": "Microsoft",
+ "OpusInfo": "http://www.microsoft.com",
+ "FileDigest": "/fd \"SHA256\"",
+ "PageHash": "/NPH",
+ "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
+ },
+ "ToolName": "sign",
+ "ToolVersion": "1.0"
+ },
+ {
+ "KeyCode": "CP-230012",
+ "OperationCode": "SigntoolVerify",
+ "Parameters": {},
+ "ToolName": "sign",
+ "ToolVersion": "1.0"
+ }
+ ]
+
+- powershell: |
+ $(Agent.ToolsDirectory)/dotnet/dotnet msbuild build.proj /t:Pack /p:Configuration=Release /p:PackageVersion=$env:VERSION /NoLogo
+ displayName: pack
+
+- task: NuGetAuthenticate@0
+ displayName: 'NuGet Authenticate'
+ condition: and(succeeded(), ne(variables['publish'], 'false'))
+
+- task: NuGetCommand@2
+ displayName: 'NuGet push'
+ condition: and(succeeded(), ne(variables['publish'], 'false'))
+ inputs:
+ command: push
+ packagesToPush: 'artifacts/Package/Release/Microsoft.Azure.PowerShell.*.nupkg; !artifacts/Package/Release/*.symbols.nupkg'
+ publishVstsFeed: public/azure-powershell
+
+- powershell: |
+ dotnet msbuild build\publish.proj /p:Configuration=Release /p:ReleaseVersion=$env:VERSION /p:CommitId=$env:Build_SourceVersion /p:GitHubAccessToken=$(Github-azuresdkci-personalaccesstoken) /NoLogo
+ displayName: 'publish package github'
+ condition: and(succeeded(), ne(variables['publish'], 'false'))
+
+- task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact'
+ inputs:
+ PathtoPublish: artifacts/Package/Release/
+ ArtifactName: aitifacts
diff --git a/NuGet.config b/NuGet.config
index 80f5bd7fcc..cfa71ce769 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -2,6 +2,10 @@
+
+
+
+
diff --git a/build/publish.proj b/build/publish.proj
index 0653d38a87..8bf66a156f 100644
--- a/build/publish.proj
+++ b/build/publish.proj
@@ -11,18 +11,12 @@
-
-
+
-
-
-
-
-