-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
115 lines (100 loc) · 3.17 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
---
# yamllint disable rule:line-length
variables:
# Configuration d'un éventuel proxy http.
HTTP_PROXY: ""
HTTPS_PROXY: ""
NO_PROXY: ""
default:
# Récupère une image slim de Debian 12.
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/debian:bookworm-slim
stages:
- build
- tests
cache:
paths:
- $CI_PROJECT_DIR/.cache/apt/
- $CI_PROJECT_DIR/.cache/composer/
- $CI_PROJECT_DIR/vendor/
# Commandes lancées avant chaque job.
before_script:
# Définit les variables.
- export COMPOSER_HOME=$CI_PROJECT_DIR/.cache/composer
- export http_proxy=$HTTP_PROXY
- export https_proxy=$HTTPS_PROXY
- export no_proxy=$NO_PROXY
# Prépare le cache pour APT.
- mkdir -p $CI_PROJECT_DIR/.cache/apt
- export apt_options='-y -qq -o dir::cache::archives="$CI_PROJECT_DIR/.cache/apt"'
# Met à jour l'OS.
- apt $apt_options update 1> /dev/null
- apt $apt_options upgrade 1> /dev/null
# Installe les paquets PHP.
- apt $apt_options install composer 1> /dev/null
- apt $apt_options install php-bcmath php-cli php-curl php-json php-ldap php-mbstring php-sqlite3 php-xml php-zip 1> /dev/null
# Installe le paquet xdebug (nécessaire pour afficher le code coverage via Atoum).
- apt $apt_options install php-xdebug 1> /dev/null
- echo "xdebug.mode=coverage" >> /etc/php/$(php -r "echo substr(PHP_VERSION, 0, 3);")/mods-available/xdebug.ini
# Job install.
# Note: n'exécute pas le job pour des push de tags et les tâches planifiées.
install:
stage: build
cache:
paths:
- vendor/
except:
- schedules
- tags
script:
- cp distribution/config.php .
- /usr/bin/composer install
# Job composer.
# Note: n'exécute pas le job pour des push de tags et les tâches planifiées.
composer:
stage: tests
except:
- schedules
- tags
script:
- /usr/bin/composer validate
# Job atoum.
# Note: n'exécute pas le job pour des push de tags et les tâches planifiées.
atoum:
stage: tests
except:
- schedules
- tags
script:
- cp distribution/config.php .
- /usr/bin/php tests/regression/run.php
- /usr/bin/php vendor/bin/atoum -d tests/unit/classes/ -af .atoum.php
# Job codingstyle.
# Note: n'exécute pas le job pour des push de tags et les tâches planifiées.
codingstyle:
stage: tests
except:
- schedules
- tags
script:
- mkdir -p cache/php_codesniffer
- /usr/bin/php vendor/bin/phpcs --extensions=php --standard=.phpcs.xml --warning-severity=0
allow_failure: false
# Job phpcompatibility.
# Note: n'exécute pas le job pour des push de tags.
phpcompatibility:
stage: tests
except:
- tags
script:
- mkdir -p cache/php_codesniffer
- touch vendor/phpcompatibility/php-compatibility/PHPCompatibility/ruleset.xml
- /usr/bin/php vendor/bin/phpcs --standard=.phpcompatibility.xml
# Job security.
# Note: exécute le job uniquement sur les tâches planifiées.
security:
stage: tests
only:
- schedules
script:
- /usr/bin/composer audit
- /usr/bin/composer outdated