appveyor.yml 3.36 KB
version: "{branch}-{build}"

branches:
 only:
  - master
  - next
  - rc
  - /try-.*/
  # For tags, branch = tag if GitHub couldn't work out the base branch.
  - /release-.*/

environment:
 PY_PYTHON: 2.7-32
 encFileKey:
  secure: ekOvuyywHuDdGZmRmoj+b3jfrq39A2xlx4RD5ZUGd/8=
 symstore: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe

init:
 - ps: |
     if ($env:APPVEYOR_REPO_TAG_NAME -and $env:APPVEYOR_REPO_TAG_NAME.StartsWith("release-")) {
      # Strip "release-" prefix.
      $version = $env:APPVEYOR_REPO_TAG_NAME.Substring(8)
      Set-AppveyorBuildVariable "release" "1"
      if ($env:APPVEYOR_REPO_TAG_NAME.Contains("rc")) {
       $versionType = "beta"
      } else {
       $versionType = "stable"
      }
     } else {
      $version = "$env:APPVEYOR_REPO_BRANCH-$env:APPVEYOR_BUILD_NUMBER," + $env:APPVEYOR_REPO_COMMIT.Substring(0, 8)
      # The version is unique even for rebuilds, so we can use it for the AppVeyor version.
      Update-AppveyorBuild -Version $version
      if (!$env:APPVEYOR_REPO_BRANCH.StartsWith("try-")) {
       $versionType = "snapshot:$env:APPVEYOR_REPO_BRANCH"
      }
     }
     Set-AppveyorBuildVariable "version" $version
     if ($versionType) {
      Set-AppveyorBuildVariable "versionType" $versionType
     }

clone_depth: 1

install:
 - cd appveyor
 # Decrypt files.
 - openssl enc -aes-256-cbc -d -pass pass:%encFileKey% -in authenticode.pfx.enc -out authenticode.pfx
 - openssl enc -aes-256-cbc -d -pass pass:%encFileKey% -in ssh_id_rsa.enc -out ssh_id_rsa
 # Install ssh stuff.
 - copy ssh_id_rsa %userprofile%\.ssh\id_rsa
 - type ssh_known_hosts >> %userprofile%\.ssh\known_hosts
 - cd ..
 - git submodule update --init

build_script:
 - ps: |
     $sconsArgs = "launcher version=$env:version"
     if ($env:release) {
      $sconsArgs += " changes userGuide developerGuide release=1"
     }
     if ($env:versionType) {
      $sconsArgs += " updateVersionType=$env:versionType"
     }
     $sconsArgs += ' publisher="NV Access"'
     $sconsArgs += " certFile=appveyor\authenticode.pfx certTimestampServer=http://timestamp.digicert.com"
     $sconsArgs += " version_build=$env:APPVEYOR_BUILD_NUMBER"
     # We use cmd to run scons because PowerShell throws exceptions if warnings get dumped to stderr.
     # It's possible to work around this, but the workarounds have annoying side effects.
     Set-AppveyorBuildVariable "sconsArgs" $sconsArgs
 - 'echo scons args: %sconsArgs%'
 - py scons.py %sconsArgs%
 # Build symbol store.
 - ps: |
     foreach ($syms in "source\*.pdb", "source\lib\*.pdb", "source\lib64\*.pdb", "source\synthDrivers\*.pdb") {
      & $env:symstore add /s symbols /compress -:NOREFS /t NVDA /f $syms
     }
 - cd symbols
 - 7z a -tzip -r ..\output\symbols.zip *.pd_
 - cd ..

artifacts:
 - path: output\*
 - path: output\*\*

deploy_script:
 - ps: |
     if ($env:versionType) {
      # Not a try build.
      $exe = Get-ChildItem -Name output\*.exe
      $hash = (Get-FileHash "output\$exe" -Algorithm SHA1).Hash.ToLower()
      $data = @{
       jobId=$env:APPVEYOR_JOB_ID;
       commit=$env:APPVEYOR_REPO_COMMIT;
       version=$env:version; versionType=$env:versionType;
       avVersion=$env:APPVEYOR_BUILD_VERSION;
       branch=$env:APPVEYOR_REPO_BRANCH;
       exe=$exe; hash=$hash;
       artifacts=$artifacts
      }
      ConvertTo-Json -InputObject $data -Compress | ssh nvaccess@exbi.nvaccess.org nvdaAppveyorHook
     }