azure-pipelines: add pipelines for linux, mac and win
This is the equivalent to the current AppVeyor + Travis setup.
This commit is contained in:
parent
c51857f434
commit
880df4de62
1 changed files with 148 additions and 0 deletions
148
azure-pipelines.yml
Normal file
148
azure-pipelines.yml
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux_amd64:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
CPU: amd64
|
||||||
|
Linux_i386:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
CPU: i386
|
||||||
|
OSX_amd64:
|
||||||
|
vmImage: 'macOS-10.14'
|
||||||
|
CPU: amd64
|
||||||
|
OSX_amd64_cpp:
|
||||||
|
vmImage: 'macOS-10.14'
|
||||||
|
CPU: amd64
|
||||||
|
NIM_COMPILE_TO_CPP: true
|
||||||
|
Windows_amd64:
|
||||||
|
vmImage: 'windows-2019'
|
||||||
|
CPU: amd64
|
||||||
|
Windows_amd64_pkg:
|
||||||
|
vmImage: 'windows-2019'
|
||||||
|
CPU: amd64
|
||||||
|
NIM_TEST_PACKAGES: true
|
||||||
|
|
||||||
|
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: eq(variables['Agent.OS'], 'Windows_NT')
|
||||||
|
|
||||||
|
- checkout: self
|
||||||
|
|
||||||
|
- bash: git clone --depth 1 https://github.com/nim-lang/csources.git
|
||||||
|
displayName: 'Checkout csources'
|
||||||
|
|
||||||
|
- task: NodeTool@0
|
||||||
|
inputs:
|
||||||
|
versionSpec: '8.x'
|
||||||
|
displayName: 'Install node.js 8.x'
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
sudo apt-fast update -qq
|
||||||
|
DEBIAN_FRONTEND='noninteractive' \
|
||||||
|
sudo apt-fast install --no-install-recommends -yq \
|
||||||
|
libcurl4-openssl-dev libgc-dev libsdl1.2-dev libsfml-dev
|
||||||
|
displayName: 'Install dependencies (amd64 Linux)'
|
||||||
|
condition: and(eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64'))
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
sudo dpkg --add-architecture i386
|
||||||
|
|
||||||
|
# Downgrade llvm, libgcc and libstdc++:
|
||||||
|
# - 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
|
||||||
|
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
|
||||||
|
DEBIAN_FRONTEND='noninteractive' \
|
||||||
|
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
|
||||||
|
|
||||||
|
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++
|
||||||
|
|
||||||
|
displayName: 'Install dependencies (i386 Linux)'
|
||||||
|
condition: and(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')
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
mkdir dist
|
||||||
|
curl -L https://nim-lang.org/download/mingw64-6.3.0.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'
|
||||||
|
|
||||||
|
displayName: 'Install dependencies (Windows)'
|
||||||
|
condition: eq(variables['Agent.OS'], 'Windows_NT')
|
||||||
|
|
||||||
|
- bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin'
|
||||||
|
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
|
||||||
|
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'
|
||||||
|
env:
|
||||||
|
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue