Files @ r24256:f327b1e5e543
Branch filter:

Location: cpp/openttd-patchpack/source/azure-pipelines/templates/release.yml

glx22
Fix: Restore compression of pdb
parameters:
  # If this is false, not all targets are triggered. For example:
  # The NSIS installer for Windows and the creation of debs only work for
  # releases. Not for any other type of binary. So they are skilled if this
  # is set to false.
  IsStableRelease: false

jobs:
- job: source
  displayName: 'Source'
  pool:
    vmImage: 'ubuntu-16.04'

  steps:
  - template: release-prepare-source.yml
  - script: |
      set -ex

      # Rename the folder to openttd-NNN-source
      mkdir openttd-$(Build.BuildNumber)
      find . -maxdepth 1 -not -name . -not -name openttd-$(Build.BuildNumber) -exec mv {} openttd-$(Build.BuildNumber)/ \;
      # Copy back release_date, as it is needed for the template 'release-bundles'
      cp openttd-$(Build.BuildNumber)/.release_date .release_date

      mkdir -p build/bundles
      tar --xz -cf build/bundles/openttd-$(Build.BuildNumber)-source.tar.xz openttd-$(Build.BuildNumber)
      zip -9 -r -q build/bundles/openttd-$(Build.BuildNumber)-source.zip openttd-$(Build.BuildNumber)
    displayName: 'Create bundle'
  - template: release-bundles.yml

- job: meta
  displayName: 'Metadata'
  pool:
    vmImage: 'ubuntu-16.04'
  dependsOn: source

  steps:
  - template: release-fetch-source.yml
  - script: |
      set -ex

      mkdir -p build/bundles
      cp .changelog build/bundles/changelog.txt
      cp .release_date build/bundles/released.txt
      cp README.md build/bundles/README.md
    displayName: 'Copy meta files'
  - template: release-bundles.yml
    parameters:
      CalculateChecksums: false

- job: docs
  displayName: 'Docs'
  pool:
    vmImage: 'ubuntu-16.04'
  dependsOn: source

  steps:
    - template: release-fetch-source.yml
    - template: linux-build.yml
      parameters:
        Image: compile-farm
        ContainerCommand: '$(Build.BuildNumber)'
        Tag: docs
    - template: linux-claim-bundles.yml
    - template: release-bundles.yml

- job: windows
  displayName: 'Windows'
  pool:
    vmImage: 'VS2017-Win2016'
  dependsOn: source

  strategy:
    matrix:
      Win32:
        BundlePlatform: 'win32'
        BuildArch: 'Win32'
        VcpkgTargetTriplet: 'x86-windows-static'
      Win64:
        BundlePlatform: 'win64'
        BuildArch: 'x64'
        VcpkgTargetTriplet: 'x64-windows-static'

  steps:
  - template: release-fetch-source.yml
  - template: windows-dependencies.yml
  - template: windows-dependency-zip.yml
  - template: windows-build.yml
    parameters:
      BuildArch: $(BuildArch)
      VcpkgTargetTriplet: $(VcpkgTargetTriplet)
      BuildConfiguration: 'RelWithDebInfo'
      ${{ if eq(parameters.IsStableRelease, true) }}:
        OptionUseNSIS: "YES"
  - task: VSBuild@1
    displayName: 'Create bundles'
    inputs:
      solution: build/PACKAGE.vcxproj
      configuration: 'RelWithDebInfo'
  - bash: |
      set -ex

      cp build/RelWithDebInfo/openttd.pdb build/bundles/openttd-$(Build.BuildNumber)-windows-$(BundlePlatform).pdb
      xz -9 build/bundles/openttd-$(Build.BuildNumber)-windows-$(BundlePlatform).pdb
    displayName: 'Copy PDB to bundles folder'
  - template: release-bundles.yml

- ${{ if eq(parameters.IsStableRelease, true) }}:
  - job: linux_stable
    displayName: 'Linux'
    pool:
      vmImage: 'ubuntu-16.04'
    dependsOn: source

    strategy:
      matrix:
        linux-ubuntu-xenial-i386-gcc:
          Tag: 'linux-ubuntu-xenial-i386-gcc'
        linux-ubuntu-xenial-amd64-gcc:
          Tag: 'linux-ubuntu-xenial-amd64-gcc'
        linux-ubuntu-bionic-i386-gcc:
          Tag: 'linux-ubuntu-bionic-i386-gcc'
        linux-ubuntu-bionic-amd64-gcc:
          Tag: 'linux-ubuntu-bionic-amd64-gcc'
        linux-ubuntu-focal-amd64-gcc:
          Tag: 'linux-ubuntu-focal-amd64-gcc'
        linux-debian-stretch-i386-gcc:
          Tag: 'linux-debian-stretch-i386-gcc'
        linux-debian-stretch-amd64-gcc:
          Tag: 'linux-debian-stretch-amd64-gcc'
        linux-debian-buster-i386-gcc:
          Tag: 'linux-debian-buster-i386-gcc'
        linux-debian-buster-amd64-gcc:
          Tag: 'linux-debian-buster-amd64-gcc'

    steps:
    - template: release-fetch-source.yml
    - template: linux-build.yml
      parameters:
        Image: compile-farm
        ContainerCommand: '$(Build.BuildNumber)'
        Tag: $(Tag)
    - template: linux-claim-bundles.yml
    - template: release-bundles.yml

- job: macos
  displayName: 'MacOS'
  pool:
    vmImage: 'macOS-10.14'
  dependsOn: source

  variables:
    MACOSX_DEPLOYMENT_TARGET: 10.9

  steps:
  - template: release-fetch-source.yml
  - template: osx-dependencies.yml
  - template: osx-build.yml
  - script: |
      set -ex

      cd build
      make package
    displayName: 'Create bundles'
  - template: release-bundles.yml

- job: manifest
  displayName: 'Manifest'
  pool:
    vmImage: 'ubuntu-16.04'
  dependsOn:
  - source
  - docs
  - windows
  - ${{ if eq(parameters.IsStableRelease, true) }}:
    - linux_stable
  - macos
  # "Skipped" is not a status, and is not succeeded. So it seems to be
  # considered failed. So we trigger if all the earlier jobs are done (which
  # might be succeeded, failed, or skipped), and run this job. This is not
  # optimal, but given the rules, it is the only way to get this to work (as
  # some jobs might be skipped).
  condition: succeededOrFailed()

  steps:
  - template: release-fetch-source.yml
  - template: release-manifest.yml
    ${{ if eq(parameters.IsStableRelease, true) }}:
      parameters:
        IsStableRelease: true
  - template: release-bundles.yml
    parameters:
      CalculateChecksums: false