image: nitlang/nit-ci
+services:
+ - mongo
+ - neo4j:2.3
+ - postgres
+
+variables:
+ NEO4J_AUTH: none
+
cache:
paths:
- .ccache
+ - .gradle/caches
+ - .gradle/wrapper
key: "$CI_JOB_NAME"
stages:
before_script:
- date
- export CCACHE_DIR=$PWD/.ccache
+ - export GRADLE_USER_HOME=$PWD/.gradle
- export PATH=$PWD/bin:$PATH
+ - git config --add github.oauthtoken "$GITHUB_OAUTHTOKEN" # needed for github api rate limit
- pwd
- ccache -s
+ - ccache -z
- ccache -M 500M
+ - du -sh .gradle || true
- type -a nitc nitdoc || true # is there some nit tools?
- "> status.txt"
after_script:
- export CCACHE_DIR=$PWD/.ccache
- ccache -s
- - git status --ignored
+ - du -sh .gradle || true
+ - git status --ignored || true
- date
- tail status.txt
- misc/jenkins/checksignedoffby.sh | tee -a status.txt
- misc/jenkins/checklicense.sh | tee -a status.txt
-build_tools:
+build_tools: &build_tools
stage: build
script:
- make 2>> status.txt
- nitc --version
- misc/jenkins/check_manpages.sh
- - "{ cd tests && ./tests.sh base_sim*.nit ../src/nitlight.nit; }"
- - nitunit -v lib/core
artifacts:
paths:
- bin/*
- c_src/nitc
- src/version.nit
- src/nitc_0
- - nitunit.xml*
- - tests/*.xml*
when: always
- reports:
- junit:
- - tests/*.xml
- - nitunit.xml
-test_some:
+test_some: &test_some
stage: test
dependencies:
- build_tools
artifacts:
paths:
- tests/errlist
- - tests/*.xml
+ - tests/*.xml*
when: always
reports:
junit: tests/*.xml
dependencies:
- build_tools
script:
- - git diff --name-only origin/master..HEAD -- "*.nit" "*.res" "README.*" | grep -v "^tests/" > list0.txt
+ - git diff --name-only origin/master..HEAD -- "*.nit" "*.res" "README.*" | grep -v "^tests/\|contrib/" > list0.txt || true
- xargs nitls -pP < list0.txt > list.txt
+ - test -s list.txt || exit 0
- xargs nitunit < list.txt
+ - junit2html nitunit.xml
artifacts:
paths:
- nitunit.xml*
- build_tools
script:
- nitls lib src examples contrib
- - nitls -Pp lib src examples | grep -v -f tests/gitlab_ci.skip > list.txt # filter what is skipped by tests.sh
+ - nitls -Pp lib src examples | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
- xargs nitpick < list.txt
basic_android:
# TEST FULL #########################################################
-test_full_nitcs:
+test_full_nitcs: &test_full_nitcs
stage: more_test
dependencies:
- build_tools
script:
+ - share/android-bdwgc/setup.sh
- cd tests
- ./testfull.sh | tee log.txt
- grep -v '=>' log.txt > ../status.txt || true
dependencies:
- build_tools
script:
- - nitls -Pp lib | grep -v -f tests/gitlab_ci.skip > list.txt # filter what is skipped by tests.sh
+ - nitls -Pp lib | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
- xargs nitunit -v < list.txt| tee log.txt
- grep -e KO log.txt > status.txt || true
- tail -3 log.txt >> status.txt
+ - junit2html nitunit.xml
artifacts:
paths:
- nitunit.xml*
dependencies:
- build_tools
script:
- - nitls -Pp src examples | grep -v -f tests/gitlab_ci.skip > list.txt # filter what is skipped by tests.sh
+ - nitls -Pp src examples | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
- xargs nitunit -v < list.txt| tee log.txt
- grep -e KO log.txt > status.txt || true
- tail -3 log.txt >> status.txt
+ - junit2html nitunit.xml
artifacts:
paths:
- nitunit.xml*
- misc/jenkins/check_contrib.sh all check
- grep 'error message' *.xml > status.txt || true
- test ! -s status.txt # no lines, no errors
- allow_failure: true
+
+test_contribs_android:
+ stage: more_test
+ dependencies:
+ - build_tools
+ script:
+ - misc/jenkins/check_contrib.sh android
+ - grep 'error message' *.xml > status.txt || true
+ - mkdir -p apk/debug
+ - find . -name '*.apk' -exec mv {} apk/debug/ ";"
+ - test ! -s status.txt # no lines, no errors
+ - misc/jenkins/check_contrib.sh android-release
+ - grep 'error message' *.xml > status.txt || true
+ - mkdir -p apk/release
+ - find . -name '*.apk' -exec mv {} apk/release ";"
+ - test ! -s status.txt # no lines, no errors
+ artifacts:
+ paths:
+ - "apk"
+ when: always
build_oot:
stage: more_test
- cd contrib
- ./oot.sh all
- grep 'error message' *.xml > ../status.txt || true
- - test ! -s ../status.txt # no lines, no errors
- allow_failure: true
+ # Errors are somewhat expected
# MISC ##############################################################
+check_requirments:
+ stage: more_test
+ image: debian:buster
+ before_script:
+ - date # cancel the default `before_script`, an empty list does nothing
+ script: # from the README
+ - apt-get update && apt-get install --yes --no-install-recommends build-essential ccache libgc-dev libunwind-dev pkg-config
+ - make
+ - bin/nitc examples/hello_world.nit
+ - ./hello_world
+ - . misc/nit_env.sh install
+ - nitc examples/hello_world.nit
+ - ./hello_world
+ - apt-get update && apt-get install --yes --no-install-recommends graphviz libcurl4-openssl-dev libevent-dev libmongoc-dev
+ - make more
+
bootstrap_full:
stage: more_test
dependencies:
- benchmarks/*.dat
- benchmarks/*.gnu
when: always
- allow_failure: true
# MORE TOOLS ########################################################
- src/version.nit
- src/nitc_0
+valgrind:
+ stage: more_test
+ dependencies:
+ - build_more_tools
+ script:
+ - mkdir -p valgrind.out
+ - nitc src/nitc.nit # To warm-up the cache
+ - src/valgrind.sh --callgrind-out-file=valgrind.out/nitc.nitc.out nitc src/nitc.nit -vv
+ - callgrind_annotate valgrind.out/nitc.nitc.out > valgrind.out/nitc.nitc.txt
+ - src/valgrind.sh --callgrind-out-file=valgrind.out/niti.niti.out nit -- src/nit.nit tests/base_simple3.nit -vv
+ - callgrind_annotate valgrind.out/niti.niti.out > valgrind.out/niti.niti.txt
+ artifacts:
+ paths:
+ - valgrind.out
+
build_doc:
stage: more_test
dependencies:
paths:
- nitdoc.out
+build_manual:
+ stage: more_test
+ script:
+ - apt-get update && apt-get install --yes --no-install-recommends pandoc texlive texlive-latex-extra lmodern
+ - make -C doc/manual
+ artifacts:
+ paths:
+ - doc/manual/*.pdf
+ - doc/manual/*.epub
+
+nitmetrics:
+ stage: more_test
+ dependencies:
+ - build_more_tools
+ script:
+ - mkdir -p nitmetrics.out
+ - nitmetrics --all --log --log-dir nitmetrics.out --dir nitmetrics.out --keep-going lib src | tee nitmetrics.out/metrics.txt
+ artifacts:
+ paths:
+ - nitmetrics.out
+
build_catalog:
stage: more_test
dependencies:
- ./oot.sh pre-build
- cd ..
- nitcatalog -d catalog.out lib/ examples/ contrib/ contrib/oot/
- dependencies:
- - build_more_tools
artifacts:
paths:
- catalog.out
-.test_macos:
- script:
- - uname
- - pwd
- - ls /
- stage: build
+build_tools_macos:
+ <<: *build_tools
+ tags:
+ - macos
+
+test_some_macos:
+ <<: *test_some
+ tags:
+ - macos
+ dependencies:
+ - build_tools_macos
+
+test_full_nitcs_macos:
+ <<: *test_full_nitcs
tags:
- macos
+ dependencies:
+ - build_tools_macos
+
+bench_old:
+ stage: more_test
+ tags:
+ - perf
+ dependencies:
+ - build_tools
+ script:
+ - benchmarks/bench_old.sh
+ allow_failure: true # time is unreliable. manual check required
+ services: []