-image: gcc
+image: alpine
-# build using Makefile
-build:
+stages:
+ - build
+ - test
+ - deploy
+
+# build advent itself
+binary:debug:
+ stage: build
+ 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:
- - apt update && apt -y install make autoconf
+ before_script:
+ - apk update
+ - apk add make gcc musl-dev
script:
- make advent
artifacts:
paths:
- "*.o"
+manpage:
+ stage: build
+ before_script:
+ - apk update
+ - apk add make asciidoc
+ script:
+ - make advent.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
+
+package:
+ stage: deploy
+ script:
+ - cp README.adoc README
+ artifacts:
+ paths:
+ - advent
+ - NEWS
+ - COPYING
+ - README
+ - advent.6
+ dependencies:
+ - binary:release
+ - manpage