CI: Refactor: split jobs, add tests, and caching

Maxime “pep” Buquet created

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

Change summary

.gitlab-ci.yml | 64 ++++++++++++++++++++++++++++++++++++++++++++-------
CHANGELOG.md   |  4 +++
2 files changed, 59 insertions(+), 9 deletions(-)

Detailed changes

.gitlab-ci.yml 🔗

@@ -1,16 +1,62 @@
 stages:
   - build
+  - test
 
-rust-latest:
-  stage: build
+variables:
+  FEATURES: ""
+  RUST_BACKTRACE: "full"
+
+.stable:
   image: rust:latest
-  script:
-    - cargo build --verbose --features=minidom
-    - cargo test --lib --verbose --features=minidom
+  cache:
+    key: stable
+    paths:
+      - target/
 
-rust-nightly:
-  stage: build
+.nightly:
   image: rustlang/rust:nightly
+  cache:
+    key: nightly
+    paths:
+      - target/
+
+.build:
+  stage: build
+  script:
+    - cargo build --verbose --no-default-features --features=$FEATURES
+
+.test:
+  stage: test
   script:
-    - cargo build --verbose --features=minidom
-    - cargo test --lib --verbose --features=minidom
+    - cargo test --lib --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:
+  extends:
+    - .test
+    - .nightly
+
+rust-latest-build with features=minidom:
+  extends: rust-latest-build
+  variables:
+    FEATURES: "minidom"
+
+rust-latest-test with features=minidom:
+  extends: rust-latest-test
+  variables:
+    FEATURES: "minidom"

CHANGELOG.md 🔗

@@ -1,3 +1,7 @@
+Version XXX, released YYY:
+  * Updates
+    - CI: Split jobs, add tests, and caching
+
 Version 0.7.2, released 2019-09-13:
   * Updates
     - Impl Error for JidParseError again, it got removed due to the failure removal but is still wanted.