From 608868e3780c559af3b678e13897073e0abf7689 Mon Sep 17 00:00:00 2001
From: librelois <elois@ifee.fr>
Date: Thu, 23 Apr 2020 22:55:05 +0200
Subject: [PATCH] [ci] replace only/except by rules

#1400
---
 .gitlab-ci.yml | 75 ++++++++++++++++++++++++++++----------------------
 1 file changed, 42 insertions(+), 33 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d9f476d16..a410fd881 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,9 +5,13 @@ stages:
   - prerelease
   - release
 
-.changes: &changes
-  only:
-    changes:
+workflow:
+  rules:
+    - if: $CI_MERGE_REQUEST_ID
+      when: never
+    - if: $CI_COMMIT_REF_NAME =~ /^wip/
+      when: never
+    - changes:
       - .gitlab/**/*
       - app/**/*
       - bin/duniter
@@ -65,8 +69,11 @@ stages:
 #    - dev
 
 test:
-  <<: *changes
   <<: *nvm_env
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - when: on_success
   stage: test
   script:
     - yarn
@@ -76,39 +83,38 @@ test:
     # Code coverage display in GitLab
     - sed -n 23p coverage/index.html | grep -Po "\d+.\d+" | sed -e "s/\(.*\)/<coverage>\1%<\/coverage>/"
   coverage: '/<coverage>(\d+.\d+\%)<\/coverage>/'
-  except:
-    - tags
   artifacts:
     paths:
       - coverage.tar.gz
     expire_in: 4h
 
 sync_g1:
-  <<: *changes
   <<: *nvm_env
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - when: on_success
   stage: integration
   script:
     - yarn
     - bash .gitlab/test/check_g1_sync.sh
-  except:
-    - tags
 
 sync_gtest:
-  <<: *changes
   <<: *nvm_env
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - when: on_success
   stage: integration
   script:
     - yarn
     - bash .gitlab/test/check_gt_sync.sh
-  except:
-    - tags
 
 .build_releases: &build_releases
   stage: package
   allow_failure: false
   image: duniter/release-builder:v1.4.0
   cache: {}
-  when: manual
   tags:
     - redshift-duniter-builder
   artifacts:
@@ -117,25 +123,27 @@ sync_gtest:
 
 releases:test:
   <<: *build_releases
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - when: manual
   script:
     - rm -rf node_modules/
     - bash "release/arch/linux/build-lin.sh" "$(date +%Y%m%d).$(date +%H%M).$(date +%S)"
   artifacts:
     paths: *releases_artifacts
     expire_in: 72h
-  except:
-    - tags
 
 releases:x64:
   <<: *build_releases
+  rules:
+    - if: $CI_COMMIT_TAG
   script:
     - rm -rf node_modules/
     - bash "release/arch/linux/build-lin.sh" "${CI_COMMIT_TAG#v}"
   artifacts:
     paths: *releases_artifacts
     expire_in: 6 mos
-  only:
-    - tags
 
 .docker-build-app-image:
   stage: package
@@ -154,29 +162,28 @@ releases:x64:
 
 package:test:docker-test-image:
   extends: .docker-build-app-image
-  except:
-    refs:
-      - dev
-      - tags
-  when: manual
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - if: '$CI_COMMIT_BRANCH == "dev"'
+      when: never
+    - when: manual
   variables:
     IMAGE_TAG: "test-image"
 
 package:dev:docker:
   extends: .docker-build-app-image
-  only:
-    refs:
-      - dev
-  except:
-    refs:
-      - tags
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: never
+    - if: $CI_COMMIT_BRANCH == "dev"
   variables:
     IMAGE_TAG: "dev"
 
 package:prod:docker:
   stage: package
-  only:
-    - tags
+  rules:
+    - if: $CI_COMMIT_TAG
   image: docker:18.06
   tags:
     - redshift-docker-runner
@@ -197,11 +204,11 @@ package:prod:docker:
     - redshift-duniter-builder
   script:
     - python3 .gitlab/releaser
-  only:
-    - tags
 
 prerelease:
   <<: *release_jobs
+  rules:
+    - if: $CI_COMMIT_TAG
   stage: prerelease
   variables:
     RELEASE_BIN_DIR: work/bin/
@@ -209,9 +216,11 @@ prerelease:
 
 publish:
   <<: *release_jobs
+  rules:
+    - if: $CI_COMMIT_TAG
+      when: manual
   stage: release
   variables:
     RELEASE_BIN_DIR: work/bin/
     WIKI_RELEASE: Releases
   allow_failure: false
-  when: manual
-- 
GitLab