diff --git a/contrib/heptapod-ci.yml b/contrib/heptapod-ci.yml
index 456c617c82851e947ac99c5e06c30656bbf421e1_Y29udHJpYi9oZXB0YXBvZC1jaS55bWw=..3a3a510617e573d3ee8d9eee3c5189a551f5b8c4_Y29udHJpYi9oZXB0YXBvZC1jaS55bWw= 100644
--- a/contrib/heptapod-ci.yml
+++ b/contrib/heptapod-ci.yml
@@ -1,3 +1,6 @@
+stages:
+  - tests
+
 image: registry.heptapod.net/mercurial/ci-images/mercurial-core
 
 # The runner made a clone as root.
@@ -15,6 +18,7 @@
     TEST_HGMODULEPOLICY: "allow"
 
 .runtests_template: &runtests
+    stage: tests
     script:
         - echo "python used, $PYTHON"
         - echo "$RUNTEST_ARGS"
@@ -32,8 +36,9 @@
         PYTHON: python3
 
 rust-cargo-test-py2: &rust_cargo_test
+    stage: tests
     script:
         - echo "python used, $PYTHON"
         - make rust-tests
 
 rust-cargo-test-py3:
@@ -35,8 +40,9 @@
     script:
         - echo "python used, $PYTHON"
         - make rust-tests
 
 rust-cargo-test-py3:
+    stage: tests
     <<: *rust_cargo_test
     variables:
         PYTHON: python3