aboutsummaryrefslogtreecommitdiff
path: root/scripts/azure-pipelines/signing.yml
blob: b7a3137d99d7fcdd6912769dd49a46789049c787 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# This script is used internally to produce signed vcpkg builds.
# It uses machines / tasks that are not exposed here on GitHub, as
# the hardware on which we allow signing is restricted.

trigger: none

variables:
  TeamName: vcpkg
jobs:
  - job: windows
    displayName: "Windows"
    dependsOn:
    pool:
      name: 'VSEng-MicroBuildVS2019'
      demands:
        - CMAKE
    steps:
    - task: PoliCheck@1
      inputs:
        inputType: 'Basic'
        targetType: 'F'
        targetArgument: '$(Build.SourcesDirectory)'
        result: 'PoliCheck.xml'
    - task: CmdLine@2
      displayName: "Build vcpkg with CMake"
      inputs:
        failOnStderr: true
        script: |
          call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x86 -host_arch=x86
          cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -B "$(Build.StagingDirectory)" -S toolsrc
          ninja.exe -C "$(Build.StagingDirectory)"
    - task: MicroBuildSigningPlugin@2
      inputs:
        signType: 'real'
        feedSource: 'https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json'
    - task: NuGetToolInstaller@1
      inputs:
        versionSpec: 5.7
    - task: NuGetCommand@2
      displayName: 'NuGet Restore MicroBuild Signing Extension'
      inputs:
        command: 'restore'
        restoreSolution: 'scripts/azure-pipelines/windows/signing.signproj'
        feedsToUse: 'config'
        restoreDirectory: '$(Build.SourcesDirectory)\scripts\azure-pipelines\packages'
    - task: MSBuild@1
      displayName: 'Sign vcpkg.exe'
      inputs:
        solution: 'scripts\azure-pipelines\windows\signing.signproj'
        msbuildArguments: '/p:OutDir=$(Build.ArtifactStagingDirectory)\ /p:IntermediateOutputPath=$(Build.StagingDirectory)\'
    - task: BinSkim@3
      inputs:
        InputType: 'CommandLine'
        arguments: 'analyze "$(Build.StagingDirectory)\vcpkg.exe"'
    - task: BinSkim@3
      inputs:
        InputType: 'CommandLine'
        arguments: 'analyze "$(Build.StagingDirectory)\tls12-download.exe"'
    - task: PublishBuildArtifacts@1
      displayName: 'Publish vcpkg.exe'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)\vcpkg.exe'
        ArtifactName: 'Windows'
        publishLocation: 'Container'
    - task: PublishBuildArtifacts@1
      displayName: 'Publish vcpkg.pdb'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)\vcpkg.pdb'
        ArtifactName: 'Windows'
        publishLocation: 'Container'
    - task: PublishBuildArtifacts@1
      displayName: 'Publish tls12-download.exe'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)\tls12-download.exe'
        ArtifactName: 'Windows'
        publishLocation: 'Container'
    - task: PublishBuildArtifacts@1
      displayName: 'Publish tls12-download.pdb'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)\tls12-download.pdb'
        ArtifactName: 'Windows'
        publishLocation: 'Container'
    - task: MicroBuildCleanup@1
      condition: succeededOrFailed()
      displayName: MicroBuild Cleanup
  - job: macos_build
    displayName: 'MacOS Build'
    pool:
      vmImage: macOS-10.15
    steps:
    - task: CmdLine@2
      displayName: "Build vcpkg with CMake"
      inputs:
        failOnStderr: true
        script: |
          cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=OFF -B "$(Build.StagingDirectory)" -S toolsrc
          make -j 8 -C "$(Build.StagingDirectory)"
          zip "$(Build.StagingDirectory)/vcpkg.zip" "$(Build.StagingDirectory)/vcpkg"
    - task: PublishBuildArtifacts@1
      displayName: "Publish Unsigned MacOS Binary"
      inputs:
        PathtoPublish: '$(Build.StagingDirectory)/vcpkg.zip'
        ArtifactName: 'staging'
        publishLocation: 'Container'
  - job: macos_sign
    displayName: 'MacOS Sign'
    dependsOn: macos_build
    pool:
      name: VSEng-MicroBuildVS2019
    steps:
      - checkout: none
      - task: DownloadBuildArtifacts@0
        displayName: 'Download Unsigned Binary'
        inputs:
          artifactName: staging
      - task: ms-vseng.MicroBuildTasks.7973a23b-33e3-4b00-a7d9-c06d90f8297f.MicroBuildSignMacFiles@1
        displayName: 'Sign Mac Files'
        inputs:
          SigningTarget: '$(Build.ArtifactStagingDirectory)\staging\vcpkg.zip'
          SigningCert: 8003
      - task: PublishBuildArtifacts@1
        displayName: 'Publish Signed Binary'
        inputs:
          PathtoPublish: '$(Build.ArtifactStagingDirectory)\staging\vcpkg.zip'
          ArtifactName: 'MacOS'