summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2018-12-26 19:36:16 +0100
committerPatric Stout <truebrain@openttd.org>2018-12-27 21:21:28 +0100
commite61904c3e61119a5ce737f67e593148a7ef53c48 (patch)
treec8e7f2290cf3b3be15139fc22e40c27591ff72ad
parente8f9975409ab21b59c3357c49d4ec7cfaf4816ec (diff)
downloadopenttd-e61904c3e61119a5ce737f67e593148a7ef53c48.tar.xz
Change: use Azure Pipelines instead of self-hosted Jenkins for CI
-rw-r--r--Jenkinsfile75
-rw-r--r--azure-pipelines-ci.yml105
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'