From a377588d18788303292f997489796478cf5866b1 Mon Sep 17 00:00:00 2001
From: Michael Gutbier <migu@cgan.de>
Date: Mon, 23 Dec 2019 00:28:43 +0100
Subject: [PATCH] refactor pipeline

---
 .gitlab-ci.yml | 40 +++++++++++++++++-----------------------
 build.sh       | 12 ++++++++++++
 2 files changed, 29 insertions(+), 23 deletions(-)
 create mode 100755 build.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7e4ec2b..cf0d40c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,53 +2,47 @@ stages:
   - build
   - publish
 
-build_tagged_guide:
+.template:build_guide:
   stage: build
   image: alpine
-  script:
+  before_script:
     - apk update
-    - apk add ruby asciidoctor git
+    - apk add --no-cache ruby asciidoctor git
     - gem install asciidoctor-pdf --pre
-    - export COMMIT_TIME=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
-    - asciidoctor-pdf -a revnumber=$CI_COMMIT_TAG -a revdate=$COMMIT_TIME -o angelguide_en.pdf guide.adoc
-    - asciidoctor-pdf -a lang=de -a revnumber=$CI_COMMIT_TAG -a revdate=$COMMIT_TIME -o angelguide_de.pdf guide.adoc
   artifacts:
     paths:
       - "angelguide_en.pdf"
       - "angelguide_de.pdf"
     expire_in: 12 months
+
+build_guide_by_tag:
+  extends: .template:build_guide
+  script:
+    - export COMMIT_DATE=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
+    - export REVISION=$CI_COMMIT_TAG
+    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_en.pdf guide.adoc
+    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_de.pdf -a lang=de guide.adoc
   rules:
     - if: $CI_COMMIT_TAG != null
       when: always
-    - when: never
   
 build_guide:
-  stage: build
-  image: alpine
+  extends: .template:build_guide
   script:
-    - apk update
-    - apk add ruby asciidoctor git
-    - gem install asciidoctor-pdf --pre
-    - export COMMIT_TIME=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
-    - echo $COMMIT_TIME
-    - asciidoctor-pdf -a revnumber=$CI_COMMIT_SHORT_SHA -a revdate=$COMMIT_TIME -o angelguide_en.pdf guide.adoc
-    - asciidoctor-pdf -a lang=de -a revnumber=$CI_COMMIT_SHORT_SHA -a revdate=$COMMIT_TIME -o angelguide_de.pdf guide.adoc
-  artifacts:
-    paths:
-      - "angelguide_en.pdf"
-      - "angelguide_de.pdf"
-    expire_in: 12 months
+    - export COMMIT_DATE=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
+    - export REVISION=$CI_COMMIT_SHORT_SHA
+    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_en.pdf guide.adoc
+    - asciidoctor-pdf -a revnumber=$REVISION -a revdate=$COMMIT_DATE -o angelguide_de.pdf -a lang=de guide.adoc
   rules:
     - if: $CI_COMMIT_TAG == null
       when: always
-    - when: never
 
 publish_guide:
   stage: publish
   image: kroniak/ssh-client
   before_script:
     - apk update
-    - apk add rsync
+    - apk add --no-cache rsync
     - mkdir -p ~/.ssh
     - chmod 700 ~/.ssh
     - eval $(ssh-agent -s)
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..7fe12b8
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+if [[ $# ne 1 ]]; then
+	echo expected revision as option >&2
+	exit 1
+fi
+
+revision="$1"
+commit_date=$(git show -s --format=%ci $CI_COMMIT_SHA | cut -c1-10)
+
+asciidoctor-pdf -a revnumber=${revision} -a revdate=${commit_date} -o angelguide_en.pdf guide.adoc
+asciidoctor-pdf -a revnumber=${revision} -a revdate=${commit_date} -o angelguide_de.pdf -a lang=de guide.adoc
-- 
GitLab