Reconfigure the CI pipeline to deploy more static HTML content.
[open-adventure.git] / .gitlab-ci.yml
index 725dfcb86698b4745597fbc9de62c02b94e7c042..935fa3f0a2bd92249919f1bda67894233b6b1d44 100644 (file)
@@ -1,10 +1,33 @@
-image: gcc
+image: alpine
 
-# build using Makefile
-build:
+stages:
+  - build
+  - test
+  - deploy
+
+# build advent itself
+binary:debug:
   stage: build
-  before_script: 
-    - apt update && apt -y install make autoconf 
+  before_script:
+    - apk update
+    - apk add make gcc musl-dev
+  script: 
+    - make debug
+  artifacts:
+    paths:
+      - advent
+      - "*.gcda"
+      - "*.gcno"
+  # cache outputs to reduce the build time
+  cache:
+    paths:
+      - "*.o"
+
+binary:release:
+  stage: build
+  before_script:
+    - apk update
+    - apk add make gcc musl-dev
   script: 
     - make advent
   artifacts:
@@ -15,8 +38,70 @@ build:
     paths:
       - "*.o"
 
+manpage:
+  stage: build
+  before_script:
+    - apk update
+    - apk add make asciidoc
+  script:
+    - make .adoc.6
+  artifacts:
+    paths:
+      - advent.6
+
+html:
+  stage: build
+  before_script:
+    - apk update
+    - apk add make asciidoc libxslt
+  script:
+    - make html
+  artifacts:
+    paths:
+      - "*.html"
+
 # run tests using the binary built before
-test:
+test:debug:
   stage: test
+  before_script:
+    - apk update
+    - apk add make gcc
+    - apk add lcov --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
   script:
-    - make check
+    - cd tests
+    - make
+    - cd ..
+    - lcov -t "advent" -o advent.info -c -d .
+    - genhtml -o coverage advent.info
+  artifacts:
+    paths:
+      - coverage
+  dependencies:
+    - binary:debug
+
+test:release:
+  stage: test
+  before_script:
+    - apk update
+    - apk add make
+  script:
+    - cd tests
+    - make
+    - cd ..
+  dependencies:
+    - binary:release
+
+pages:
+  stage: deploy
+  script:
+    - mkdir public
+    - mv coverage public
+    - "mv *.html public"
+  artifacts:
+    paths:
+      - public
+  only:
+    - master
+  dependencies:
+    - html
+    - test:debug