/
.gitlab-ci.yml
90 lines (82 loc) · 2.74 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
variables:
COMPOSE_FILE: test.yaml
COMPOSE_PROJECT_NAME: $CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG
# HACK https://github.com/docker/compose/issues/4688 for parallel jobs
CONTAINER_NAME: $CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_JOB_ID
MQT_PATH: /tmp/maintainer-quality-tools
MQT_REPO: https://github.com/OCA/maintainer-quality-tools.git
REVIEW_DOMAIN: ci.gitlab.tecnativa.com
REVIEW_PORT: 81
# Build
Pull and build images on private addons:
stage: build
script:
- docker-compose down -v --remove-orphans
- docker-compose build --pull
- docker-compose pull
# Lint
Pylint for main branches on private addons:
variables:
CFG: travis_run_pylint.cfg
script: &pylint
- PRIVATE_ADDONS="$(ls -1 odoo/custom/src/private | tr -s '\n' ,)"
- test -n "$PRIVATE_ADDONS" || echo No private addons found
- test -z "$PRIVATE_ADDONS" ||
docker-compose run --rm --user root --name "$CONTAINER_NAME"
-e LOG_LEVEL=WARNING odoo bash -c "
git clone --depth 1 $MQT_REPO $MQT_PATH &&
pip install -q --no-cache pylint-odoo &&
pylint --load-plugins pylint_odoo -d C8101
--rcfile $MQT_PATH/travis/cfg/$CFG
custom/src/private/*"
only:
- &main_branches ^\d+\.\d+$
Pylint for merge requests on private addons:
variables:
CFG: travis_run_pylint_pr.cfg
script: *pylint
except:
- *main_branches
Pylint beta on private addons:
allow_failure: true
variables:
CFG: travis_run_pylint_beta.cfg
script: *pylint
Flake8 on private addons:
script:
- docker-compose run --rm --user root --name "$CONTAINER_NAME"
-e LOG_LEVEL=WARNING odoo bash -c "
git clone --depth 1 $MQT_REPO $MQT_PATH &&
pip install -q --no-cache flake8 &&
cd custom/src/private &&
$MQT_PATH/travis/test_flake8"
# Automated tests
Install and test private addons:
script:
- PRIVATE_ADDONS="$(ls -1 odoo/custom/src/private | tr -s '\n' ,)"
- test -n "$PRIVATE_ADDONS" || echo No private addons found
- test -z "$PRIVATE_ADDONS" ||
docker-compose run --rm odoo --stop-after-init -i $PRIVATE_ADDONS
- test -z "$PRIVATE_ADDONS" ||
docker-compose run --rm odoo unittest $PRIVATE_ADDONS
# Runbot
Boot runbot:
stage: deploy
variables:
DOMAIN_TEST: $CI_ENVIRONMENT_SLUG.$REVIEW_DOMAIN
environment:
name: review $CI_COMMIT_REF_NAME
# TODO Reuse $DOMAIN_TEST instead
# HACK https://gitlab.com/gitlab-org/gitlab-runner/issues/2487
url: http://$CI_ENVIRONMENT_SLUG.$REVIEW_DOMAIN:$REVIEW_PORT
on_stop: Destroy runbot
script:
- docker-compose up -d
Destroy runbot:
stage: deploy
when: manual
environment:
name: review $CI_COMMIT_REF_NAME
action: stop
script:
- docker-compose down -v --rmi local --remove-orphans