diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d0f279f..0000000 --- a/.travis.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -language: rust -sudo: false -before_script: -- rustup component add rustfmt - -matrix: - include: - - rust: nightly - - rust: stable - before_deploy: cargo doc --all --no-deps - allow_failures: - - rust: nightly - -script: -- cargo fmt --all -- --check -- cargo test --all - -deploy: - provider: pages - skip_cleanup: true - github_token: $GH_TOKEN - target_branch: gh-pages - local_dir: target/doc - on: - branch: master - repo: tower-rs/tower - rust: stable - -env: - global: - secure: e3Rw+pE2XE5N9q/irDo4Od9K1+mGg1HZmanNjDW2abA0m+FaxpqmtSxDcPvsHEpms/vLVLg5AGN+nP7EDhNwHhm8gPjwdaNJi3v60+p3+oQz3bhR53t+8KFR35C3XuP17mXOLYbvM7zhFieQiRwknxcVh+oTHejZk7/tY511JfhQV4R72M9LGgfUCN+mvOTwyCuZ+UuTnxkklVQ2RzlzkZ8XTbfIw7P4DoHEbWCf1vV2D/sSdb73bU26Y9GggCHb+VFDlX+Xtu8BTAB+NHzNXlGcWqzvg0yAqepGUyFO9hbUjN1jj28IEdKeGRJi3lw50i+ZeX5a8+OBjzbFuGEtmBO1dfCMJxLNIWsLu5bd3t65pBHMzXIipJ5x6SfDtAREn8uK1GbP44bhTp+USDDaoUaZujlF8u1R7RJtbeUwYHZj3qDdeqSIVawDMPcWeR5lulUZu/Qna13PJtXAiM6oVy0HmRlqlDT5HvXyYX+vm8MGji8z+LL6eBim8MzSD93aEJhA/bBpkLTbpFGFtiypzx95DxSoNhogo2dhUE9noM+gKEDoSUDBdmUNiYdSIZKFaSej8DrLjwqDKAuDJlWzfYxNVe8CAjBsf3PB22MRTGAGTOt/70pUJOQjJ4Ec2wwJxAJu1mFGMprJ41nen5th3GwQO6Y7eFF67s7uI8R8rto= - -notifications: - email: - on_success: never diff --git a/README.md b/README.md index 43d8809..0aad3d4 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,13 @@ Tower is a library of modular and reusable components for building robust networking clients and servers. -[![Build Status](https://travis-ci.org/tower-rs/tower.svg?branch=master)](https://travis-ci.org/tower-rs/tower) -[![Gitter](https://badges.gitter.im/tower-rs/tower.svg)](https://gitter.im/tower-rs/tower) +[![Build Status][azure-badge]][azure-url] +[![Gitter][gitter-badge]][gitter-url] + +[azure-badge]: https://dev.azure.com/tower-rs/Tower/_apis/build/status/tower-rs.tower?branchName=master +[azure-url]: https://dev.azure.com/tower-rs/Tower/_build/latest?definitionId=1&branchName=master +[gitter-badge]: https://badges.gitter.im/tower-rs/tower.svg +[gitter-url]: https://gitter.im/tower-rs/tower ## Overview diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..6d779cd --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,35 @@ +trigger: ["master"] +pr: ["master"] + +jobs: +- template: ci/azure-rustfmt.yml + parameters: + name: rustfmt + +# Basic test run on all platforms +- template: ci/azure-test-stable.yml + parameters: + name: Linux_Stable + displayName: Test + vmImage: ubuntu-16.04 + crates: + - balance + - buffer + - discover + - filter + - in-flight-limit + - layer + - mock + - rate-limit + - reconnect + - retry + - service + - timeout + - util + - watch + +- template: ci/azure-deploy-docs.yml + parameters: + dependsOn: + - rustfmt + - Linux_Stable diff --git a/ci/azure-deploy-docs.yml b/ci/azure-deploy-docs.yml new file mode 100644 index 0000000..b3aa2bc --- /dev/null +++ b/ci/azure-deploy-docs.yml @@ -0,0 +1,40 @@ +parameters: + dependsOn: [] + +jobs: +- job: documentation + displayName: 'Deploy API Documentation' + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + pool: + vmImage: 'Ubuntu 16.04' + dependsOn: + - ${{ parameters.dependsOn }} + steps: + - template: azure-install-rust.yml + parameters: + platform: ${{parameters.name}} + rust_version: stable + - script: | + cargo doc --all --no-deps + cp -R target/doc '$(Build.BinariesDirectory)' + displayName: 'Generate Documentation' + - script: | + set -e + + ls -la + git init + git config user.name 'Deployment Bot (from Azure Pipelines)' + git config user.email 'deploy@tower-rs.com' + echo 'machine github.com' > ~/.netrc + echo 'login carllerche' >> ~/.netrc + echo 'password $(GITHUB_TOKEN)' >> ~/.netrc + git remote add origin https://github.com/tower-rs/tower + git branch gh-pages origin/gh-pages + git checkout gh-pages + git add . + git commit -m 'Deploy Tower API documentation' + git push origin gh-pages + env: + GITHUB_TOKEN: $(githubPersonalToken) + workingDirectory: '$(Build.BinariesDirectory)' + displayName: 'Deploy Documentation' diff --git a/ci/azure-install-rust.yml b/ci/azure-install-rust.yml new file mode 100644 index 0000000..5bc18f6 --- /dev/null +++ b/ci/azure-install-rust.yml @@ -0,0 +1,26 @@ +steps: + - ${{ if not(startsWith(parameters.platform, 'Windows')) }}: + # Linux and macOS. + - script: | + set -e + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN + echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" + env: + RUSTUP_TOOLCHAIN: ${{parameters.rust_version}} + displayName: Install rust + - ${{ if startsWith(parameters.platform, 'Windows') }}: + # Windows. + - script: | + echo "windows" + curl -sSf -o rustup-init.exe https://win.rustup.rs + rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN% + set PATH=%PATH%;%USERPROFILE%\.cargo\bin + echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" + env: + RUSTUP_TOOLCHAIN: ${{parameters.rust_version}} + displayName: Install rust (windows) + # All platforms. + - bash: | + rustc -Vv + cargo -V + displayName: Query rust and cargo versions diff --git a/ci/azure-rustfmt.yml b/ci/azure-rustfmt.yml new file mode 100644 index 0000000..fcb6315 --- /dev/null +++ b/ci/azure-rustfmt.yml @@ -0,0 +1,18 @@ +jobs: +# Check formatting +- job: ${{ parameters.name }} + displayName: Check rustfmt + pool: + vmImage: ubuntu-16.04 + steps: + - template: azure-install-rust.yml + parameters: + platform: Linux + # Pin the version of Rust in case rustfmt changes. + rust_version: 1.32.0 + - bash: | + rustup component add rustfmt + displayName: Install rustfmt + - bash: | + cargo fmt --all -- --check + displayName: Check formatting diff --git a/ci/azure-test-stable.yml b/ci/azure-test-stable.yml new file mode 100644 index 0000000..715e986 --- /dev/null +++ b/ci/azure-test-stable.yml @@ -0,0 +1,17 @@ +parameters: + crates: [] + +jobs: +- job: ${{ parameters.name }} + displayName: ${{ parameters.displayName }} + pool: + vmImage: ${{ parameters.vmImage }} + steps: + - template: azure-install-rust.yml + parameters: + platform: ${{parameters.name}} + rust_version: stable + + - ${{ each crate in parameters.crates }}: + - script: cargo test -p tower-${{ crate }} + displayName: cargo test -p tower-${{ crate }}