diff options
Diffstat (limited to 'azure-pipelines.yml')
-rw-r--r-- | azure-pipelines.yml | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..9ef202948 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,168 @@ +trigger: + branches: + include: + - 'devel' + - 'version-*' +pr: + branches: + include: + - '*' + +variables: +- name: skipci + value: false + +jobs: +- job: packages + + timeoutInMinutes: 90 # default `60` led to lots of cancelled jobs; use 0 for unlimited (may be undesirable) + + strategy: + matrix: + Linux_amd64: + vmImage: 'ubuntu-20.04' + CPU: amd64 + # regularly breaks, refs bug #17325 +# Linux_i386: +# # on 'ubuntu-16.04' (not supported anymore anyways) it errored with: +# # g++-multilib : Depends: gcc-multilib (>= 4:5.3.1-1ubuntu1) but it is not going to be installed +# vmImage: 'ubuntu-18.04' +# CPU: i386 + OSX_amd64: + vmImage: 'macOS-12' + CPU: amd64 + OSX_amd64_cpp: + vmImage: 'macOS-12' + CPU: amd64 + NIM_COMPILE_TO_CPP: true + Windows_amd64_batch0_3: + vmImage: 'windows-2019' + CPU: amd64 + # see also: `NIM_TEST_PACKAGES` + NIM_TESTAMENT_BATCH: "0_3" + Windows_amd64_batch1_3: + vmImage: 'windows-2019' + CPU: amd64 + NIM_TESTAMENT_BATCH: "1_3" + Windows_amd64_batch2_3: + vmImage: 'windows-2019' + CPU: amd64 + NIM_TESTAMENT_BATCH: "2_3" + + pool: + vmImage: $(vmImage) + + workspace: + clean: all + + steps: + - bash: git config --global core.autocrlf false + displayName: 'Disable auto conversion to CRLF by git (Windows-only)' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) + + - checkout: self + fetchDepth: 2 # see D20210329T004830 + + - bash: | + set -e + . ci/funs.sh + if nimIsCiSkip; then + echo '##vso[task.setvariable variable=skipci]true' + fi + displayName: 'Check whether to skip CI' + + - task: NodeTool@0 + inputs: + versionSpec: '20.x' + displayName: 'Install node.js 20.x' + condition: and(succeeded(), eq(variables['skipci'], 'false')) + + - bash: | + set -e + . ci/funs.sh + echo_run sudo apt-fast update -qq + DEBIAN_FRONTEND='noninteractive' \ + echo_run sudo apt-fast install --no-install-recommends -yq \ + libcurl4-openssl-dev libgc-dev libsdl1.2-dev libsfml-dev valgrind libc6-dbg + displayName: 'Install dependencies (amd64 Linux)' + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) + + - bash: | + set -e + . ci/funs.sh + echo_run sudo dpkg --add-architecture i386 + # Downgrade llvm: + # - llvm has to be downgraded to have 32bit version installed for sfml. + + cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel + Package: libllvm6.0 + Pin: origin "azure.archive.ubuntu.com" + Pin-Priority: 1001 + EOF + + # echo_run sudo apt-fast update -qq + echo_run sudo apt-fast update -qq || echo "failed, see bug #17343" + # `:i386` (e.g. in `libffi-dev:i386`) is needed otherwise you may get: + # `could not load: libffi.so` during dynamic loading. + DEBIAN_FRONTEND='noninteractive' \ + echo_run sudo apt-fast install --no-install-recommends --allow-downgrades -yq \ + g++-multilib gcc-multilib libcurl4-openssl-dev:i386 libgc-dev:i386 \ + libsdl1.2-dev:i386 libsfml-dev:i386 libglib2.0-dev:i386 libffi-dev:i386 + + cat << EOF > bin/gcc + #!/bin/bash + + exec $(which gcc) -m32 "\$@" + EOF + + cat << EOF > bin/g++ + #!/bin/bash + + exec $(which g++) -m32 "\$@" + EOF + + echo_run chmod 755 bin/gcc + echo_run chmod 755 bin/g++ + + displayName: 'Install dependencies (i386 Linux)' + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386')) + + - bash: brew install boehmgc make sfml + displayName: 'Install dependencies (OSX)' + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Darwin')) + + - bash: | + set -e + . ci/funs.sh + nimInternalInstallDepsWindows + echo_run echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' + + displayName: 'Install dependencies (Windows)' + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Windows_NT')) + + - bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin' + condition: and(succeeded(), eq(variables['skipci'], 'false')) + displayName: 'Add build binaries to PATH' + + - bash: . ci/funs.sh && nimCiSystemInfo + condition: and(succeeded(), eq(variables['skipci'], 'false')) + displayName: 'System information' + + - bash: . ci/funs.sh && nimBuildCsourcesIfNeeded CC=gcc ucpu=$(CPU) + condition: and(succeeded(), eq(variables['skipci'], 'false')) + displayName: 'Build csourcesAny' + + # this could be revived if performance justifies it (needs a few updates) + # - task: Cache@2 + # inputs: + # key: 'csourcesAny | "$(Agent.OS)" | $(CPU) | $(csources_version)' + # path: $(nim_csources) + # condition: and(succeeded(), eq(variables['skipci'], 'false')) + # displayName: 'Restore built csourcesAny' + + - bash: . ci/funs.sh && nimInternalBuildKochAndRunCI + # would could also show on failure: echo '##vso[task.complete result=Failed]' + condition: and(succeeded(), eq(variables['skipci'], 'false')) + displayName: 'koch, Run CI' + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) |