Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New test CI attempting to use Github Actions #2837

Merged
merged 11 commits into from
Jun 27, 2024
27 changes: 27 additions & 0 deletions .github/workflows/ci-pr-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: CI Report
on:
workflow_run:
workflows: [ CI ]
types: [ completed ]

permissions:
checks: write
pull-requests: write
actions: read

jobs:
checks:
runs-on: ubuntu-latest
steps:
- name: Download Test Results
uses: dawidd6/action-download-artifact@v2
with:
workflow: ${{ github.event.workflow.id }}
run_id: ${{ github.event.workflow_run.id }}
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
commit: ${{ github.event.workflow_run.head_sha }}
event_file: Event File/event.json
event_name: ${{ github.event.workflow_run.event }}
files: "**/*.xml"
258 changes: 258 additions & 0 deletions .github/workflows/ci-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
name: CI

on: [ pull_request ]
env:
# BASIC_PACKAGES is used fo the basic tools (make)
BASIC_PACKAGES: git build-essential ccache libgc-dev graphviz libunwind-dev libreadline-dev pkg-config
# MORE_PACKAGES is used for more tools and libs (make more)
MORE_PACKAGES: libgmp-dev libcurl4-openssl-dev libevent-dev openjdk-17-jdk-headless libgles-dev libegl-dev libsdl1.2-dev libsdl2-dev libsdl2-mixer-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-net-dev libsdl2-ttf-dev libgtk-3-dev inkscape postgresql libxdg-basedir-dev gettext libsqlite3-dev libpq-dev libmongoc-dev openmpi-bin libopenmpi-dev
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64/
JNI_LIB_PATH: /usr/lib/jvm/java-17-openjdk-amd64/lib/server/
LD_LIBRARY_PATH: /usr/lib/jvm/java-17-openjdk-amd64/lib/server/

jobs:
build:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y $BASIC_PACKAGES
- run: make
- uses: actions/upload-artifact@v4
with:
path: bin
name: bin

sanity-check:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: misc/jenkins/ensuregit.sh
- run: misc/jenkins/checkwhitespaces.sh
if: ${{ !cancelled() }}
- run: misc/jenkins/checklicense.sh
if: ${{ !cancelled() }}
- run: misc/jenkins/checksignedoffby.sh
if: ${{ !cancelled() }}

tests-some:
runs-on: ubuntu-24.04
needs: [build]
container: "ubuntu:24.04"
services:
postgres:
image: postgres
env:
POSTGRES_HOST_AUTH_METHOD: trust
mongo:
image: mongo
neo4j:
image: 'neo4j:2.3'
env:
NEO4J_AUTH: none
strategy:
fail-fast: false
matrix:
engine: [nitcg, nitcs, nitcsg, nitce, niti]
steps:
- name: Install dependencies
run: apt-get update && apt-get install -y $BASIC_PACKAGES $MORE_PACKAGES
- uses: actions/checkout@v4
- run: misc/jenkins/ensuregit.sh
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: make src/version.nit
- run: cd tests && ./search_tests_git.sh origin/master HEAD > list
- run: cd tests && ./tests.sh --engine ${{ matrix.engine }} `cat list`
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: 'tests/*.xml'
name: tests-some-${{ matrix.engine }}
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: 'tests/out/*.res'
name: tests-some-${{ matrix.engine }}-res

tests-full:
runs-on: ubuntu-24.04
needs: [tests-some]
container: "ubuntu:24.04"
services:
postgres:
image: postgres
env:
POSTGRES_HOST_AUTH_METHOD: trust
mongo:
image: mongo
neo4j:
image: 'neo4j:2.3'
env:
NEO4J_AUTH: none
strategy:
fail-fast: false
matrix:
engine: [nitcg, nitcs, nitcsg, nitce, niti]
steps:
- name: Install dependencies
run: apt-get update && apt-get install -y $BASIC_PACKAGES $MORE_PACKAGES
- uses: actions/checkout@v4
- run: misc/jenkins/ensuregit.sh
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: make src/version.nit
- name: Run tests
run: cd tests && ./testfull.sh --engine ${{ matrix.engine }}
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: 'tests/*.xml'
name: tests-full-${{ matrix.engine }}
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: 'tests/out/*.res`'
name: tests-full-${{ matrix.engine }}-res

nitunit-some:
runs-on: ubuntu-24.04
needs: [build]
container: "ubuntu:24.04"
services:
postgres:
image: postgres
env:
POSTGRES_HOST_AUTH_METHOD: trust
mongo:
image: mongo
neo4j:
image: 'neo4j:2.3'
env:
NEO4J_AUTH: none
steps:
- name: Install dependencies
run: apt-get update && apt-get install -y $BASIC_PACKAGES $MORE_PACKAGES
- uses: actions/checkout@v4
- run: misc/jenkins/ensuregit.sh
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: make nitunit-some
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: '*.xml'
name: nitunit-some

nitunit-full:
runs-on: ubuntu-24.04
needs: [nitunit-some]
container: "ubuntu:24.04"
services:
postgres:
image: postgres
env:
POSTGRES_HOST_AUTH_METHOD: trust
mongo:
image: mongo
neo4j:
image: 'neo4j:2.3'
env:
NEO4J_AUTH: none
steps:
- name: Install dependencies
run: apt-get update && apt-get install -y $BASIC_PACKAGES $MORE_PACKAGES
- uses: actions/checkout@v4
- run: misc/jenkins/ensuregit.sh
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: make nitunit-full
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: '*.xml'
name: nitunit-full

