CI: refactor, add caching

Maxime “pep” Buquet created

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>

Change summary

.gitlab-ci.yml | 54 ++++++++++++++++++++++++++++++++++++---------------
ChangeLog      |  2 +
2 files changed, 40 insertions(+), 16 deletions(-)

Detailed changes

.gitlab-ci.yml 🔗

@@ -4,37 +4,59 @@ stages:
 
 variables:
   FEATURES: ""
+  RUST_BACKTRACE: "full"
 
-rust-latest-build:
-  stage: build
+.stable:
   image: rust:latest
-  script:
-    - cargo build --verbose --no-default-features --features=$FEATURES
+  cache:
+    key: stable
+    paths:
+      - target/
 
-rust-nightly-build:
-  stage: build
+.nightly:
   image: rustlang/rust:nightly
+  cache:
+    key: nightly
+    paths:
+      - target/
+
+.build:
+  stage: build
   script:
     - cargo build --verbose --no-default-features --features=$FEATURES
 
-rust-latest-test:
+.test:
   stage: test
-  image: rust:latest
   script:
     - cargo test --verbose --no-default-features --features=$FEATURES
 
+rust-latest-build:
+  extends:
+    - .build
+    - .stable
+
+rust-nightly-build:
+  extends:
+    - .build
+    - .nightly
+
+
+rust-latest-test:
+  extends:
+    - .test
+    - .stable
+
 rust-nightly-test:
-  stage: test
-  image: rustlang/rust:nightly
-  script:
-    - cargo test --verbose --no-default-features --features=$FEATURES
+  extends:
+    - .test
+    - .nightly
 
-"rust-latest-test with features=disable-validation":
-  extends: rust-latest-test
+rust-latest-build with features=disable-validation:
+  extends: rust-latest-build
   variables:
     FEATURES: "disable-validation"
 
-"rust-nightly-test with features=disable-validation":
-  extends: rust-nightly-test
+rust-latest-test with features=disable-validation:
+  extends: rust-latest-test
   variables:
     FEATURES: "disable-validation"

ChangeLog 🔗

@@ -8,6 +8,8 @@ DATE  Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
         - Anonymous unique occupant identifiers for MUCs (XEP-0421)
     * Breaking changes:
         - Presence constructors now take Into<Jid> and assume Some.
+    * Improvements:
+        - CI: refactor, add caching
 
 Version 0.15.0:
 2019-09-06  Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>