122 lines
1.9 KiB
YAML
122 lines
1.9 KiB
YAML
image: alpine
|
|
|
|
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:
|
|
- apk update
|
|
- apk add make gcc musl-dev
|
|
script:
|
|
- make advent
|
|
artifacts:
|
|
paths:
|
|
- advent
|
|
# cache outputs to reduce the build time
|
|
cache:
|
|
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: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:
|
|
- 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
|