trigger:
branches:
include:
- master
- staging
- trying
tags:
include:
- v*.*.*
variables:
VM_IMAGE: ubuntu-latest
TOOLCHAIN: stable
CARGO_NET_RETRY: 3
CARGO_HTTP_CHECK_REVOKE: false
pool:
vmImage: $(VM_IMAGE)
strategy:
matrix:
aarch64-unknown-linux-gnu: { TARGET: aarch64-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
arm-unknown-linux-gnueabi: { TARGET: arm-unknown-linux-gnueabi, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
arm-unknown-linux-gnueabihf: { TARGET: arm-unknown-linux-gnueabihf, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
armv7-unknown-linux-gnueabihf: { TARGET: armv7-unknown-linux-gnueabihf, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
i586-unknown-linux-gnu: { TARGET: i586-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
i686-unknown-linux-gnu: { TARGET: i686-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: native qemu-user qemu-system }
mips-unknown-linux-gnu: { TARGET: mips-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
mipsel-unknown-linux-gnu: { TARGET: mipsel-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
mips64-unknown-linux-gnuabi64: { TARGET: mips64-unknown-linux-gnuabi64, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
mips64el-unknown-linux-gnuabi64: { TARGET: mips64el-unknown-linux-gnuabi64, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
powerpc-unknown-linux-gnu: { TARGET: powerpc-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
powerpc64-unknown-linux-gnu: { TARGET: powerpc64-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
powerpc64le-unknown-linux-gnu: { TARGET: powerpc64le-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-user qemu-system }
s390x-unknown-linux-gnu: { TARGET: s390x-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-system }
sparc64-unknown-linux-gnu: { TARGET: sparc64-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: qemu-system }
x86_64-unknown-linux-gnu: { TARGET: x86_64-unknown-linux-gnu, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1, RUNNERS: native qemu-user qemu-system, DEPLOY: 1, CRATES_IO_PUBLISH: 1 }
aarch64-unknown-linux-musl: { TARGET: aarch64-unknown-linux-musl, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
arm-unknown-linux-musleabihf: { TARGET: arm-unknown-linux-musleabihf, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
arm-unknown-linux-musleabi: { TARGET: arm-unknown-linux-musleabi, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
armv5te-unknown-linux-musleabi: { TARGET: armv5te-unknown-linux-musleabi, STD: 1, RUN: 1 }
armv7-unknown-linux-musleabihf: { TARGET: armv7-unknown-linux-musleabihf, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
i586-unknown-linux-musl: { TARGET: i586-unknown-linux-musl, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
i686-unknown-linux-musl: { TARGET: i686-unknown-linux-musl, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
mips-unknown-linux-musl: { TARGET: mips-unknown-linux-musl, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
mipsel-unknown-linux-musl: { TARGET: mipsel-unknown-linux-musl, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
x86_64-unknown-linux-musl: { TARGET: x86_64-unknown-linux-musl, STD: 1, OPENSSL: 0.10.24, RUN: 1, DEPLOY: 1 }
aarch64-linux-android: { TARGET: aarch64-linux-android, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
arm-linux-androideabi: { TARGET: arm-linux-androideabi, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
armv7-linux-androideabi: { TARGET: armv7-linux-androideabi, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
i686-linux-android: { TARGET: i686-linux-android, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
x86_64-linux-android: { TARGET: x86_64-linux-android, CPP: 1, STD: 1, OPENSSL: 0.10.24, RUN: 1 }
i686-apple-darwin: { TARGET: i686-apple-darwin, CPP: 1, DYLIB: 1, STD: 1, RUN: 1, VM_IMAGE: macOS-10.13 }
x86_64-apple-darwin: { TARGET: x86_64-apple-darwin, CPP: 1, DYLIB: 1, STD: 1, RUN: 1, VM_IMAGE: macOS-latest, DEPLOY: 1 }
x86_64-pc-windows-gnu: { TARGET: x86_64-pc-windows-gnu, CPP: 1, STD: 1, RUN: 1 }
x86_64-unknown-dragonfly: { TARGET: x86_64-unknown-dragonfly, CPP: 1, DYLIB: 1, OPENSSL: 0.10.24, TOOLCHAIN: nightly }
x86_64-unknown-netbsd: { TARGET: x86_64-unknown-netbsd, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24 }
sparcv9-sun-solaris: { TARGET: sparcv9-sun-solaris, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24 }
x86_64-sun-solaris: { TARGET: x86_64-sun-solaris, CPP: 1, DYLIB: 1, STD: 1, OPENSSL: 0.10.24 }
wasm32-unknown-emscripten: { TARGET: wasm32-unknown-emscripten, STD: 1 }
thumbv6m-none-eabi: { TARGET: thumbv6m-none-eabi, STD: 1 }
thumbv7em-none-eabi: { TARGET: thumbv7em-none-eabi, STD: 1 }
thumbv7em-none-eabihf: { TARGET: thumbv7em-none-eabihf, STD: 1 }
thumbv7m-none-eabi: { TARGET: thumbv7m-none-eabi, STD: 1 }
steps:
- template: ci/azure-install-rust.yml
- bash: echo "##vso[task.setvariable variable=OS]$(echo "${AGENT_OS}" | tr '[:upper:]' '[:lower:]')"
displayName: Set OS variable
- bash: echo "##vso[task.setvariable variable=BRANCH]${BUILD_SOURCEBRANCH##refs/branches/}"
displayName: Set BRANCH variable
condition: startswith(variables['Build.SourceBranch'], 'refs/branches/')
- bash: echo "##vso[task.setvariable variable=TAG]${BUILD_SOURCEBRANCH##refs/tags/}"
displayName: Set TAG variable
condition: startswith(variables['Build.SourceBranch'], 'refs/tags/')
- bash: ci/test.sh
displayName: Test
- bash: |
cargo publish --dry-run
displayName: Publish on crates.io
condition: and(succeeded(), and(startsWith(variables['TAG'], 'v'), eq(variables['CRATES_IO_PUBLISH'], '1')))
- bash: ci/build_release.sh
displayName: Build Release
condition: and(succeeded(), and(startswith(variables['TAG'], 'v'), eq(variables['DEPLOY'], '1')))
- task: GithubRelease@0
displayName: Create GitHub Release
inputs:
githubConnection: reitermarkus
assets: $(Build.ArtifactStagingDirectory)/cross-$(TAG)-$(TARGET).tar.gz
assetUploadMode: replace
action: edit
tag: $(TAG)
condition: and(succeeded(), and(startswith(variables['TAG'], 'v'), eq(variables['DEPLOY'], '1')))
- task: Docker@2
displayName: Log into Docker Hub
inputs:
containerRegistry: docker
command: login
condition: and(succeeded(), and(or(eq(variables['BRANCH'], 'master'), startsWith(variables['TAG'], 'v')), eq(variables['OS'], 'linux')))
- bash: ci/docker_push.sh
displayName: Push Image to Docker Hub
condition: and(succeeded(), and(or(eq(variables['BRANCH'], 'master'), startsWith(variables['TAG'], 'v')), eq(variables['OS'], 'linux')))