ci: Add GitHub releases to CI (#95)

This commit is contained in:
Matan Kushner
2019-07-14 17:54:45 -04:00
committed by GitHub
parent 77ba97df19
commit 0703a74048
17 changed files with 367 additions and 83 deletions
-16
View File
@@ -1,16 +0,0 @@
jobs:
# Check formatting
- job: ${{ parameters.name }}
displayName: Check rustfmt
pool:
vmImage: ubuntu-16.04
steps:
- template: azure-install-rust.yml
parameters:
rust_version: stable
- script: |
rustup component add rustfmt
displayName: Install rustfmt
- script: |
cargo fmt --all -- --check
displayName: Check formatting
-13
View File
@@ -1,13 +0,0 @@
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
pool:
vmImage: ubuntu-16.04
steps:
- template: azure-install-rust.yml
parameters:
rust_version: nightly
- script: cargo check --all
displayName: cargo +nightly check --all
-26
View File
@@ -1,26 +0,0 @@
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
strategy:
matrix:
Linux:
vmImage: ubuntu-16.04
MacOS:
vmImage: macOS-10.13
# # Temporarily disabling Windows tests while I'm away
# # Will reenable Windows tests once I'm able to troubleshoot Windows bugs
# Windows:
# vmImage: vs2017-win2016
pool:
vmImage: $(vmImage)
steps:
- template: azure-install-rust.yml
parameters:
rust_version: stable
- template: azure-setup-test-env.yml
# "-Z unstable-options" is required for "--include-ignored"
- script: cargo test -- -Z unstable-options --include-ignored
displayName: cargo test
+13
View File
@@ -0,0 +1,13 @@
parameters:
rust_version: stable
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
pool:
vmImage: ubuntu-16.04
steps:
- template: install-rust.yml
- script: cargo check
displayName: Check features
+13
View File
@@ -0,0 +1,13 @@
parameters:
rust_version: stable
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
pool:
vmImage: ubuntu-16.04
steps:
- template: install-rust.yml
- script: cargo clippy --all
displayName: Run clippy
+166
View File
@@ -0,0 +1,166 @@
parameters:
rust_version: stable
github:
isPreRelease: false
repositoryName: "$(Build.Repository.Name)"
dependsOn: []
displayName: "Release to github"
tarCompression: "none"
archiveType: "zip"
archiveName: "$(Build.Repository.Name)"
jobs:
- job: ${{ parameters.name }}
condition: ${{ parameters.condition }}
displayName: ${{ parameters.displayName }}
dependsOn: ${{ parameters.dependsOn }}
pool:
vmImage: ubuntu-16.04
steps:
- template: install-cross-rust.yml
- bash: |
MY_TAG="$(Build.SourceBranch)"
MY_TAG=${MY_TAG#refs/tags/}
echo $MY_TAG
echo "##vso[task.setvariable variable=build.my_tag]$MY_TAG"
DATE="$(date +%Y-%m-%d)"
echo "##vso[task.setvariable variable=build.date]$DATE"
displayName: "Create date and tag variables"
- ${{ each build_target in parameters.targets }}:
- ? ${{ if not(or(eq(build_target, 'x86_64-apple-darwin'), eq(build_target, 'x86_64-pc-windows-msvc'))) }}
: - script: |
echo Start building ${{ build_target }}
cross build --target ${{ build_target }} --release
ls -l
ls -l target/${{ build_target }}/release/*
displayName: Relase build for target ${{ build_target }}
- task: CopyFiles@2
displayName: Copy files for target ${{ build_target }}
inputs:
sourceFolder: "$(Build.SourcesDirectory)/target/${{ build_target }}/release"
contents: ${{ parameters.contents }}
targetFolder: "$(Build.BinariesDirectory)/${{ build_target }}"
- task: ArchiveFiles@2
displayName: Gather assets
inputs:
rootFolderOrFile: "$(Build.BinariesDirectory)/${{ build_target }}"
archiveType: ${{ parameters.archiveType }}
tarCompression: ${{ parameters.tarCompression }}
archiveFile: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}-$(build.my_tag)-${{ build_target }}.zip"
- task: GitHubRelease@0
displayName: Create release
inputs:
gitHubConnection: ${{ parameters.github.gitHubConnection }}
tagSource: manual
title: "$(build.my_tag) - $(build.date)"
tag: "$(build.my_tag)"
assetUploadMode: replace
action: edit
assets: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}*"
repositoryName: ${{ parameters.github.repositoryName }}
isPreRelease: ${{ parameters.github.isPreRelease }}
- ${{ each build_target in parameters.targets }}:
- ${{ if eq(build_target, 'x86_64-apple-darwin') }}:
- job: ${{ parameters.name }}_macOS
condition: ${{ parameters.condition }}
displayName: ${{ parameters.displayName }} (macOS)
dependsOn: ${{ parameters.dependsOn }}
pool:
vmImage: macOS-10.13
steps:
- template: install-rust.yml
- bash: |
MY_TAG="$(Build.SourceBranch)"
MY_TAG=${MY_TAG#refs/tags/}
echo $MY_TAG
echo "##vso[task.setvariable variable=build.my_tag]$MY_TAG"
DATE="$(date +%Y-%m-%d)"
echo "##vso[task.setvariable variable=build.date]$DATE"
displayName: "Create date and tag variables"
- script: |
echo Start building ${{ build_target }}
cargo build --release
ls -l
ls -l target/release/*
displayName: Relase build for target ${{ build_target }}
- task: CopyFiles@2
displayName: Copy files for target ${{ build_target }}
inputs:
sourceFolder: "$(Build.SourcesDirectory)/target/release"
contents: ${{ parameters.contents }}
targetFolder: "$(Build.BinariesDirectory)/${{ build_target }}"
- task: ArchiveFiles@2
displayName: Gather assets
inputs:
rootFolderOrFile: "$(Build.BinariesDirectory)/${{ build_target }}"
archiveType: ${{ parameters.archiveType }}
tarCompression: ${{ parameters.tarCompression }}
archiveFile: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}-$(build.my_tag)-${{ build_target }}.zip"
- task: GitHubRelease@0
displayName: Create release
inputs:
gitHubConnection: ${{ parameters.github.gitHubConnection }}
tagSource: manual
title: "$(build.my_tag) - $(build.date)"
tag: "$(build.my_tag)"
assetUploadMode: replace
action: edit
assets: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}*"
repositoryName: ${{ parameters.github.repositoryName }}
isPreRelease: ${{ parameters.github.isPreRelease }}
- ${{ if eq(build_target, 'x86_64-pc-windows-msvc') }}:
- job: ${{ parameters.name }}_msvc
condition: ${{ parameters.condition }}
displayName: ${{ parameters.displayName }} (Windows)
dependsOn: ${{ parameters.dependsOn }}
pool:
vmImage: vs2017-win2016
steps:
- template: install-rust.yml
- bash: |
MY_TAG="$(Build.SourceBranch)"
MY_TAG=${MY_TAG#refs/tags/}
echo $MY_TAG
echo "##vso[task.setvariable variable=build.my_tag]$MY_TAG"
DATE="$(date +%Y-%m-%d)"
echo "##vso[task.setvariable variable=build.date]$DATE"
displayName: "Create date and tag variables"
- script: |
echo Start building ${{ build_target }}
cargo build --release
ls -l
ls -l target/release/*
displayName: Relase build for target ${{ build_target }}
- task: CopyFiles@2
displayName: Copy files for target ${{ build_target }}
inputs:
sourceFolder: "$(Build.SourcesDirectory)/target/release"
contents: ${{ parameters.contents }}
targetFolder: "$(Build.BinariesDirectory)/${{ build_target }}"
- task: ArchiveFiles@2
displayName: Gather assets
inputs:
rootFolderOrFile: "$(Build.BinariesDirectory)/${{ build_target }}"
archiveType: ${{ parameters.archiveType }}
tarCompression: ${{ parameters.tarCompression }}
archiveFile: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}-$(build.my_tag)-${{ build_target }}.zip"
- task: GitHubRelease@0
displayName: Create release
inputs:
gitHubConnection: ${{ parameters.github.gitHubConnection }}
tagSource: manual
title: "$(build.my_tag) - $(build.date)"
tag: "$(build.my_tag)"
assetUploadMode: replace
action: edit
assets: "$(Build.ArtifactStagingDirectory)/${{ parameters.archiveName }}*"
repositoryName: ${{ parameters.github.repositoryName }}
isPreRelease: ${{ parameters.github.isPreRelease }}
+47
View File
@@ -0,0 +1,47 @@
# defaults for any parameters that aren't specified
parameters:
rust_version: stable
steps:
# 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:/usr/local/cargo/bin"
env:
RUSTUP_TOOLCHAIN: ${{parameters.rust_version}}
displayName: "Install rust (*nix)"
condition: not(eq(variables['Agent.OS'], 'Windows_NT'))
# Windows
- script: |
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)"
condition: eq(variables['Agent.OS'], 'Windows_NT')
# Install additional components:
- ${{ each component in parameters.components }}:
- script: rustup component add ${{ component }}
# TEMPORATY FIX UNTIL https://github.com/rust-embedded/cross/pull/169 is merged.
- script: |
git config --global user.email "not_necessery@dont.need"
git config --global user.name "I merge the things"
git clone https://github.com/rust-embedded/cross
cd cross
git remote add pitkley https://github.com/pitkley/cross
git fetch pitkley
git checkout 718a19c
git merge -m "No pseudo tty" pitkley/docker-no-pseudo-tty
cargo install --force --path .
displayName: Instaling cross supprot
# All platforms
- script: |
rustup -V
rustup component list --installed
rustc -Vv
cargo -V
displayName: Query rust and cargo versions
@@ -1,3 +1,7 @@
# defaults for any parameters that aren't specified
parameters:
rust_version: stable
steps:
# Linux and macOS
- script: |
@@ -18,8 +22,14 @@ steps:
RUSTUP_TOOLCHAIN: ${{parameters.rust_version}}
displayName: "Install rust (windows)"
condition: eq(variables['Agent.OS'], 'Windows_NT')
# All platforms.
# Install additional components:
- ${{ each component in parameters.components }}:
- script: rustup component add ${{ component }}
# All platforms
- script: |
rustc -Vv
cargo -V
rustup -V
rustup component list --installed
rustc -Vv
cargo -V
displayName: Query rust and cargo versions
+16
View File
@@ -0,0 +1,16 @@
jobs:
# Check formatting
- job: ${{ parameters.name }}
displayName: Check rustfmt
pool:
vmImage: ubuntu-16.04
steps:
- template: install-rust.yml
parameters:
rust_version: stable
- script: |
rustup component add rustfmt
displayName: Install rustfmt
- script: |
cargo fmt --all -- --check
displayName: Check formatting
+28
View File
@@ -0,0 +1,28 @@
parameters:
rust_version: stable
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }} ${{parameters.rust_version}}
strategy:
matrix:
Linux:
vmImage: ubuntu-16.04
${{ if parameters.cross }}:
MacOS:
vmImage: macOS-10.13
# Temporarily disable Windows support
# Windows:
# vmImage: vs2017-win2016
pool:
vmImage: $(vmImage)
steps:
- template: install-rust.yml
- template: setup-test-env.yml
- script: |
cargo test -- -Z unstable-options --include-ignored
env:
CI: "true"
displayName: cargo test