Skip to content

Commit

Permalink
Move CI from GitHub Actions to Azure DevOps Pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaspustina committed Feb 8, 2020
1 parent 049259d commit eb48d29
Show file tree
Hide file tree
Showing 7 changed files with 199 additions and 177 deletions.
152 changes: 152 additions & 0 deletions .ci/azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: $(Build.sourceBranchName)-$(Date:yyyyMMdd)$(Rev:.r)

# Set global variables
variables:
crate_name: 'centerdevice-rs'
rust_minimum_version: 1.36.0
# cf. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops
macos_image_name: 'macOS-latest'
linux_image_name: 'ubuntu-18.04'

trigger:
branches:
include: ['*']
tags:
include: ['*']

schedules:
- cron: "0 0 * * *"
displayName: Daily midnight build
branches:
include:
- master

stages:
- stage: Check_Build_Test
displayName: "Check, Build, and Test"
jobs:
- job: Fmt
strategy:
matrix:
linux-nightly:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: nightly
pool:
vmImage: $(imageName)
steps:
- template: templates/install_rust.yml
parameters:
rustup_toolchain: $(rustup_toolchain)
- template: templates/version_information.yml
- script: cargo fmt -- --check
displayName: Run Fmt

- job: Audit
strategy:
matrix:
linux-stable:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: stable
pool:
vmImage: $(imageName)
steps:
- template: templates/install_rust.yml
parameters:
rustup_toolchain: $(rustup_toolchain)
- template: templates/install_dependencies.yml
- script: cargo install cargo-audit
displayName: Install Cargo Audit
- template: templates/version_information.yml
- script: cargo audit
displayName: Run Cargo Audit

- job: Clippy
strategy:
matrix:
mac-stable:
imageName: ${{ variables.macos_image_name }}
rustup_toolchain: stable
linux-stable:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: stable
pool:
vmImage: $(imageName)
steps:
- template: templates/install_rust.yml
parameters:
rustup_toolchain: $(rustup_toolchain)
- template: templates/install_dependencies.yml
- template: templates/version_information.yml
- script: cargo clippy --all --all-features -- -D warnings $(source ".clippy.args")
displayName: Run Clippy

- job: 'Build_n_Test'
displayName: "Build and Test"
strategy:
matrix:
mac-minimum-${{ variables.rust_minimum_version }}:
imageName: ${{ variables.macos_image_name }}
rustup_toolchain: ${{ variables.rust_minimum_version }}
mac-stable:
imageName: ${{ variables.macos_image_name }}
rustup_toolchain: stable
mac-beta:
imageName: ${{ variables.macos_image_name }}
rustup_toolchain: beta
linux-minimum-${{ variables.rust_minimum_version }}:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: ${{ variables.rust_minimum_version }}
linux-stable:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: stable
linux-beta:
imageName: ${{ variables.linux_image_name }}
rustup_toolchain: beta
pool:
vmImage: $(imageName)
steps:
- template: templates/install_rust.yml
parameters:
rustup_toolchain: $(rustup_toolchain)
- template: templates/install_dependencies.yml
- template: templates/version_information.yml
- script: cargo build --all --all-features --tests --examples --benches
displayName: Cargo build
- script: cargo test --all --all-features --examples
displayName: Cargo test

- stage: Publish_Release
displayName: "Publish Release"
dependsOn: Build_Release_Artefacts
condition: startsWith(variables['build.sourceBranch'], 'refs/tags/')
jobs:
- job: 'Publish_To_GitHub'
displayName: "Publish to GitHub"
steps:
- task: GitHubRelease@0
displayName: "Create GitHub Release"
inputs:
gitHubConnection: 'lukaspustina-releaseupload'
repositoryName: '$(Build.Repository.Name)'
action: create
target: '$(Build.SourceVersion)'
tagSource: 'auto'
tagPattern: 'v.*'
tag: $(tagName)
isDraft: false
isPreRelease: false
addChangeLog: true
compareWith: 'lastFullRelease'
- job: 'Publish_To_Crates_Io'
displayName: "Publish to crates.io"
steps:
- template: templates/install_rust.yml
parameters:
rustup_toolchain: stable
- template: templates/install_dependencies.yml
- template: templates/version_information.yml
- script: cargo publish
displayName: "Cargo publish"
env:
CARGO_REGISTRY_TOKEN: $(CARGO_REGISTRY_TOKEN)

4 changes: 4 additions & 0 deletions .ci/templates/install_dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
steps:
- script: |
echo "No dependencies required for this crate."
displayName: Install Dependencies
15 changes: 15 additions & 0 deletions .ci/templates/install_rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
parameters:
rustup_toolchain: stable

steps:
- script: |
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain ${{ parameters.rustup_toolchain }}
echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin"
displayName: Install rust ${{ parameters.rustup_toolchain }}
- script: rustup default ${{ parameters.rustup_toolchain }}
displayName: Setting rust default toolchain to ${{ parameters.rustup_toolchain }}
- script: rustup component add clippy
displayName: Install clippy
- script: rustup component add rustfmt
displayName: Install rustfmt

8 changes: 8 additions & 0 deletions .ci/templates/restore_cargo_and_target.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
steps:
- download: current
artifact: Cargo
displayName: Restoring .cargo directory
- publish: current
artifact: Target
displayName: Restoring target directory

8 changes: 8 additions & 0 deletions .ci/templates/save_cargo_and_target.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
steps:
- publish: /home/vsts/.cargo
artifact: Cargo
displayName: Storing .cargo directory
- publish: $(Build.SourcesDirectory)/target
artifact: Target
displayName: Storing target directory

12 changes: 12 additions & 0 deletions .ci/templates/version_information.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
steps:
- script: |
rustup --version
rustup toolchain list
rustc --version
cargo --version
cargo --list
cargo clippy --version && echo "Clippy installed"
cargo fmt --version && echo "Rustfmt installed"
clang --version && echo "Clang installed"
displayName: Gather Build Environment Information
177 changes: 0 additions & 177 deletions .github/workflows/ci.yml

This file was deleted.

0 comments on commit eb48d29

Please sign in to comment.