.gitlab-ci.yml 4.17 KB
Newer Older
Yi Lin's avatar
Yi Lin committed
1 2 3
# This file is a template, and might need editing before it works on your project.
# Unofficial language image. Look for the different tagged releases at:
# https://hub.docker.com/r/scorpil/rust/tags/
4
image: "qinsoon/ubuntu-zebu-test:latest"
Yi Lin's avatar
Yi Lin committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

# Optional: Pick zero or more services to be used on all builds.
# Only needed when using a docker container to run your tests in.
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-service
#services:
#  - mysql:latest
#  - redis:latest
#  - postgres:latest

# Optional: Install a C compiler, cmake and git into the container.
# You will often need this when you (or any of your dependencies) depends on C code.
#before_script:
#- apt-get update -yqq
#- apt-get install -yqq --no-install-recommends build-essential

# Use cargo to test the project
21 22 23 24 25 26 27
# cache:
#   key: "$CI_BUILD_STAGE/$CI_BUILD_REF_NAME"
#   paths:
#     - .cargo/registry/cache
#     - .cargo/registry/index
#     - target
#     - Cargo.lock
John Zhang's avatar
John Zhang committed
28

29 30 31 32
stages:
  - build
  - test

33 34 35 36 37 38
build_vm:
  stage: build
  script:
    - rustc --version
    - time CARGO_HOME=.cargo RUST_BACKTRACE=1 CC=clang cargo build --release

39 40 41 42
build_test:
  stage: build
  script:
    - rustc --version
qinsoon's avatar
qinsoon committed
43
    - time CARGO_HOME=.cargo RUST_BACKTRACE=1 CC=clang cargo test --release --no-run
qinsoon's avatar
typo  
qinsoon committed
44
  artifacts:
qinsoon's avatar
qinsoon committed
45
    paths:
Yi Lin's avatar
Yi Lin committed
46
      - target/release/libmu.so
Yi Lin's avatar
Yi Lin committed
47
      - target/release/libmu.a
48

John Zhang's avatar
John Zhang committed
49
before_script:
qinsoon's avatar
fix  
qinsoon committed
50
  - export PATH=$PATH:/root/.cargo/bin
qinsoon's avatar
qinsoon committed
51
  - export MU_ZEBU=$CI_PROJECT_DIR
qinsoon's avatar
qinsoon committed
52
  - export ZEBU_BUILD=release
Yi Lin's avatar
Yi Lin committed
53 54
  - export CARGO_HOME=.cargo
  - export CC=clang
John Zhang's avatar
John Zhang committed
55

56
test:cargo:api:
57 58
  stage: test
  script:
59
    - RUST_BACKTRACE=1 RUST_TEST_THREADS=1 cargo test --release test_api 2> /dev/null
60 61

test:cargo:ir:
62 63
  stage: test
  script:
64
    - RUST_BACKTRACE=1 RUST_TEST_THREADS=1 cargo test --release test_ir 2> /dev/null
65 66

test:cargo:compiler:
67 68
  stage: test
  script:
69
    - RUST_BACKTRACE=1 RUST_TEST_THREADS=1 cargo test --release test_compiler 2> /dev/null
70 71

test:cargo:runtime:
72 73
  stage: test
  script:
74
    - RUST_BACKTRACE=1 RUST_TEST_THREADS=1 cargo test --release test_runtime 2> /dev/null
John Zhang's avatar
John Zhang committed
75 76

testjit:milestones:
77 78
  stage: test
  script:
John Zhang's avatar
John Zhang committed
79
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_milestones.py -v
John Zhang's avatar
John Zhang committed
80 81

testjit:binops:
82 83
  stage: test
  script:
John Zhang's avatar
John Zhang committed
84
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_binops.py -v
John Zhang's avatar
John Zhang committed
85 86

testjit:cmpops:
87 88
  stage: test
  script:
John Zhang's avatar
John Zhang committed
89
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_cmpops.py -v
John Zhang's avatar
John Zhang committed
90

John Zhang's avatar
John Zhang committed
91 92 93 94 95 96
testjit:controlflow:
  stage: test
  script:
    - cd tests/test_jit
    - RUST_BACKTRACE=1 pytest test_controlflow.py -v

John Zhang's avatar
John Zhang committed
97
testjit:convops:
John Zhang's avatar
John Zhang committed
98 99
  stage: test
  script:
John Zhang's avatar
John Zhang committed
100
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_convops.py -v
John Zhang's avatar
John Zhang committed
101

John Zhang's avatar
John Zhang committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
testjit:double:
  stage: test
  script:
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_double.py -v

testjit:memops:
  stage: test
  script:
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_memops.py -v

testjit:milestones:
  stage: test
  script:
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_milestones.py -v

testjit:otherops:
  stage: test
  script:
    - RUST_BACKTRACE=1 pytest tests/test_jit/test_otherops.py -v

John Zhang's avatar
John Zhang committed
122
testjit:rpython:
qinsoon's avatar
qinsoon committed
123 124 125 126 127 128 129 130 131 132 133
  stage: test
  script:
    - if [ -d "tests/test_jit/mu-client-pypy" ]; then rm -Rf tests/test_jit/mu-client-pypy; fi
    - git clone https://gitlab.anu.edu.au/mu/mu-client-pypy.git tests/test_jit/mu-client-pypy
    - cd tests/test_jit/mu-client-pypy
    - git checkout mu-rewrite
    - git apply pypy.patch
    - cd $CI_PROJECT_DIR/tests/test_jit
    - MU_LOG_LEVEL=info LD_LIBRARY_PATH=. RUST_BACKTRACE=1 PYTHONPATH=mu-client-pypy pytest test_rpython*.py -v

testjit:som:
John Zhang's avatar
John Zhang committed
134 135
  stage: test
  script:
136
    - if [ -d "tests/test_jit/RPySOM" ]; then rm -Rf tests/test_jit/RPySOM; fi
John Zhang's avatar
John Zhang committed
137
    - git clone https://github.com/microvm/RPySOM.git tests/test_jit/RPySOM
138
    - cd tests/test_jit/RPySOM; git submodule init; git submodule update; cd $CI_PROJECT_DIR
139 140 141 142 143
    - if [ -d "tests/test_jit/mu-client-pypy" ]; then rm -Rf tests/test_jit/mu-client-pypy; fi
    - git clone https://gitlab.anu.edu.au/mu/mu-client-pypy.git tests/test_jit/mu-client-pypy
    - cd tests/test_jit/mu-client-pypy
    - git checkout mu-rewrite
    - git apply pypy.patch
144
    - cd $CI_PROJECT_DIR/tests/test_jit
qinsoon's avatar
qinsoon committed
145
    - MU_LOG_LEVEL=info LD_LIBRARY_PATH=. RUST_BACKTRACE=1 PYTHONPATH=mu-client-pypy:RPySOM/src RPYSOM=RPySOM pytest test_som.py -v