mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 00:34:27 +00:00
This release pipeline creates all the official release binaries, and publishes them as artifacts. Currently it can only produce nightlies and custom builds; stable/testing release binaries are untested. This commit also splits up the pipeline in small bits, to both improve readability, and to share code with the CI pipeline where possible.
170 lines
4.9 KiB
YAML
170 lines
4.9 KiB
YAML
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 bundles
|
|
tar --xz -cf bundles/openttd-$(Build.BuildNumber)-source.tar.xz openttd-$(Build.BuildNumber)
|
|
zip -9 -r -q 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 bundles
|
|
cp .changelog bundles/changelog.txt
|
|
cp .release_date bundles/released.txt
|
|
cp README.md 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:
|
|
BuildPlatform: 'Win32'
|
|
BundlePlatform: 'win32'
|
|
Win64:
|
|
BuildPlatform: 'x64'
|
|
BundlePlatform: 'win64'
|
|
|
|
steps:
|
|
- template: release-fetch-source.yml
|
|
- template: windows-dependencies.yml
|
|
- template: windows-dependency-zip.yml
|
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
|
- template: windows-dependency-nsis.yml
|
|
- template: windows-build.yml
|
|
parameters:
|
|
BuildPlatform: $(BuildPlatform)
|
|
- bash: |
|
|
set -ex
|
|
make -f Makefile.msvc bundle_pdb bundle_zip PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
|
displayName: 'Create bundles'
|
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
|
- bash: |
|
|
set -ex
|
|
# NSIS will be part of the Hosted image in the next update. Till then, we set the PATH ourself
|
|
export PATH="${PATH}:/c/Program Files (x86)/NSIS"
|
|
make -f Makefile.msvc bundle_exe PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
|
displayName: 'Create installer bundle'
|
|
- 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: {}
|
|
linux-ubuntu-xenial-amd64-gcc: {}
|
|
linux-ubuntu-bionic-i386-gcc: {}
|
|
linux-ubuntu-bionic-amd64-gcc: {}
|
|
linux-debian-jessie-i386-gcc: {}
|
|
linux-debian-jessie-amd64-gcc: {}
|
|
linux-debian-stretch-i386-gcc: {}
|
|
linux-debian-stretch-amd64-gcc: {}
|
|
|
|
steps:
|
|
- template: release-fetch-source.yml
|
|
- template: linux-build.yml
|
|
parameters:
|
|
Image: compile-farm
|
|
ContainerCommand: '$(Build.BuildNumber)'
|
|
Tag: $(Agent.JobName)
|
|
- template: linux-claim-bundles.yml
|
|
- template: release-bundles.yml
|
|
|
|
- job: macos
|
|
displayName: 'MacOS'
|
|
pool:
|
|
vmImage: 'macOS-10.13'
|
|
dependsOn: source
|
|
|
|
steps:
|
|
- template: release-fetch-source.yml
|
|
- template: osx-dependencies.yml
|
|
- template: osx-build.yml
|
|
- script: 'make bundle_zip bundle_dmg BUNDLE_NAME=openttd-$(Build.BuildNumber)-macosx'
|
|
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
|
|
- template: release-bundles.yml
|
|
parameters:
|
|
CalculateChecksums: false
|