From 5dd638fecd5c31b019c62ebb817bdef11a8a49b2 Mon Sep 17 00:00:00 2001
From: David Phillips <david@yeah.nah.nz>
Date: Sat, 5 Sep 2020 15:56:26 +1200
Subject: Update GitLab pipeline

Misc restructuring to increase reuse between jobs. Also fixes missing python
issue on recent Ubuntu containers
---
 .gitlab-ci.yml         | 85 ++++++++++++++++++++++++--------------------------
 test/run-shellcheck.sh | 13 ++++++++
 2 files changed, 53 insertions(+), 45 deletions(-)
 create mode 100755 test/run-shellcheck.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ca78a96..7ea6f33 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,51 +1,46 @@
 stages:
-    - build-test-all
+  - Build
+  - Test
 
-arch:
-    image: archlinux/base
-    stage: build-test-all
-    before_script:
-        - pacman --noconfirm --needed -Syu base-devel clang python
-    script:
-        - make CC=gcc clean all test
-        - make CC=clang clean all test
+.build-generic:
+  stage: Build
+  script:
+    - make CC=gcc clean all test
+    - make CC=clang clean all test
+  artifacts:
+    paths:
+      - sand-leek
+    expire_in: 1 year
 
-debian-stable:
-    image: debian:stable
-    stage: build-test-all
-    before_script:
-        - apt-get update
-        - apt-get -y install build-essential clang libssl-dev openssl
-    script:
-        - make CC=gcc clean all test
-        - make CC=clang clean all test
+.build-debian-derived:
+  extends: .build-generic
+  before_script:
+    - apt-get update
+    - apt-get -y install build-essential clang libssl-dev openssl python
 
-ubuntu-trusty:
-    image: ubuntu:trusty
-    stage: build-test-all
-    before_script:
-        - apt-get update
-        - apt-get -y install build-essential clang libssl-dev openssl
-    script:
-        - make CC=gcc clean all test
-        - make CC=clang clean all test
+Arch Linux:
+  image: archlinux/base
+  extends: .build-generic
+  before_script:
+    - pacman --noconfirm --needed -Syu base-devel clang python
 
-ubuntu-xenial:
-    image: ubuntu:xenial
-    stage: build-test-all
-    before_script:
-        - apt-get update
-        - apt-get -y install build-essential clang libssl-dev openssl
-    script:
-        - make CC=gcc clean all test
-        - make CC=clang clean all test
+Debian (stable):
+  image: debian:stable
+  extends: .build-debian-derived
 
-ubuntu-latest:
-    image: ubuntu:latest
-    stage: build-test-all
-    before_script:
-        - apt-get update
-        - apt-get -y install build-essential clang libssl-dev openssl
-    script:
-        - make CC=gcc clean all test
-        - make CC=clang clean all test
+Ubuntu (Bionic):
+  image: ubuntu:bionic
+  extends: .build-debian-derived
+
+Ubuntu (Focal):
+  image: ubuntu:focal
+  extends: .build-debian-derived
+
+Shellcheck:
+  image: archlinux/base
+  stage: Test
+  before_script:
+    - pacman --noconfirm --needed -Syu shellcheck
+  script:
+    - ./test/run-shellcheck.sh
+  needs: []
diff --git a/test/run-shellcheck.sh b/test/run-shellcheck.sh
new file mode 100755
index 0000000..1319ba5
--- /dev/null
+++ b/test/run-shellcheck.sh
@@ -0,0 +1,13 @@
+#!/bin/bash -ex
+
+pushd "$(dirname "$0")"
+
+has_error=0
+while IFS= read -d $'\0' -r script ; do
+	echo "$script"
+	if ! shellcheck -e SC1091 "$script" ; then
+		has_error=1
+	fi
+done < <(find .. -name '*.sh' -print0)
+
+exit "$has_error"
-- 
cgit v1.1