From 616b30dc47387dd0adf0c9eebc318feffe31a453 Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Sat, 5 Sep 2020 20:37:58 +0000
Subject: [PATCH] Refactor CI into stages

Refactor CI into 4 stages:  install, build, test, benchmark
---
 .gitlab-ci.yml | 125 ++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 107 insertions(+), 18 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2d62ed85f..7dde4e20a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,54 +3,143 @@ variables:
   version: "2020-04-x86"
   bootstrap: ""
 
-linux-runner:
-  artifacts:
-    paths:
-      - ansi-test/test.out
-      - benchmarks/cl-bench/results
+stages:
+  - install
+  - build
+  - test
+  - benchmark
+
+cache:
+
+
+linux:install:
+  stage: install
   tags:
     - linux
-  before_script:
-    - git clone https://gitlab.common-lisp.net/ansi-test/ansi-test.git
-    - (cd ansi-test; git checkout rtoy-cmucl-expected-failures)
+  artifacts:
+    paths:
+      - snapshot/
+  script:
     - wget -nv $download_url/cmucl-$version-linux.tar.bz2
     - wget -nv $download_url/cmucl-$version-linux.extra.tar.bz2
     - mkdir snapshot
     - (cd snapshot; tar xjf ../cmucl-$version-linux.tar.bz2; tar xjf ../cmucl-$version-linux.extra.tar.bz2)
+
+linux:build:
+  stage: build
+  tags:
+    - linux
+  artifacts:
+    paths:
+      - dist/
+  needs:
+    - job: linux:install
+      artifacts: true
   script:
     - bin/build.sh $bootstrap -R -C "" -o snapshot/bin/lisp
     - bin/make-dist.sh -I dist linux-4
+
+linux:test:
+  stage: test
+  tags:
+    - linux
+  artifacts:
+    paths:
+      - ansi-test/test.out
+      - test.log
+  needs:
+    # Needs artifacts from build (dist/)
+    - job: linux:build
+      artifacts: true
+  before_script:
+    - git clone https://gitlab.common-lisp.net/ansi-test/ansi-test.git
+    - (cd ansi-test; git checkout rtoy-cmucl-expected-failures)
+  script:
     - bin/run-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
     - cd ansi-test
     - make LISP="../dist/bin/lisp -batch -noinit -nositeinit"
     - grep 'No unexpected \(successes\|failures\)' test.out
-    - cd ../benchmarks/cl-bench
+
+linux:benchmark:
+  stage: benchmark
+  tags:
+    - linux
+  artifacts:
+    paths:
+      - benchmarks/cl-bench/results
+  needs:
+    # Needs artifacts from install (snapshot/) and build (dist/)
+    - job: linux:install
+      artifacts: true
+    - job: linux:build
+  script:
+    - cd benchmarks/cl-bench
     - mkdir tmp
     - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
     - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
     - ../../snapshot/bin/lisp -load report
 
-osx-runner:
-  artifacts:
-    paths:
-      - ansi-test/test.out
-      - benchmarks/cl-bench/results
+osx:install:
+  stage: install
   tags:
     - osx
-  before_script:
-    - git clone https://gitlab.common-lisp.net/ansi-test/ansi-test.git
-    - (cd ansi-test; git checkout rtoy-cmucl-expected-failures)
+  artifacts:
+    paths:
+      - snapshot/
+  script:
     - curl -s -o cmucl-$version-darwin.tar.bz2 $download_url/cmucl-$version-darwin.tar.bz2
     - mkdir snapshot
     - (cd snapshot; tar xjf ../cmucl-$version-darwin.tar.bz2)
+
+osx:build:
+  stage: build
+  tags:
+    - osx
+  artifacts:
+    paths:
+      - dist/
+  needs:
+    - job: osx:install
+      artifacts: true
   script:
     - bin/build.sh $bootstrap -R -C "" -o snapshot/bin/lisp
     - bin/make-dist.sh -I dist darwin-4
+
+osx:test:
+  stage: test
+  tags:
+    - osx
+  artifacts:
+    paths:
+      - ansi-test/test.out
+      - test.log
+  needs:
+    # Needs artifacts from build (dist/)
+    - job: osx:build
+      artifacts: true
+  before_script:
+    - git clone https://gitlab.common-lisp.net/ansi-test/ansi-test.git
+    - (cd ansi-test; git checkout rtoy-cmucl-expected-failures)
+  script:
     - bin/run-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
     - cd ansi-test
     - make LISP="../dist/bin/lisp -batch -noinit -nositeinit"
     - grep 'No unexpected \(successes\|failures\)' test.out 
-    - cd ../benchmarks/cl-bench
+
+osx:benchmark:
+  stage: benchmark
+  tags:
+    - osx
+  artifacts:
+    paths:
+      - benchmarks/cl-bench/results
+  needs:
+    # Needs artifacts from install (snapshot/) and build (dist/)
+    - job: osx:install
+      artifacts: true
+    - job:  osx:build
+  script:
+    - cd benchmarks/cl-bench
     - mkdir tmp
     - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
     - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
-- 
GitLab