-
Notifications
You must be signed in to change notification settings - Fork 3
/
.gitlab-ci.yml
116 lines (104 loc) · 3.4 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
variables:
GIT_SUBMODULE_STRATEGY: recursive
GIT_STRATEGY: clone
CONAN_VERSION: "1.59"
stages:
- check-format
- test
- test-windows
- build
- test_package
- deploy
.setup-apt-packages: &setup-apt-packages |
apt-get update -y
apt-get install -y libgtirb-dev gtirb-pprinter ddisasm
.setup-packages: &setup-packages |
python3 -m pip install -e .
default:
tags: ['shared']
image: $DOCKER_REGISTRY/$CI_PROJECT_PATH:master
check-format:
stage: check-format
script:
- pre-commit run --all-files
test-python:
stage: test
# We upload tests/factorial so that test-python-windows can try to stack
# stamp an ELF binary, and we can't generate an ELF binary on Windows.
artifacts:
name: "$CI_COMMIT_REF_NAME-$CI_JOB_NAME"
paths:
- tests/*
script:
- *setup-packages
- *setup-apt-packages
- python3 setup.py test
- cd tests
- make factorial -B
test-python-windows:
stage: test-windows
tags:
- rewriting-windows
needs: ['test-python']
script:
# Install conan packages
- pip3 install --upgrade conan~=$CONAN_VERSION
- conan profile new default --detect
- export CONAN_LOGIN_USERNAME=ci_user CONAN_PASSWORD=${CI_JOB_TOKEN}
- conan remote add gitlab https://git.grammatech.com/api/v4/packages/conan
- conan install ddisasm/dev@rewriting+ddisasm/main -g deploy
- mkdir tools
- cp -R capstone/* gtirb/* gtirb-pprinter/* ddisasm/* tools
# Install gtirb & helper libraries
- python -m pip install https://download.grammatech.com/gtirb/files/python/gtirb-unstable-py3-none-any.whl
- python -m pip install git+https://github.com/GrammaTech/gtirb-functions.git
- python -m pip install git+https://github.com/GrammaTech/gtirb-capstone.git
- python -m pip install git+https://github.com/GrammaTech/gtirb-rewriting.git
# Run the test
- PATH="$PATH;$(cygpath -w $(pwd)/tools/bin)" cmd.exe /C "C:\\VS\\VC\\Auxiliary\\Build\\vcvars64.bat && python setup.py test"
# test-common-lisp:
# stage: test
# needs: ['setup-apt-repo']
# script:
# - ln -s $(pwd) /root/quicklisp/local-projects/gtirb-stack-stamp
# - sbcl --eval '(ql:quickload :gtirb-stack-stamp)' --eval '(asdf:make :gtirb-stack-stamp :type :program :monolithic t)'
# - ./stack-stamp --help
test-cpp:
stage: test
script:
- *setup-apt-packages
- cmake ./ -Bbuild -DCMAKE_BUILD_TYPE=Debug
- cd build
- make -j8
- cd ..
- build/bin/test-gtirb-stack-stamp
build:
stage: build
artifacts:
paths:
- dist/gtirb_stack_stamp-*-py3-none-any.whl
expire_in: 1 weeks
script:
- *setup-packages
- *setup-apt-packages
- python3 setup.py sdist bdist_wheel
test_package:
variables:
GIT_STRATEGY: none
stage: test_package
script:
- for f in dist/*.whl; do python3 -m pip install $f; done
export_external:
stage: deploy
image: python:3.7-slim
script:
- pip install -r requirements-dev.txt
- python3 setup.py bdist_wheel --dist-dir=$CI_PROJECT_DIR/dist
- VERSION=$(python3 -c "from imp import load_source; pkginfo = load_source('pkginfo.version', 'gtirb_stack_stamp/version.py'); print(pkginfo.__version__)")
# Do not publish .dev versions on the public pypi
- if [[ "$VERSION" =~ \.dev[[:digit:]]*.*$ ]]; then exit 1; fi
- python3 -m twine upload --verbose $CI_PROJECT_DIR/dist/*.whl -u __token__ -p $PYPI_API_KEY
tags:
- kubernetes
rules:
- if: '$CI_COMMIT_REF_NAME =~ /^release-.*/'