From a6e8d756e333bed29d45c6a9a76531a07312729c Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 12:01:00 -0400 Subject: [PATCH 01/10] new pipeline for build and sign --- build/azure-pipelines/build-common.yml | 31 +++++++++++++++++++++++++ build/azure-pipelines/build-product.yml | 17 ++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 build/azure-pipelines/build-common.yml create mode 100644 build/azure-pipelines/build-product.yml diff --git a/build/azure-pipelines/build-common.yml b/build/azure-pipelines/build-common.yml new file mode 100644 index 00000000..644410e4 --- /dev/null +++ b/build/azure-pipelines/build-common.yml @@ -0,0 +1,31 @@ +steps: +- task: GoTool@0 + inputs: + version: '1.16.5' + +- task: Go@0 + displayName: 'Go: get dependencies' + inputs: + command: 'get' + arguments: '-d' + workingDirectory: '$(Build.SourcesDirectory)/cmd/sqlcmd' + +- task: Go@0 + displayName: 'Go: build sqlcmd' + inputs: + command: 'build' + argumens: '-o $(Build.BinariesDirectory)' + workingDirectory: '$(Build.SourcesDirectory)/cmd/sqlcmd' + +- task: CopyFiles@2 + inputs: + TargetFolder: '$(Build.ArtifactStagingDirectory)' + SourceFolder: '$(Build.BinariesDirectory)' + Contents: '**' + +- task: PublishPipelineArtifact@1 + displayName: 'Publish binary' + inputs: + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: Sqlcmd$(Agent.OS) + diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml new file mode 100644 index 00000000..bfe5b7b6 --- /dev/null +++ b/build/azure-pipelines/build-product.yml @@ -0,0 +1,17 @@ +stages: + - stage: Compile + displayName: Compile sqlcmd on all 3 platforms + jobs: + - job: Compile sqlcmd + strategy: + matrix: + linux: + imageName: 'ubuntu-latest' + mac: + imageName: 'macOS-latest' + windows: + imageName: 'windows-latest' + pool: + vmImage: $(imageName) + steps: + - template: build-common.yml From 3b162b267b74b6ddf79deca1d3e0ec1a592f3cd7 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 12:12:46 -0400 Subject: [PATCH 02/10] fix job name --- build/azure-pipelines/build-product.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index bfe5b7b6..cbc025a1 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -2,7 +2,7 @@ stages: - stage: Compile displayName: Compile sqlcmd on all 3 platforms jobs: - - job: Compile sqlcmd + - job: Compile_sqlcmd strategy: matrix: linux: From e5db98b86b5a378e928358ec361aa367396e38c1 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 12:28:28 -0400 Subject: [PATCH 03/10] fix typo --- build/azure-pipelines/build-common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/azure-pipelines/build-common.yml b/build/azure-pipelines/build-common.yml index 644410e4..60e241e0 100644 --- a/build/azure-pipelines/build-common.yml +++ b/build/azure-pipelines/build-common.yml @@ -14,7 +14,7 @@ steps: displayName: 'Go: build sqlcmd' inputs: command: 'build' - argumens: '-o $(Build.BinariesDirectory)' + arguments: '-o $(Build.BinariesDirectory)' workingDirectory: '$(Build.SourcesDirectory)/cmd/sqlcmd' - task: CopyFiles@2 From 9e9ecd3e508db73909af829412e419431411bb62 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 12:29:12 -0400 Subject: [PATCH 04/10] no CI build --- build/azure-pipelines/build-product.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index cbc025a1..5569cd1c 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -1,3 +1,4 @@ +trigger: none stages: - stage: Compile displayName: Compile sqlcmd on all 3 platforms From 6a92070198cc7c9855edc5c6d6603bb17a786baf Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 15:09:37 -0400 Subject: [PATCH 05/10] Add sign and zip --- build/azure-pipelines/build-product.yml | 113 +++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index 5569cd1c..9cb8a2bd 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -1,4 +1,8 @@ -trigger: none +trigger: + tags: + include: + - v0.* + stages: - stage: Compile displayName: Compile sqlcmd on all 3 platforms @@ -16,3 +20,110 @@ stages: vmImage: $(imageName) steps: - template: build-common.yml + + - stage: CreatePackages + displayName: Create packages to publish + jobs: + - job: + pool: + vmImage:'windows-latest' + steps: + - task: PowerShell@2 + displayName: Set last tag to variable + inputs: + targetType: 'inline' + script: | + $VERSION_TAG = git describe --tags (git rev-list --tags --max-count=1) + Write-Host("##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG") + Write-Host($VERSION_TAG) + + - task: DownloadPipelineArtifact@2 + inputs: + buildType: 'current' + targetPath: '$(Pipeline.Workspace)' + + - task: EsrpCodeSigning@1 + displayName: Sign Windows binary + inputs: + ConnectedServiceName: 'Code Signing' + FolderPath: '$(Pipeline.Workspace)\SqlcmdWindows_NT' + Pattern: '*.exe' + signConfigType: 'inlineSignParams' + SessionTimeout: '600' + MaxConcurrency: '5' + MaxRetryAttempts: '5' + inlineOperation: | + [ + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "go-sqlcmd" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "https://github.com/microsoft/go-sqlcmd" + }, + { + "parameterName": "PageHash", + "parameterValue": "/NPH" + }, + { + "parameterName": "FileDigest", + "parameterValue": "/fd sha256" + }, + { + "parameterName": "TimeStamp", + "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + } + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + }, + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolVerify", + "parameters": [ + { + "parameterName": "VerifyAll", + "parameterValue": "/all" + } + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + } + ] + - task: ArchiveFiles@2 + displayName: Zip Windows binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdWindows_NT' + includeRootFolder: false + archiveType: 'zip' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-windows.zip' + + - task: ArchiveFiles@2 + displayName: Tar Linux binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdLinux' + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'bz2' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-linux.tar.bz2' + + - task: ArchiveFiles@2 + displayName: Tar Darwin binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdDarwin' + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'bz2' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-darwin.tar.bz2' + + - task: PublishPipelineArtifact@1 + displayName: 'Publish release archives' + inputs: + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: SqlcmdRelease + From de47401f945ee302aeb0ff287c8e043f1c7b6609 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 15:13:43 -0400 Subject: [PATCH 06/10] fix indent --- build/azure-pipelines/build-product.yml | 186 ++++++++++++------------ 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index 9cb8a2bd..d1a28077 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -25,105 +25,105 @@ stages: displayName: Create packages to publish jobs: - job: - pool: - vmImage:'windows-latest' - steps: - - task: PowerShell@2 - displayName: Set last tag to variable - inputs: - targetType: 'inline' - script: | - $VERSION_TAG = git describe --tags (git rev-list --tags --max-count=1) - Write-Host("##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG") - Write-Host($VERSION_TAG) + pool: + vmImage:'windows-latest' + steps: + - task: PowerShell@2 + displayName: Set last tag to variable + inputs: + targetType: 'inline' + script: | + $VERSION_TAG = git describe --tags (git rev-list --tags --max-count=1) + Write-Host("##vso[task.setvariable variable=VERSION_TAG]$VERSION_TAG") + Write-Host($VERSION_TAG) - - task: DownloadPipelineArtifact@2 - inputs: - buildType: 'current' - targetPath: '$(Pipeline.Workspace)' - - - task: EsrpCodeSigning@1 - displayName: Sign Windows binary - inputs: - ConnectedServiceName: 'Code Signing' - FolderPath: '$(Pipeline.Workspace)\SqlcmdWindows_NT' - Pattern: '*.exe' - signConfigType: 'inlineSignParams' - SessionTimeout: '600' - MaxConcurrency: '5' - MaxRetryAttempts: '5' - inlineOperation: | - [ + - task: DownloadPipelineArtifact@2 + inputs: + buildType: 'current' + targetPath: '$(Pipeline.Workspace)' + + - task: EsrpCodeSigning@1 + displayName: Sign Windows binary + inputs: + ConnectedServiceName: 'Code Signing' + FolderPath: '$(Pipeline.Workspace)\SqlcmdWindows_NT' + Pattern: '*.exe' + signConfigType: 'inlineSignParams' + SessionTimeout: '600' + MaxConcurrency: '5' + MaxRetryAttempts: '5' + inlineOperation: | + [ + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "go-sqlcmd" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "https://github.com/microsoft/go-sqlcmd" + }, + { + "parameterName": "PageHash", + "parameterValue": "/NPH" + }, { - "keyCode": "CP-230012", - "operationSetCode": "SigntoolSign", - "parameters": [ - { - "parameterName": "OpusName", - "parameterValue": "go-sqlcmd" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "https://github.com/microsoft/go-sqlcmd" - }, - { - "parameterName": "PageHash", - "parameterValue": "/NPH" - }, - { - "parameterName": "FileDigest", - "parameterValue": "/fd sha256" - }, - { - "parameterName": "TimeStamp", - "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" - } - ], - "toolName": "signtool.exe", - "toolVersion": "6.2.9304.0" + "parameterName": "FileDigest", + "parameterValue": "/fd sha256" }, { - "keyCode": "CP-230012", - "operationSetCode": "SigntoolVerify", - "parameters": [ - { - "parameterName": "VerifyAll", - "parameterValue": "/all" - } - ], - "toolName": "signtool.exe", - "toolVersion": "6.2.9304.0" + "parameterName": "TimeStamp", + "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + } + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + }, + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolVerify", + "parameters": [ + { + "parameterName": "VerifyAll", + "parameterValue": "/all" } - ] - - task: ArchiveFiles@2 - displayName: Zip Windows binary - inputs: - rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdWindows_NT' - includeRootFolder: false - archiveType: 'zip' - archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-windows.zip' + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + } + ] + - task: ArchiveFiles@2 + displayName: Zip Windows binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdWindows_NT' + includeRootFolder: false + archiveType: 'zip' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-windows.zip' - - task: ArchiveFiles@2 - displayName: Tar Linux binary - inputs: - rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdLinux' - includeRootFolder: false - archiveType: 'tar' - tarCompression: 'bz2' - archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-linux.tar.bz2' + - task: ArchiveFiles@2 + displayName: Tar Linux binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdLinux' + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'bz2' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-linux.tar.bz2' - - task: ArchiveFiles@2 - displayName: Tar Darwin binary - inputs: - rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdDarwin' - includeRootFolder: false - archiveType: 'tar' - tarCompression: 'bz2' - archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-darwin.tar.bz2' + - task: ArchiveFiles@2 + displayName: Tar Darwin binary + inputs: + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdDarwin' + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'bz2' + archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-darwin.tar.bz2' - - task: PublishPipelineArtifact@1 - displayName: 'Publish release archives' - inputs: - targetPath: $(Build.ArtifactStagingDirectory) - artifactName: SqlcmdRelease + - task: PublishPipelineArtifact@1 + displayName: 'Publish release archives' + inputs: + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: SqlcmdRelease From dc30ef05f410d25e36492814c0db2b23cdf81b91 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 15:30:16 -0400 Subject: [PATCH 07/10] fix spacing --- build/azure-pipelines/build-product.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index d1a28077..3c2272a8 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -24,9 +24,9 @@ stages: - stage: CreatePackages displayName: Create packages to publish jobs: - - job: + - job: Sign_and_pack pool: - vmImage:'windows-latest' + vmImage: 'windows-latest' steps: - task: PowerShell@2 displayName: Set last tag to variable From 5ff6eab7a05e7fa687a97fc1e5547faddf6fa4b7 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 16:02:22 -0400 Subject: [PATCH 08/10] exclude codesign file from release --- build/azure-pipelines/build-product.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index 3c2272a8..18496aef 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -98,7 +98,7 @@ stages: - task: ArchiveFiles@2 displayName: Zip Windows binary inputs: - rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdWindows_NT' + rootFolderOrFile: '$(Pipeline.Workspace)\SqlcmdWindows_NT\Sqlcmd.exe' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-windows.zip' From e0995da31eb1d44c2694554ec15ed2ca61c70a77 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 16:33:58 -0400 Subject: [PATCH 09/10] add draft github release step --- build/azure-pipelines/build-product.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index 18496aef..cd87b31a 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -121,6 +121,12 @@ stages: tarCompression: 'bz2' archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-darwin.tar.bz2' + - task: GitHubRelease@0 + displayName: Publish draft Github release + inputs: + repositoryName: '$(Build.Repository.Name)' + gitHubConnection: CrossPlatBuildScripts + - task: PublishPipelineArtifact@1 displayName: 'Publish release archives' inputs: From f1f43573f6c99c65cddfc82c81e617add7564260 Mon Sep 17 00:00:00 2001 From: David Shiflet Date: Mon, 30 Aug 2021 16:49:25 -0400 Subject: [PATCH 10/10] remove github release --- build/azure-pipelines/build-product.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/build/azure-pipelines/build-product.yml b/build/azure-pipelines/build-product.yml index cd87b31a..18496aef 100644 --- a/build/azure-pipelines/build-product.yml +++ b/build/azure-pipelines/build-product.yml @@ -121,12 +121,6 @@ stages: tarCompression: 'bz2' archiveFile: '$(Build.ArtifactStagingDirectory)/sqlcmd-$(VERSION_TAG)-darwin.tar.bz2' - - task: GitHubRelease@0 - displayName: Publish draft Github release - inputs: - repositoryName: '$(Build.Repository.Name)' - gitHubConnection: CrossPlatBuildScripts - - task: PublishPipelineArtifact@1 displayName: 'Publish release archives' inputs: