diff options
Diffstat (limited to 'azure-pipelines.yml')
-rw-r--r-- | azure-pipelines.yml | 165 |
1 files changed, 90 insertions, 75 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0898755b6..9ef202948 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,3 +1,17 @@ +trigger: + branches: + include: + - 'devel' + - 'version-*' +pr: + branches: + include: + - '*' + +variables: +- name: skipci + value: false + jobs: - job: packages @@ -6,25 +20,34 @@ jobs: strategy: matrix: Linux_amd64: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-20.04' CPU: amd64 - Linux_i386: - vmImage: 'ubuntu-16.04' - CPU: i386 + # 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-10.14' + vmImage: 'macOS-12' CPU: amd64 OSX_amd64_cpp: - vmImage: 'macOS-10.14' + vmImage: 'macOS-12' CPU: amd64 NIM_COMPILE_TO_CPP: true - Windows_amd64: + 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 - Windows_amd64_pkg: + NIM_TESTAMENT_BATCH: "1_3" + Windows_amd64_batch2_3: vmImage: 'windows-2019' CPU: amd64 - NIM_TEST_PACKAGES: true + NIM_TESTAMENT_BATCH: "2_3" pool: vmImage: $(vmImage) @@ -35,119 +58,111 @@ jobs: steps: - bash: git config --global core.autocrlf false displayName: 'Disable auto conversion to CRLF by git (Windows-only)' - condition: eq(variables['Agent.OS'], 'Windows_NT') + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) - checkout: self + fetchDepth: 2 # see D20210329T004830 - - bash: git clone --depth 1 https://github.com/nim-lang/csources.git - displayName: 'Checkout csources' + - 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: '8.x' - displayName: 'Install node.js 8.x' + versionSpec: '20.x' + displayName: 'Install node.js 20.x' + condition: and(succeeded(), eq(variables['skipci'], 'false')) - bash: | - sudo apt-fast update -qq + set -e + . ci/funs.sh + echo_run sudo apt-fast update -qq DEBIAN_FRONTEND='noninteractive' \ - sudo apt-fast install --no-install-recommends -yq \ + 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(eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) - bash: | - sudo dpkg --add-architecture i386 - - # Downgrade llvm, libgcc and libstdc++: + 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. - # - libgcc and libstdc++ have to be downgraded as an optimization to - # prevent the use of the toolchain ppa, which has a terrible download - # speed. + cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel - Package: libllvm6.0 libgcc1 libstdc++6 + Package: libllvm6.0 Pin: origin "azure.archive.ubuntu.com" Pin-Priority: 1001 - - Package: * - Pin: release o=LP-PPA-ubuntu-toolchain-r-test - Pin-Priority: 100 EOF - sudo apt-fast update -qq + # 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' \ - sudo apt-fast install --no-install-recommends --allow-downgrades -yq \ + 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 + 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 - chmod 755 bin/gcc - chmod 755 bin/g++ + echo_run chmod 755 bin/gcc + echo_run chmod 755 bin/g++ displayName: 'Install dependencies (i386 Linux)' - condition: and(eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386')) + 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: eq(variables['Agent.OS'], 'Darwin') + condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Darwin')) - bash: | - mkdir dist - curl -L https://nim-lang.org/download/mingw64.7z -o dist/mingw64.7z - curl -L https://nim-lang.org/download/dlls.zip -o dist/dlls.zip - 7z x dist/mingw64.7z -odist - 7z x dist/dlls.zip -obin - echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' + set -e + . ci/funs.sh + nimInternalInstallDepsWindows + echo_run echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' displayName: 'Install dependencies (Windows)' - condition: eq(variables['Agent.OS'], 'Windows_NT') + 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: | - echo 'PATH:' "$PATH" - echo '##[section]gcc version' - gcc -v - echo '##[section]nodejs version' - node -v - echo '##[section]make version' - make -v + - bash: . ci/funs.sh && nimCiSystemInfo + condition: and(succeeded(), eq(variables['skipci'], 'false')) displayName: 'System information' - - bash: | - ncpu= - case '$(Agent.OS)' in - 'Linux') - ncpu=$(nproc) - ;; - 'Darwin') - ncpu=$(sysctl -n hw.ncpu) - ;; - 'Windows_NT') - ncpu=$NUMBER_OF_PROCESSORS - ;; - esac - [[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1 - - make -C csources -j $ncpu CC=gcc ucpu=$(CPU) - displayName: 'Build csources' - - - bash: nim c koch - displayName: 'Build koch' - - # set result to omit the "bash exited with error code '1'" message - - bash: | - ./koch runCI || echo '##vso[task.complete result=Failed]' - displayName: 'Run CI' + - 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) |