test-contrib:
runs-on: ubuntu-24.04
needs: [build]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y $BASIC_PACKAGES $MORE_PACKAGES
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: 'PATH=$PWD/bin:$PATH make test-contrib'
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: '*.xml'
name: test-contrib

bootstrap-full:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y $BASIC_PACKAGES
- run: make bootstrap-full

bench-fast:
runs-on: ubuntu-24.04
needs: [build]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y $BASIC_PACKAGES gnuplot
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: 'PATH=$PWD/bin:$PATH make bench-fast'
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: |-
benchmarks/*.dat
benchmarks/*.gnu
benchmarks/*.png
benchmarks/*.html
name: bench-fast

valgrind:
runs-on: ubuntu-24.04
needs: [build]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y $BASIC_PACKAGES valgrind
- uses: actions/download-artifact@v4
- run: chmod +x bin/*
- run: make valgrind
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
path: 'valgrind.out'
name: valgrind

info:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: pwd
- run: id
- run: ls -al
- run: git branch -av || true
- run: lscpu || true
- run: git log --oneline --graph --decorate | head -n 50
- run: cat /etc/issue
- run: cat /etc/os-release
- run: env

event_file:
name: "Event File"
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}
86 changes: 84 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,16 @@ bin/nitdoc:
cd src; make ../bin/nitdoc

bin/nitls:
cd src; make ../bin/nitls
cd src; make

bin/nitunit:
cd src; make

bin/nitpick:
cd src; make

src/version.nit:
cd src && ./git-gen-version.sh

doc/stdlib/index.html: bin/nitdoc bin/nitls
@echo '***************************************************************'
Expand Down Expand Up @@ -87,4 +96,77 @@ clean:
(echo "CLEANING $$directory" && cd "$$directory" && $(MAKE) clean); \
done
@echo ""
@echo "Nit was succesfully cleaned."
@echo "Nit was succesfully cleaned."

# BASIC CI-CD JOBS ########################################################

sanity-check:
misc/jenkins/checkwhitespaces.sh
misc/jenkins/checksignedoffby.sh
misc/jenkins/checkbinaryfiles.sh
misc/jenkins/checklicense.sh

nitunit-some: bin/nitls bin/nitunit src/version.nit
misc/jenkins/nitunit-some.sh

nitpick-full: bin/nitls bin/nitpick src/version.nit
bin/nitls lib src examples contrib
bin/nitls -Pp lib src examples | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
xargs bin/nitpick < list.txt


# LIB, CONTRIB AND OOT ##############################################

nitunit-full: bin/nitls bin/nitunit src/version.nit
bin/nitls -Pp lib src examples | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
ls -1 doc/manual/*.md >> list.txt
xargs bin/nitunit -v < list.txt

nitunit-src: bin/nitls bin/nitunit src/version.nit
bin/nitls -Pp src examples | grep -v -f tests/gitlab_ci.skip > list.txt || true # filter what is skipped by tests.sh
xargs bin/nitunit -v < list.txt

test-contrib: src/version.nit
misc/jenkins/check_contrib.sh all check
grep 'error message' *.xml > status.txt || true
test ! -s status.txt # no lines, no errors

# MISC ##############################################################

bootstrap-full:
cd src && ./full_bootstrap && ./ncall.sh

bench-fast:
cd benchmarks && ./bench_engines.sh --fast --fast --html options

nitunit-manual: bin/nitunit
bin/nitunit doc/manual/*.md

# MORE TOOLS ########################################################

build-more-tools: more
$(MAKE) -C contrib/nitcc

valgrind: src/version.nit
mkdir -p valgrind.out
bin/nitc src/nitc.nit # To warm-up the cache
src/valgrind.sh --callgrind-out-file=valgrind.out/nitc.nitc.out bin/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 bin/nit -- src/nit.nit tests/base_simple3.nit -vv
callgrind_annotate valgrind.out/niti.niti.out > valgrind.out/niti.niti.txt

build-doc:
nitdoc -d nitdoc.out --keep-going lib src

build-manual:
# apt-get update && apt-get install --yes --no-install-recommends pandoc texlive texlive-latex-extra lmodern
$(make) -C doc/manual

nitmetrics:
mkdir -p nitmetrics.out
nitmetrics --all --log --log-dir nitmetrics.out --dir nitmetrics.out --keep-going lib src | tee nitmetrics.out/metrics.txt

build-catalog:
misc/jenkins/check_contrib.sh pre-build
cd contrib && ./oot.sh update && ./oot.sh pre-build
nitcatalog -d catalog.out lib/ examples/ contrib/ contrib/oot/
2 changes: 1 addition & 1 deletion contrib/jwrapper/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ check: bin/jwrapper tests/wildcards.javap
bin/jwrapper -v -u comment -o tests/wildcards.nit tests/wildcards.javap
nitpick -q tests/wildcards.nit
make -C examples/queue/ check
make -C examples/java_api/ check
#make -C examples/java_api/ check #FIXME: no more `rt.jar` file?

check-libs: bin/jwrapper
# This config dependent rule must be tweaked according to each system
Expand Down
Loading
Loading