diff options
author | Patric Stout <truebrain@openttd.org> | 2018-12-26 19:36:16 +0100 |
---|---|---|
committer | Patric Stout <truebrain@openttd.org> | 2018-12-27 21:21:28 +0100 |
commit | e61904c3e61119a5ce737f67e593148a7ef53c48 (patch) | |
tree | c8e7f2290cf3b3be15139fc22e40c27591ff72ad | |
parent | e8f9975409ab21b59c3357c49d4ec7cfaf4816ec (diff) | |
download | openttd-e61904c3e61119a5ce737f67e593148a7ef53c48.tar.xz |
Change: use Azure Pipelines instead of self-hosted Jenkins for CI
-rw-r--r-- | Jenkinsfile | 75 | ||||
-rw-r--r-- | azure-pipelines-ci.yml | 105 |
2 files changed, 105 insertions, 75 deletions
diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index af7968e71..000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env groovy - -// The stages we run one by one -// Please don't add more than 2 items in a single stage; this hurts performance -def ci_stages = [ - "Checkers": [ - "commit-checker": "openttd/compile-farm-ci:commit-checker", - ], - "Compilers": [ - "linux-amd64-gcc-6": "openttd/compile-farm-ci:linux-amd64-gcc-6", - "linux-amd64-clang-3.8": "openttd/compile-farm-ci:linux-amd64-clang-3.8", - ], - "Archs": [ - "linux-i386-gcc-6": "openttd/compile-farm-ci:linux-i386-gcc-6", - ], - "OS": [ - "osx-10.9": "openttd/compile-farm-ci:osx-10.9", - ], -] - -def generateStage(targets) { - return targets.collectEntries{ key, target -> - ["${key}": generateCI(key, target)] - } -} - -def generateCI(display_name, image_name) { - return { - githubNotify context: 'openttd/' + display_name, description: 'This commit is being built', status: 'PENDING' - - try { - dir("${display_name}") { - unstash "source" - - docker.image("${image_name}").pull() - docker.image("${image_name}").withRun("--volumes-from ${hostname} --workdir " + pwd()) { c -> - sh "docker logs --follow ${c.id}; exit `docker wait ${c.id}`" - } - } - - githubNotify context: 'openttd/' + display_name, description: 'The commit looks good', status: 'SUCCESS' - } - catch (error) { - githubNotify context: 'openttd/' + display_name, description: 'The commit cannot be built', status: 'FAILURE' - throw error - } - } -} - -node { - ansiColor('xterm') { - stage("Checkout") { - checkout scm - - // Ensure user.email and user.name is set, otherwise rebase cannot work - sh "git config user.email 'info@openttd.org'" - sh "git config user.name 'OpenTTD CI'" - - // Ensure we also have origin/master available - sh "git fetch --no-tags origin master:refs/remotes/origin/master" - - // Try to rebase to origin/master; if this fails, fail the CI - sh "git rebase origin/master" - - stash name: "source", useDefaultExcludes: false - } - - ci_stages.each { ci_stage -> - stage(ci_stage.key) { - parallel generateStage(ci_stage.value) - } - } - } -} - diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml new file mode 100644 index 000000000..0bc5c282d --- /dev/null +++ b/azure-pipelines-ci.yml @@ -0,0 +1,105 @@ +trigger: none +pr: +- master + +jobs: +- job: windows + displayName: 'Windows' + pool: + vmImage: 'VS2017-Win2016' + + strategy: + matrix: + Win32: + BuildPlatform: 'Win32' + Win64: + BuildPlatform: 'x64' + + steps: + # Rebase to origin/master for every PR. This means users don't have to + # rebase every time master changes. As long as the PR applies cleanly, we + # will validate it. + - script: | + git config user.email 'info@openttd.org' + git config user.name 'OpenTTD CI' + git rebase origin/master + displayName: 'Rebase to master' + - task: DownloadBuildArtifacts@0 + displayName: 'Download dependencies' + inputs: + buildType: specific + project: '8da578ca-c6cf-47b8-b489-d54a7b188de8' + pipeline: 2 + artifactName: 'windows-dependencies' + downloadPath: '$(Build.ArtifactStagingDirectory)' + - script: $(Build.ArtifactStagingDirectory)\windows-dependencies\vcpkg.exe integrate install + displayName: 'Install dependencies' + - task: VSBuild@1 + displayName: 'Build' + inputs: + solution: 'projects/openttd_vs141.sln' + platform: $(BuildPlatform) + configuration: Release + maximumCpuCount: true + # Running the regression is currently not possibe via MSVC (console is not redirected) + +- job: linux + displayName: 'Linux' + pool: + vmImage: 'ubuntu-16.04' + + strategy: + matrix: + commit-checker: {} + linux-amd64-clang-3.8: {} + linux-amd64-gcc-6: {} + linux-i386-gcc-6: {} + + steps: + # Rebase to origin/master for every PR. This means users don't have to + # rebase every time master changes. As long as the PR applies cleanly, we + # will validate it. + - script: | + git config user.email 'info@openttd.org' + git config user.name 'OpenTTD CI' + git rebase origin/master + displayName: 'Rebase to master' + - task: Docker@1 + displayName: 'Build and test' + inputs: + command: 'Run an image' + imageName: openttd/compile-farm-ci:$(Agent.JobName) + volumes: '$(Build.SourcesDirectory):$(Build.SourcesDirectory)' + workingDirectory: '$(Build.SourcesDirectory)' + runInBackground: false + +- job: macos + displayName: 'MacOS' + pool: + vmImage: 'macOS-10.13' + + steps: + # Rebase to origin/master for every PR. This means users don't have to + # rebase every time master changes. As long as the PR applies cleanly, we + # will validate it. + - script: | + git config user.email 'info@openttd.org' + git config user.name 'OpenTTD CI' + git rebase origin/master + displayName: 'Rebase to master' + - script: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config lzo xz libpng + displayName: 'Install dependencies' + - bash: | + set -ex + mkdir -p ~/Documents/OpenTTD/baseset + cd ~/Documents/OpenTTD/baseset + wget https://binaries.openttd.org/extra/opengfx/0.5.2/opengfx-0.5.2-all.zip + unzip opengfx-0.5.2-all.zip + rm -f opengfx-0.5.2-all.zip + displayName: 'Install OpenGFX' + - script: './configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig --enable-static' + displayName: 'Configure' + - script: 'make -j2' + displayName: 'Build' + - script: 'make regression' + displayName: 'Test' |