- 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?
- export CCACHE_DIR=$PWD/.ccache
- ccache -s
- du -sh .gradle || true
- - git status --ignored
+ - 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
- src/nitc_0
when: always
-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 || true
+ - 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*
# 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
- 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*
- 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
script:
- misc/jenkins/check_contrib.sh android
- grep 'error message' *.xml > status.txt || true
- - mkdir -p apk
- - find . -name '*.apk' -exec cp {} apk/ ";"
+ - 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:
- 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/*.gnu
when: always
+nitunit_manual:
+ stage: more_test
+ dependencies:
+ - build_tools
+ script:
+ - nitunit doc/manual/*.nit
+ - junit2html nitunit.xml
+ artifacts:
+ paths:
+ - nitunit.xml*
+ when: always
+ reports:
+ junit:
+ - nitunit.xml
# 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:
+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:
- - uname
- - pwd
- - ls /
+ - benchmarks/bench_old.sh
+ allow_failure: true # time is unreliable. manual check required
+ services: []
+
+build_tools_windows:
stage: build
+ before_script:
+ - date
+ after_script:
+ - date
tags:
- - macos
+ - windows
+ script:
+ - $project_dir = "$CI_PROJECT_DIR" -replace "\\", "\\\"
+ - $converted_project_dir = $(c:\msys64\usr\bin\bash -l -c "cygpath -u $project_dir")
+ - c:\msys64\usr\bin\env MSYSTEM=MINGW64 c:\msys64\usr\bin\bash -l -c "cd $converted_project_dir; make"