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: "ON" - 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