diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a34dd293698e19b150ac2f9c02759070f5e64742..3e294ed4ba728a5c13ce6b9f1ed05e7ae83479fa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,7 +13,7 @@ variables:
   - fp-timing
   script:
   # prepare
-  - . build/opam-ci.sh coq "$COQ_VERSION" coq-mathcomp-ssreflect "$SSR_VERSION"
+  - . build/opam-ci.sh coq $OPAM_PINS
   - env | egrep '^(CI_BUILD_REF|CI_RUNNER)' > build-env.txt
   # build
   - 'time make -k -j$CPU_CORES TIMED=y 2>&1 | tee build-log.txt'
@@ -21,7 +21,7 @@ variables:
   - 'cat build-log.txt | egrep "[a-zA-Z0-9_/-]+ \((real|user): [0-9]" | tee build-time.txt'
   - 'if test -n "$VALIDATE" && (( RANDOM % 10 == 0 )); then make validate; fi'
   cache:
-    key: "coq.$COQ_VERSION-ssr.$SSR_VERSION"
+    key: "$CI_JOB_NAME"
     paths:
     - opamroot/
   only:
@@ -41,14 +41,12 @@ opam:
 build-coq8.7:
   <<: *template
   variables:
-    COQ_VERSION: "8.7.dev"
-    SSR_VERSION: "dev"
+    OPAM_PINS: "coq version 8.7.dev   coq-mathcomp-ssreflect version dev"
 
 build-coq8.6.1:
   <<: *template
   variables:
-    COQ_VERSION: "8.6.1"
-    SSR_VERSION: "1.6.1"
+    OPAM_PINS: "coq version 8.6.1   coq-mathcomp-ssreflect version 1.6.1"
     VALIDATE: "1"
   artifacts:
     paths:
diff --git a/build/opam-ci.sh b/build/opam-ci.sh
index b5607a1666c3cb3d82fe9c96bec801fdbaa38569..95abf4bc02ea672e670a95fc9364218e324c317f 100755
--- a/build/opam-ci.sh
+++ b/build/opam-ci.sh
@@ -47,14 +47,16 @@ echo
 echo
 while (( "$#" )); do # while there are arguments left
     PACKAGE="$1" ; shift
+    KIND="$1" ; shift
     VERSION="$1" ; shift
 
     # Check if the pin is already set
-    if opam pin list | fgrep "$PACKAGE.$VERSION " > /dev/null; then
-        echo "[opam-ci] $PACKAGE already pinned to $VERSION"
+    read -a PIN <<< $(opam pin list | (egrep "^$PACKAGE[. ]"))
+    if [[ "${PIN[1]}" == "$KIND" && "${PIN[2]}" == "$VERSION" ]]; then
+        echo "[opam-ci] $PACKAGE already $KIND-pinned to $VERSION"
     else
-        echo "[opam-ci] Pinning $PACKAGE to $VERSION"
-        run_and_print opam pin add -y -k version "$PACKAGE" "$VERSION"
+        echo "[opam-ci] $KIND-pinning $PACKAGE to $VERSION"
+        run_and_print opam pin add -y -k "$KIND" "$PACKAGE" "$VERSION"
     fi
 done