summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-03-22 11:58:00 -0700
committerGitHub <noreply@github.com>2019-03-22 11:58:00 -0700
commit678f15bd48151f82233fdecb4a4e7c538932d09a (patch)
treec55eb95e092fdec0c0ee7e0a7a77544e59e3c1a1
parentb1172f8074b381b543ff15e23e3092fc5dc6de7d (diff)
ci: skip crates.io dep run when releasing (#995)
#993 introduces changes in a sub crate that other Tokio crates depend on. To make CI pass, a `[patch]` statement and `path` dependencies are used. When releasing, these must be removed. However, the commit that removes them and prepares the crates for release will not be able to pass CI. This commit adds a conditional on a special `[ci-release]` snippet in the commit message. If this exists, CI is only run with the full "patched" dependencies.
-rw-r--r--.cirrus.yml15
-rw-r--r--ci/azure-cargo-check.yml11
-rw-r--r--ci/azure-check-minrust.yml2
-rw-r--r--ci/azure-cross-compile.yml3
-rw-r--r--ci/azure-is-release.yml9
-rw-r--r--ci/azure-test-stable.yml3
6 files changed, 42 insertions, 1 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 4172a50d..d66d5f36 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -15,6 +15,18 @@ task:
- sh rustup.sh -y
- . $HOME/.cargo/env
- rustup target add i686-unknown-freebsd
+ - |
+ # Remove any existing patch statements
+ mv Cargo.toml Cargo.toml.bck
+ sed -n '/\[patch.crates-io\]/q;p' Cargo.toml.bck > Cargo.toml
+
+ # Patch all crates
+ cat ci/patch.toml >> Cargo.toml
+
+ # Print `Cargo.toml` for debugging
+ echo "~~~~ Cargo.toml ~~~~"
+ cat Cargo.toml
+ echo "~~~~~~~~~~~~~~~~~~~~"
cargo_cache:
folder: $HOME/.cargo/registry
test_script:
@@ -23,6 +35,7 @@ task:
- cargo doc --all
i686_test_script:
- . $HOME/.cargo/env
- - cargo test --all --exclude tokio-tls --no-fail-fast --target i686-unknown-freebsd
+ - |
+ cargo test --all --exclude tokio-tls --no-fail-fast --target i686-unknown-freebsd
before_cache_script:
- rm -rf $HOME/.cargo/registry/index
diff --git a/ci/azure-cargo-check.yml b/ci/azure-cargo-check.yml
index d386bd6c..b8a3b9e3 100644
--- a/ci/azure-cargo-check.yml
+++ b/ci/azure-cargo-check.yml
@@ -11,6 +11,17 @@ jobs:
parameters:
rust_version: ${{ parameters.rust }}
+ - template: azure-is-release.yml
+
+ - ${{ each crate in parameters.crates }}:
+ - ${{ each feature in crate.value }}:
+ - script: cargo check ${{ parameters.noDefaultFeatures }} --features ${{ feature }}
+ displayName: Check `${{ crate.key }}`, features = ${{ feature }}
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate.key }}
+ condition: and(succeeded(), not(variables['isRelease']))
+
+ - template: azure-patch-crates.yml
+
- ${{ each crate in parameters.crates }}:
- ${{ each feature in crate.value }}:
- script: cargo check ${{ parameters.noDefaultFeatures }} --features ${{ feature }}
diff --git a/ci/azure-check-minrust.yml b/ci/azure-check-minrust.yml
index de6313c2..7a5e602a 100644
--- a/ci/azure-check-minrust.yml
+++ b/ci/azure-check-minrust.yml
@@ -8,5 +8,7 @@ jobs:
parameters:
rust_version: ${{ parameters.rust_version }}
+ - template: azure-patch-crates.yml
+
- script: cargo check --all
displayName: cargo check --all
diff --git a/ci/azure-cross-compile.yml b/ci/azure-cross-compile.yml
index 79606bb4..857aeb94 100644
--- a/ci/azure-cross-compile.yml
+++ b/ci/azure-cross-compile.yml
@@ -14,6 +14,9 @@ jobs:
- script: rustup target add ${{ parameters.target }}
displayName: "Add target"
+ # Always patch
+ - template: azure-patch-crates.yml
+
- script: cargo check --all --exclude tokio-tls --target ${{ parameters.target }}
displayName: Check source
diff --git a/ci/azure-is-release.yml b/ci/azure-is-release.yml
new file mode 100644
index 00000000..014b7a98
--- /dev/null
+++ b/ci/azure-is-release.yml
@@ -0,0 +1,9 @@
+steps:
+ - bash: |
+ set -e
+
+ if git log --no-merges -1 --format='%s' | grep -q '[ci-release]'; then
+ echo "##vso[task.setvariable variable=isRelease]true"
+ fi
+ failOnStderr: true
+ displayName: Check if release commit
diff --git a/ci/azure-test-stable.yml b/ci/azure-test-stable.yml
index c385be26..cd4f8cf9 100644
--- a/ci/azure-test-stable.yml
+++ b/ci/azure-test-stable.yml
@@ -19,6 +19,8 @@ jobs:
parameters:
rust_version: stable
+ - template: azure-is-release.yml
+
- ${{ each crate in parameters.crates }}:
- script: cargo test
env:
@@ -26,6 +28,7 @@ jobs:
CI: 'True'
displayName: cargo test -p ${{ crate }}
workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+ condition: and(succeeded(), not(variables['isRelease']))
- template: azure-patch-crates.yml