1
0
Fork 0

First commit

This commit is contained in:
Chl 2020-01-17 23:35:15 +01:00
commit e54b5a5663
24 changed files with 3047 additions and 0 deletions

45
README.md Normal file
View file

@ -0,0 +1,45 @@
**Important : this playbook is quick'n dirty and work in progress. Carefully review before using it.**
This Ansible playbook aims at setting a Jenkins CI host linked to Gitea repositories. It will :
- install jenkins from pkg.jenkins.io
- install the default JDK
- install the Jenkins plugins requested for the jenkins-php.org templates
- create a jenkins user `gitea` with restricted access just to launch a job
- creates the specified jobs
- install NginX and set up 2 vhost as recommended in https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy
Most of the configuration should be available in the inventory.
It is launched usually like this : `ansible-playbook site.yml`
## Prerequisite
Hosts should be accessible via SSH as the root user (else, add the usual
`remote_user`/`become` instructions in ansible.cfg) and with the Python
prerequisite of Ansible (usually
Only tested on Debian 10 amd64 so far, with Ansible 2.7.7.
Note : to test or to limit to one particular host :
```
ansible foo.bar.com -m ping
ansible-playbook -l foo.bar.com -C -D site.yml
```
## Directory layout
We follow (more or less) the recommendations of
https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html
with :
- `site.yml` : *master playbook*
- `ansible.cfg` and `inventory` : the first one set up some default configurations and introduce the second one : the inventory.
- `roles/common/`, `roles/fooapp/` : the roles with their tree `tasks/main.yml`, `files/`, `handlers/main.yml`, ...
- `group_vars/group1.yml` and `host_vars/hostname1.yml` : variables dedicated to a group or a host respectively.
Note : contrary to some recommendations, I prefer to set the maximum of variables in the inventory instead of `host_vars` and `group_vars`. For a small playbook like this one, it seems acceptable.
## TODO
- stop execution if host is running an untested system ?
- use jenkins-cli to maintain credentials.xml ? It's not really easy to manipulate in Ansible at the moment...
- update plugins, or at least display a warning when they are not up to date.

32
ansible.cfg Normal file
View file

@ -0,0 +1,32 @@
# config file for ansible -- http://ansible.com/
# ==============================================
# nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first
[defaults]
# some basic default values...
inventory = ./inventory.yml
#remote_tmp = /tmp/.ansible
remote_user = root
transport = ssh
remote_port = 22
# We try not to load the hypervisor
forks = 3
# For the time being, we don't trigger handlers (for example
# restart SSH after modifying its config) when an error
# happened.
# It is the default Ansible behaviour but I prefer to explicitly
# set it here in case a change is needed later.
force_handlers = False
#filter_plugins = ./plugins/filter_plugins
#[privilege_escalation]
#become = True

16
inventory.yml Normal file
View file

@ -0,0 +1,16 @@
all:
hosts:
test-jenkins-via-ansible.example.net:
jobs:
template-php-v1: # Job template (deactivated) which can be manually cloned.
foo:
repository_url: ssh://git@code.example.net:2020/foo
deploy_url: demos.xlii.si:/var/www/test1234 # TODO: not implemented yet
bar:
repository_url: ssh://git@code.example.net:2020/bar
vars:
# If you want this playbook to only install Jenkins and let
# him be managed by other means thereafter, you can change this
# variable globally or by host.
# By default : False
jenkins_installonly: False

View file

@ -0,0 +1,47 @@
---
jenkins_home: /var/lib/jenkins
jenkins_cli_jar_location: /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar
#jenkins_updates_url:
#jenkins_plugins_install_dependencies:
jenkins_admin_password_file: "{{ jenkins_home }}/secrets/initialAdminPassword"
jenkins_gitea_password_file: "{{ jenkins_home }}/secrets/giteaAnsiblePassword"
jenkins_cli_command: java -jar "{{ jenkins_cli_jar_location }}" -s http://localhost:8080/ -auth admin:$( cat "{{ jenkins_admin_password_file | quote }}" )
jenkins_credential_keyid: deploykey1
jenkins_credential_keydesc: Deploy key n.1
jenkins_plugins:
- credentials
- git-client
- ssh
- ant
- ws-cleanup # workspace-cleanup : I prefer to be clean at each build start
# Taken from jenkins-php.org
- checkstyle
- cloverphp
- crap4j
- dry
- htmlpublisher
- jdepend
- plot
- pmd
- violations
- warnings
- xunit
jenkins_plugins_system_dependency:
- ant
- composer
- php-gd
- php-mysql
- php-pgsql
- php-xdebug # for the code coverage
- mariadb-server
- postgresql
- phpunit # TODO: test if we can use the /vendor one ?
- php-codesniffer
- phploc
- pdepend
- phpmd
- phpcpd
- phpdox

View file

@ -0,0 +1,144 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQGiBEmFQG0RBACXScOxb6BTV6rQE/tcJopAEWsdvmE0jNIRWjDDzB7HovX6Anrq
n7+Vq4spAReSFbBVaYiiOx2cGDymj2dyx2i9NAI/9/cQXJOU+RPdDzHVlO1Edksp
5rKn0cGPWY5sLxRf8s/tO5oyKgwCVgTaB5a8gBHaoGms3nNC4YYf+lqlpwCgjbti
3u1iMIx6Rs+dG0+xw1oi5FUD/2tLJMx7vCUQHhPRupeYFPoD8vWpcbGb5nHfHi4U
8/x4qZspAIwvXtGw0UBHildGpqe9onp22Syadn/7JgMWhHoFw5Ke/rTMlxREL7pa
TiXuagD2G84tjJ66oJP1FigslJzrnG61y85V7THL61OFqDg6IOP4onbsdqHby4VD
zZj9A/9uQxIn5250AGLNpARStAcNPJNJbHOQuv0iF3vnG8uO7/oscB0TYb8/juxr
hs9GdSN0U0BxENR+8KWy5lttpqLMKlKRknQYy34UstQiyFgAQ9Epncu9uIbVDgWt
y7utnqXN033EyYkcWx5EhLAgHkC7wSzeSWABV3JSXN7CeeOif7QiS29oc3VrZSBL
YXdhZ3VjaGkgPGtrQGtvaHN1a2Uub3JnPohjBBMRAgAjAhsDBgsJCAcDAgQVAggD
BBYCAwECHgECF4AFAko/7vYCGQEACgkQm30y8tUFguabhgCgi54IQR4rpJZ/uUHe
ZB879zUWTQwAniQDBO+Zly7Fsvm0Mcvqvl02UzxCiGAEExECACAFAkmFQG0CGwMG
CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCbfTLy1QWC5qtXAJ9hPRisOhkexWXJ
nXQMl9cOTvm4LgCdGint1TONoZ2I4JtOiFzOmeP3ju3RzcvNyQEQAAEBAAAAAAAA
AAAAAAAA/9j/4AAQSkZJRgABAQEAYABgAAD/4QBgRXhpZgAASUkqAAgAAAAEADEB
AgAZAAAAPgAAABBRAQABAAAAAUOQABFRBAABAAAAEgsAABJRBAABAAAAEgsAAAAA
AABNYWNyb21lZGlhIEZpcmV3b3JrcyA0LjAAAP/bAEMACAYGBwYFCAcHBwkJCAoM
FA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0
Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAK4AlgMBIgACEQEDEQH/xAAfAAAB
BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0B
AgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp
KjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK
kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj
5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ
Cgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGh
scEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZ
WmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1
tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA
AhEDEQA/APcBI/8Afb86XzH/AL7fnUYpwqRknmN/fP50u9v7x/OmCgUASb2/vH86
Xe394/nTBS0AP3t/eP50u4+p/OmUopgO3H1NO3H1NR5xThQA7cfWlyfU0ylFMQ/J
9aXPvTKdQAuaM0lLQAtJmiigAzRSdqKAKApwpopc1mUOpRSUopgKKWkFLQAueKzr
zXbCwk2Tzxq3cFwK8v8Aih8V30aaTQ9DKtegYnuTyIvZR3b+VfP1/q17fzvLc3Ms
sjHJZ2JJNGr2HZdT6j8U/FbR/DcKsM3VxLkpGh6AetcI37Ql4Zcx6LAYx2aUgmvD
1ju7obgJHA7nmmmG4TqjDHtS+ZXL1sfVPhT4yeH/ABFNHaXYbS71zhVnYGNz6B+n
4HFejK2RmvhJJSDiTj6ivYvht8XptE8rSPEEklxpxwkFyTue39j6p+op3a3Javsf
RuacDVaC4juIUmhkWSKRQyspyGB7ipgasgfmlpoNLmgBaKSigBaKM0UAUBS0lKKz
KFFLSUooAdWR4o1qLw/4bvtSmZVEMRK57t2H51rCvJPj7etD4WsbQMQJ7jkDuFBN
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
=fBn8
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1 @@
If you change this file, remember to also change its `id` in the corresponding task.

View file

@ -0,0 +1,11 @@
---
- name: restart jenkins
service: name=jenkins state=restarted
- name: safe-restart jenkins
shell: "{{ jenkins_cli_command }} safe-restart"
# As of now (Ansible 2.7.7), Ansible doesn't support blocks in handlers
- name: safe-restart jenkins and wait
import_tasks: roles/jenkins-php-v1/tasks/include_saferestartandwait.yml

View file

@ -0,0 +1,24 @@
---
# Etckeeper is a small fondness of mine, it semi-automatically
# keep track of /etc with git.
# Feel free to remove all this if you'rs not interested.
- name: detect etckeeper presence
shell: "which etckeeper"
ignore_errors: True
register: tmp
changed_when: False
- name: Set fact about etckeeper presence
set_fact:
etckeeper_installed: "{{ tmp.rc == 0 }}"
- name: Check that /etc is clean
shell: etckeeper unclean && echo "Uncommitted changes." && return 1 || return 0
ignore_errors: True # we add a 'fail' task to tell the problem more explictly.
register: tmp
changed_when: False
when: etckeeper_installed
- fail:
msg: "Etckeeper is installed but there is uncommitted changes in /etc."
when: etckeeper_installed and tmp.rc != 0

View file

@ -0,0 +1,65 @@
---
# Add Jenkins repository for Debian
- name: Add Jenkins-stable.io repository key
apt_key:
id: "150FDE3F7787E7D11EF4E12A9B7D32F2D50582E6"
data: "{{ lookup('file', 'jenkins-stable.io.pem') }}"
state: present
register: tmp
- name: New APT sources - commit
command: "etckeeper commit 'apt: Jenkins repository key added by Ansible'"
when: tmp.changed and etckeeper_installed
- name: Check if /etc/apt/sources.list.d/jenkins.list is managed by ansible
shell: "grep -ic '# This file is managed by Ansible' /etc/apt/sources.list.d/jenkins.list || true"
register: result
changed_when: false
- name: Config /etc/apt/sources.list.d/jenkins.list file
template:
src: "{{ item }}"
dest: /etc/apt/sources.list.d/jenkins.list
owner: root
group: root
mode: 0644
backup: no
force: "{{ result.stdout is defined and result.stdout == '1' }}" # Only manage the file if the header is present
with_first_found:
- "jenkins.list.{{ ansible_fqdn }}.j2"
- "jenkins.list.j2"
register: tmp
- name: New APT sources - commit
command: "etckeeper commit 'apt: Jenkins repository added/changed by Ansible'"
when: tmp.changed and etckeeper_installed
- name: Update APT cache
apt:
update_cache: yes
when: tmp.changed
# Install Jenkins
# (note: the Jenkins package doesn't wait for Java to be installed
# before trying to launch itself, so we install them separately)
# (note2: in case we go back downloading the .war, here is a command to
# verify it: jarsigner -verbose -certs -verify /tmp/jenkins.war
- name: Install Java
apt:
name:
- default-jdk
state: present
- name: Install Jenkins package
apt:
name:
- jenkins
state: present
register: result
- name: Loop until Jenkins is available
get_url:
url: "http://localhost:8080/login"
dest: "/dev/null"
force: True
register: tmp
until: tmp.status_code is defined and tmp.status_code == 200 or result.changed == False
retries: 10
delay: 5
changed_when: False

View file

@ -0,0 +1,50 @@
---
# Install plugins
# inspired by https://github.com/geerlingguy/ansible-role-jenkins MIT (Expat) / BSD)
# but we couldn't use jenkins_plugin's Ansible module because of crumb (CSRF) problems with our version
# Get current plugin list
# Warning : it may not be up to date if Jenkins hasn't been restarted after last plugin install
- name: Get the current plugin list
shell: "{{ jenkins_cli_command }} list-plugins | awk '{ print $1 }'"
changed_when: False
check_mode: no
register: current_plugin_list
## Update Jenkins so that plugin updates don't fail.
#- name: Create Jenkins updates directory.
# file:
# path: "{{ jenkins_home }}/updates"
# state: directory
# owner: jenkins
# group: jenkins
#
#- name: Download current plugin updates from Jenkins update site.
# get_url:
# url: "{{ jenkins_updates_url }}/update-center.json"
# dest: "{{ jenkins_home }}/updates/default.json"
# owner: jenkins
# group: jenkins
# mode: 0440
# changed_when: false
# register: get_result
# until: get_result is success
# retries: 3
# delay: 2
#
#- name: Remove first and last line from json file.
# replace:
# path: "{{ jenkins_home }}/updates/default.json"
# regexp: "1d;$d"
- name: Install Jenkins plugins.
shell: "{{ jenkins_cli_command }} install-plugin {{ item | quote }}"
with_items: "{{ jenkins_plugins }}"
when: item not in current_plugin_list.stdout_lines
notify: safe-restart jenkins and wait
- name: Install system package needed by Jenkins plugins
apt:
name: "{{ jenkins_plugins_system_dependency }}"
state: present

View file

@ -0,0 +1,29 @@
---
- name: Check if Gitea user has already been created
stat:
path: "{{ jenkins_gitea_password_file }}"
register: result
- name: Do we have to create the Gitea user
set_fact:
createGiteaUser: "{{ result.stat.exists is undefined or result.stat.exists == False }}"
- name: Generate a password for the Gitea user
set_fact:
giteaPassword: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
when: createGiteaUser
- name: Create Gitea user
shell: echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("gitea", "{{ giteaPassword | quote }}")' | "{{ jenkins_cli_command }}" groovy =
when: createGiteaUser
- name: Upload the new password
copy:
content: "{{ giteaPassword }}"
dest: "{{ jenkins_gitea_password_file }}"
owner: jenkins
group: jenkins
mode: 0600
when: createGiteaUser
#no_log: yes # FIXME: actually, we want to know it to tell the user to set a URL with it in Gitea. Add a debug msg maybe ?

View file

@ -0,0 +1,85 @@
---
# Needed to write a config.xml which is not changed at each Ansible run
- name: Get current Jenkins version
shell: "{{ jenkins_cli_command }} version"
changed_when: False
check_mode: no
register: result
- name: Set fact about current Jenkins version
set_fact:
current_jenkins_version: "{{ result.stdout_lines[0] }}"
- name: Upload main config.xml
template:
src: "{{ item }}"
dest: "{{ jenkins_home }}/config.xml"
owner: jenkins
group: jenkins
mode: 0644
backup: yes
with_first_found:
- "config.xml.{{ ansible_fqdn }}.j2"
- "config.xml.j2"
notify: safe-restart jenkins and wait
- name: Upload JenkinsLocationConfiguration.xml
template:
src: "{{ item }}"
dest: "{{ jenkins_home }}/jenkins.model.JenkinsLocationConfiguration.xml"
owner: jenkins
group: jenkins
mode: 0644
backup: yes
with_first_found:
- "jenkins.model.JenkinsLocationConfiguration.xml.{{ ansible_fqdn }}.j2"
- "jenkins.model.JenkinsLocationConfiguration.xml.j2"
notify: safe-restart jenkins and wait
# Generate a SSH RSA key pair if not already present
# (we do it without the Ansible module which is only available starting 2.8)
# (and we don't use become/become_user because it fails with a permission denied on /tmp/.ansible...)
- name: Generate SSH RSA key pair
command: su -c 'ssh-keygen -q -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""' - jenkins
args:
creates: "{{ jenkins_home }}/.ssh/id_rsa"
#become_user: jenkins # permission denied
#become: yes
register: result
- name: Retrieve the SSH private key
slurp:
src: "{{ jenkins_home }}/.ssh/id_rsa.pub"
register: tmp
when: result.changed
- name: Ouput public key
debug:
msg: "Don't forget to set the public key on the Git repository and the deploy target : {{ tmp.content | b64decode | trim }}"
when: result.changed
# Upload this new key to the Jenkins credentials plugin system
# (the create/update/import-credential-as-xml is kinda cumbersome for our
# usecase. No way to export the key or get a MD5/SHA256 of it, so we just
# go for the credentials.xml file directly :)
- name: Retrieve the SSH private key
slurp:
src: "{{ jenkins_home }}/.ssh/id_rsa"
register: tmp
no_log: yes
- name: Set fact about SSH key
set_fact:
ssh_private_key: "{{ tmp.content | b64decode | trim }}"
no_log: yes
- name: Upload SSH RSA key pair as credential in Jenkins
template:
src: "{{ item }}"
dest: "{{ jenkins_home }}/credentials.xml"
owner: jenkins
group: jenkins
mode: 0600
force: yes
backup: yes
with_first_found:
- "credentials.xml.{{ ansible_fqdn }}.j2"
- "credentials.xml.j2"
notify: safe-restart jenkins and wait
#shell: cat /tmp/tmp.xml | java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080/ -auth admin:$( cat /var/lib/jenkins/secrets/initialAdminPassword ) create-credentials-by-xml system::system::jenkins _

View file

@ -0,0 +1,18 @@
---
# We need Jenkins to reboot if new plugins were installed.
- meta: flush_handlers
- name: Get the list of jobs that already exist
shell: "{{ jenkins_cli_command }} list-jobs"
changed_when: False
check_mode: no
register: current_jobs_list
# Loop on every job we maintain
- name: Manage each job
include_tasks:
file: include_jobinstall.yml
loop: "{{ lookup('dict', jobs ) }}"
loop_control:
loop_var: job

View file

@ -0,0 +1,28 @@
---
# When the job doesn't exist, we provide an empty XML, and then work
# directly on the jenkins_home/jobs/JOB/config.xml file
- name: Create a empty job
shell: "echo '<project />' | {{ jenkins_cli_command }} create-job {{ job.key | quote }}"
when: job.key not in current_jobs_list.stdout_lines
- name: Upload job config template
template:
src: "{{ item }}"
# if job exists, we write directly to jobs/JOBNAME/config.xml, else we write to the tmp file.
dest: "{{ jenkins_home + '/jobs/' + job.key + '/config.xml' }}"
mode: 0600
owner: jenkins
group: jenkins
backup: yes
force: yes
with_first_found:
- "jobs/config.xml.{{ ansible_fqdn }}.{{ job.key }}.j2"
- "jobs/config.xml.{{ job.key }}.j2"
- "jobs/config.xml.{{ ansible_fqdn }}.j2"
- "jobs/config.xml.j2"
register: jobconfig
- name: Reload the job
shell: "{{ jenkins_cli_command }} reload-job {{ job.key | quote }}"
when: jobconfig.changed

View file

@ -0,0 +1,16 @@
---
- name: safe-restart jenkins and wait (include)
block:
- name: safe-restart jenkins
shell: "{{ jenkins_cli_command }} safe-restart"
- name: Loop until Jenkins is available
get_url:
url: "http://localhost:8080/login"
dest: "/dev/null"
force: True
register: result
until: result.status_code is defined and result.status_code == 200
retries: 10
delay: 5
changed_when: False

View file

@ -0,0 +1,41 @@
---
# Usually, we only install Jenkins and let it live its life,
# so if it seems to be already installed, we skip this task.
- name: Check if /var/lib/jenkins exists
stat:
path: "{{ jenkins_home }}"
register: result
- name: No going further if jenkinsonlyinstall is set and Jenkins is already installed
set_fact:
gogogo: "{{ jenkins_installonly is undefined or jenkins_installonly == False or result.stat.isdir is undefined or result.stat.isdir == False }}"
- name: Warning about confidentiality
pause:
prompt: "Warning: this role will manage and display a lot of passwords and keys readable through the Ansible log and the process infos on each host. Sorry..."
seconds: 1 # TODO: 10
when: gogogo
# Pre-check
- include_tasks: roles/jenkins-php-v1/tasks/00_precheck.yml
when: gogogo
# Install Jenkins via the upstream repository
- include_tasks: roles/jenkins-php-v1/tasks/10_jenkins-repository.yml
when: gogogo
- include_tasks: roles/jenkins-php-v1/tasks/20_install-plugins.yml
when: gogogo
# At the moment, groups or roles are kinda overkill
# (but it probably will get back on us at the end...)
- include_tasks: roles/jenkins-php-v1/tasks/30_users.yml
when: gogogo
# Big configuration step : ACL, SSH keys aka. credentials, etc.
- include_tasks: roles/jenkins-php-v1/tasks/40_configure-jenkins.yml
when: gogogo
- include_tasks: roles/jenkins-php-v1/tasks/50_create-jobs.yml
when: gogogo

View file

@ -0,0 +1,74 @@
<?xml version='1.1' encoding='UTF-8'?>
<hudson>
<disabledAdministrativeMonitors/>
<version>{{ current_jenkins_version }}</version>
<installStateName>RUNNING</installStateName>
<numExecutors>1</numExecutors>
<mode>NORMAL</mode>
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:admin</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:admin</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:admin</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update:admin</permission>
<permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:admin</permission>
<permission>hudson.model.Computer.Build:admin</permission>
<permission>hudson.model.Computer.Configure:admin</permission>
<permission>hudson.model.Computer.Connect:admin</permission>
<permission>hudson.model.Computer.Create:admin</permission>
<permission>hudson.model.Computer.Delete:admin</permission>
<permission>hudson.model.Computer.Disconnect:admin</permission>
<permission>hudson.model.Hudson.Administer:admin</permission>
<permission>hudson.model.Hudson.Read:admin</permission>
<permission>hudson.model.Hudson.Read:gitea</permission>
<permission>hudson.model.Item.Build:admin</permission>
<permission>hudson.model.Item.Build:gitea</permission>
<permission>hudson.model.Item.Cancel:admin</permission>
<permission>hudson.model.Item.Configure:admin</permission>
<permission>hudson.model.Item.Create:admin</permission>
<permission>hudson.model.Item.Delete:admin</permission>
<permission>hudson.model.Item.Discover:admin</permission>
<permission>hudson.model.Item.Read:admin</permission>
<permission>hudson.model.Item.Read:gitea</permission>
<permission>hudson.model.Item.Workspace:admin</permission>
<permission>hudson.model.Item.Workspace:gitea</permission>
<permission>hudson.model.Run.Delete:admin</permission>
<permission>hudson.model.Run.Update:admin</permission>
<permission>hudson.model.View.Configure:admin</permission>
<permission>hudson.model.View.Create:admin</permission>
<permission>hudson.model.View.Delete:admin</permission>
<permission>hudson.model.View.Read:admin</permission>
<permission>hudson.scm.SCM.Tag:admin</permission>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
<disableRememberMe>true</disableRememberMe>
<projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
<buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
<markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
<jdks/>
<viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
<myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
<clouds/>
<scmCheckoutRetryCount>0</scmCheckoutRetryCount>
<views>
<hudson.model.AllView>
<owner class="hudson" reference="../../.."/>
<name>all</name>
<filterExecutors>false</filterExecutors>
<filterQueue>false</filterQueue>
<properties class="hudson.model.View$PropertyList"/>
</hudson.model.AllView>
</views>
<primaryView>all</primaryView>
<slaveAgentPort>-1</slaveAgentPort>
<label></label>
<crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
<excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
</crumbIssuer>
<nodeProperties/>
<globalNodeProperties/>
</hudson>

View file

@ -0,0 +1,21 @@
<?xml version='1.1' encoding='UTF-8'?>
<com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@2.3.0">
<domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash">
<entry>
<com.cloudbees.plugins.credentials.domains.Domain>
<specifications/>
</com.cloudbees.plugins.credentials.domains.Domain>
<java.util.concurrent.CopyOnWriteArrayList>
<com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey plugin="ssh-credentials@1.18">
<scope>GLOBAL</scope>
<id>{{ jenkins_credential_keyid }}</id>
<description>{{ jenkins_credential_keydesc }}</description>
<username>jenkins</username>
<privateKeySource class="com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource">
<privateKey>{{ ssh_private_key }}</privateKey>
</privateKeySource>
</com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey>
</java.util.concurrent.CopyOnWriteArrayList>
</entry>
</domainCredentialsMap>
</com.cloudbees.plugins.credentials.SystemCredentialsProvider>

View file

@ -0,0 +1,2 @@
# This file is managed by Ansible
deb http://pkg.jenkins.io/debian-stable binary/

View file

@ -0,0 +1,6 @@
<?xml version='1.1' encoding='UTF-8'?>
<jenkins.model.JenkinsLocationConfiguration>
<!-- TODO : passer en HTTPS -->
<!-- Voir aussi pour Resource root URL, histoire d'avoir un joli affichage de Clover & Ci. -->
<jenkinsUrl>http://{{ inventory_hostname }}:8080/</jenkinsUrl>
</jenkins.model.JenkinsLocationConfiguration>

View file

@ -0,0 +1,878 @@
<?xml version='1.1' encoding='UTF-8'?>
<project>
<actions/>
<description>&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/overview-pyramid.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;&#xd;
&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/dependencies.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;</description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.0.0">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>ssh://gb@code.bugness.org:2020/chl/webcollek-tmp-jenkins</url>
<credentialsId>deploykey1</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/master</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="list"/>
<extensions/>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers>
<hudson.triggers.SCMTrigger>
<spec></spec>
<ignorePostCommitHooks>false</ignorePostCommitHooks>
</hudson.triggers.SCMTrigger>
</triggers>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Ant plugin="ant@1.10">
<targets></targets>
</hudson.tasks.Ant>
</builders>
<publishers>
<hudson.plugins.warnings.WarningsPublisher plugin="warnings@5.0.1">
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[WARNINGS] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds plugin="analysis-core@1.96">
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>true</doNotResolveRelativePaths>
<includePattern></includePattern>
<excludePattern></excludePattern>
<messagesPattern></messagesPattern>
<categoriesPattern></categoriesPattern>
<parserConfigurations/>
<consoleParsers>
<hudson.plugins.warnings.ConsoleParser>
<parserName>PHP Runtime</parserName>
</hudson.plugins.warnings.ConsoleParser>
</consoleParsers>
</hudson.plugins.warnings.WarningsPublisher>
<hudson.plugins.checkstyle.CheckStylePublisher plugin="checkstyle@4.0.0">
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[CHECKSTYLE] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds plugin="analysis-core@1.96">
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>false</doNotResolveRelativePaths>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.checkstyle.CheckStylePublisher>
<hudson.plugins.pmd.PmdPublisher plugin="pmd@4.0.0">
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[PMD] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds plugin="analysis-core@1.96">
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>false</doNotResolveRelativePaths>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.pmd.PmdPublisher>
<hudson.plugins.dry.DryPublisher plugin="dry@3.0.0">
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[DRY] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds plugin="analysis-core@1.96">
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>false</doNotResolveRelativePaths>
<pattern>build/logs/pmd-cpd.xml</pattern>
<highThreshold>50</highThreshold>
<normalThreshold>25</normalThreshold>
</hudson.plugins.dry.DryPublisher>
<hudson.plugins.plot.PlotPublisher plugin="plot@2.1.3">
<plots>
<hudson.plugins.plot.Plot>
<title>A - Lines of code</title>
<yaxis>Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string> Lines of Code (LOC)</string>
<string>Non-Comment Lines of Code (NCLOC)</string>
<string>Comment Lines of Code (CLOC)</string>
<string>Logical Lines of Code (LLOC) </string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Lines of Code (LOC),Comment Lines of Code (CLOC),Non-Comment Lines of Code (NCLOC),Logical Lines of Code (LLOC) </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Lines of Code (LOC)</string>
<string>Comment Lines of Code (CLOC)</string>
<string>Non-Comment Lines of Code (NCLOC)</string>
<string>Logical Lines of Code (LLOC) </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>123.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>B - Structures Containers</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Directories</string>
<string>Namespaces</string>
<string>Files</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Directories,Files,Namespaces</exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string>Directories</string>
<string>Files</string>
<string>Namespaces</string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1107599928.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>C - Average Length</title>
<yaxis>Average Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string> Average Class Length (LLOC)</string>
<string>Average Function Length (LLOC) </string>
<string>Average Method Length (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Average Class Length (LLOC),Average Method Length (LLOC),Average Function Length (LLOC) </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Average Class Length (LLOC)</string>
<string>Average Method Length (LLOC)</string>
<string>Average Function Length (LLOC) </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>523405415.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>D - Relative Cyclomatic Complexity</title>
<yaxis>Cyclomatic Complexity by Structure</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Cyclomatic Complexity / Number of Methods </string>
<string> Cyclomatic Complexity / Lines of Code</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Cyclomatic Complexity / Lines of Code,Cyclomatic Complexity / Number of Methods </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Cyclomatic Complexity / Lines of Code</string>
<string>Cyclomatic Complexity / Number of Methods </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>186376189.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>E - Types of Classes</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Abstract Classes</string>
<string>Classes</string>
<string>Concrete Classes</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Classes,Abstract Classes,Concrete Classes</exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string>Classes</string>
<string>Abstract Classes</string>
<string>Concrete Classes</string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>594356163.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>F - Types of Methods</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Static Methods</string>
<string> Methods</string>
<string>Non-Static Methods</string>
<string>Non-Public Methods </string>
<string>Public Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Methods,Non-Static Methods,Static Methods,Public Methods,Non-Public Methods </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Methods</string>
<string>Non-Static Methods</string>
<string>Static Methods</string>
<string>Public Methods</string>
<string>Non-Public Methods </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1019987862.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>G - Types of Constants</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Class Constants</string>
<string>Constants</string>
<string>Global Constants</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Constants,Global Constants,Class Constants</exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string>Constants</string>
<string>Global Constants</string>
<string>Class Constants</string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>217648577.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>I - Testing</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Test Methods</string>
<string>Test Classes</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Test Classes,Test Methods</exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string>Test Classes</string>
<string>Test Methods</string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>174807245.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>AB - Code Structure by Logical Lines of Code</title>
<yaxis>Logical Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>LLOC outside functions or classes </string>
<string>Classes Length (LLOC)</string>
<string> Logical Lines of Code (LLOC)</string>
<string>Functions Length (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Logical Lines of Code (LLOC),Classes Length (LLOC),Functions Length (LLOC),LLOC outside functions or classes </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Logical Lines of Code (LLOC)</string>
<string>Classes Length (LLOC)</string>
<string>Functions Length (LLOC)</string>
<string>LLOC outside functions or classes </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>946905520.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>H - Types of Functions</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Functions</string>
<string>Named Functions</string>
<string>Anonymous Functions</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Functions,Named Functions,Anonymous Functions</exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string>Functions</string>
<string>Named Functions</string>
<string>Anonymous Functions</string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1174623854.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>BB - Structure Objects</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label></label>
<fileType>csv</fileType>
<strExclusionSet>
<string>Constants </string>
<string>Functions</string>
<string> Interfaces</string>
<string>Traits</string>
<string>Methods</string>
<string>Classes</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues> Interfaces,Traits,Classes,Methods,Functions,Constants </exclusionValues>
<exclusionValuesList class="java.util.Arrays$ArrayList">
<a class="string-array">
<string> Interfaces</string>
<string>Traits</string>
<string>Classes</string>
<string>Methods</string>
<string>Functions</string>
<string>Constants </string>
</a>
</exclusionValuesList>
<url></url>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1234245913.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
<keepRecords>false</keepRecords>
<exclZero>false</exclZero>
<logarithmic>false</logarithmic>
<yaxisMinimum></yaxisMinimum>
<yaxisMaximum></yaxisMaximum>
</hudson.plugins.plot.Plot>
</plots>
</hudson.plugins.plot.PlotPublisher>
<org.jenkinsci.plugins.cloverphp.CloverPHPPublisher plugin="cloverphp@0.5">
<publishHtmlReport>true</publishHtmlReport>
<reportDir>build/coverage</reportDir>
<xmlLocation>build/logs/clover.xml</xmlLocation>
<disableArchiving>false</disableArchiving>
<healthyTarget>
<methodCoverage>70</methodCoverage>
<statementCoverage>80</statementCoverage>
</healthyTarget>
<unhealthyTarget/>
<failingTarget/>
</org.jenkinsci.plugins.cloverphp.CloverPHPPublisher>
<hudson.plugins.crap4j.Crap4JPublisher plugin="crap4j@0.9">
<reportPattern>build/logs/crap4j.xml</reportPattern>
<healthThreshold></healthThreshold>
</hudson.plugins.crap4j.Crap4JPublisher>
<htmlpublisher.HtmlPublisher plugin="htmlpublisher@1.21">
<reportTargets>
<htmlpublisher.HtmlPublisherTarget>
<reportName>API Documentation</reportName>
<reportDir>build/api</reportDir>
<reportFiles>index.html</reportFiles>
<alwaysLinkToLastBuild>false</alwaysLinkToLastBuild>
<reportTitles></reportTitles>
<keepAll>true</keepAll>
<allowMissing>false</allowMissing>
<includes>**/*</includes>
<escapeUnderscores>true</escapeUnderscores>
</htmlpublisher.HtmlPublisherTarget>
</reportTargets>
</htmlpublisher.HtmlPublisher>
<xunit plugin="xunit@2.3.7">
<types>
<PHPUnitJunitHudsonTestType>
<pattern>build/logs/junit.xml</pattern>
<skipNoTestFiles>false</skipNoTestFiles>
<failIfNotNew>true</failIfNotNew>
<deleteOutputFiles>true</deleteOutputFiles>
<stopProcessingIfError>true</stopProcessingIfError>
</PHPUnitJunitHudsonTestType>
</types>
<thresholds>
<org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
</thresholds>
<thresholdMode>1</thresholdMode>
<extraConfiguration>
<testTimeMargin>3000</testTimeMargin>
<reduceLog>true</reduceLog>
</extraConfiguration>
<testDataPublishers class="empty-set"/>
</xunit>
<hudson.plugins.jdepend.JDependRecorder plugin="jdepend@1.3.0">
<configuredJDependFile>build/logs/jdepend.xml</configuredJDependFile>
</hudson.plugins.jdepend.JDependRecorder>
<hudson.plugins.violations.ViolationsPublisher plugin="violations@0.7.11">
<config>
<suppressions class="sorted-set"/>
<typeConfigs>
<entry>
<string>checkstyle</string>
<hudson.plugins.violations.TypeConfig>
<type>checkstyle</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>codenarc</string>
<hudson.plugins.violations.TypeConfig>
<type>codenarc</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpd</string>
<hudson.plugins.violations.TypeConfig>
<type>cpd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd-cpd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpplint</string>
<hudson.plugins.violations.TypeConfig>
<type>cpplint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>csslint</string>
<hudson.plugins.violations.TypeConfig>
<type>csslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>findbugs</string>
<hudson.plugins.violations.TypeConfig>
<type>findbugs</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>fxcop</string>
<hudson.plugins.violations.TypeConfig>
<type>fxcop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>gendarme</string>
<hudson.plugins.violations.TypeConfig>
<type>gendarme</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jcreport</string>
<hudson.plugins.violations.TypeConfig>
<type>jcreport</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jslint</string>
<hudson.plugins.violations.TypeConfig>
<type>jslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pep8</string>
<hudson.plugins.violations.TypeConfig>
<type>pep8</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>perlcritic</string>
<hudson.plugins.violations.TypeConfig>
<type>perlcritic</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pmd</string>
<hudson.plugins.violations.TypeConfig>
<type>pmd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pylint</string>
<hudson.plugins.violations.TypeConfig>
<type>pylint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>simian</string>
<hudson.plugins.violations.TypeConfig>
<type>simian</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>stylecop</string>
<hudson.plugins.violations.TypeConfig>
<type>stylecop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
</typeConfigs>
<limit>100</limit>
<sourcePathPattern></sourcePathPattern>
<fauxProjectPath></fauxProjectPath>
<encoding>default</encoding>
</config>
</hudson.plugins.violations.ViolationsPublisher>
</publishers>
<buildWrappers>
<hudson.plugins.ws__cleanup.PreBuildCleanup plugin="ws-cleanup@0.38">
<deleteDirs>false</deleteDirs>
<cleanupParameter></cleanupParameter>
<externalDelete></externalDelete>
<disableDeferredWipeout>false</disableDeferredWipeout>
</hudson.plugins.ws__cleanup.PreBuildCleanup>
</buildWrappers>
</project>

View file

@ -0,0 +1,718 @@
<?xml version="1.0" encoding="UTF-8"?><project>
<actions/>
<description>&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/overview-pyramid.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;&#xd;
&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/dependencies.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;</description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.0.0">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>{{ job.value.repository_url is defined | ternary(job.value.repository_url, '') }}</url>
<credentialsId>{{ jenkins_credential_keyid }}</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>{{ job.value.branch_spec is defined | ternary(job.value.branch_spec, '*/master') }}</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="list"/>
<extensions/>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers>
<hudson.triggers.SCMTrigger>
<spec></spec>
<ignorePostCommitHooks>false</ignorePostCommitHooks>
</hudson.triggers.SCMTrigger>
</triggers>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Ant>
<targets/>
</hudson.tasks.Ant>
</builders>
<publishers>
<hudson.plugins.warnings.WarningsPublisher>
<healthy/>
<unHealthy/>
<thresholdLimit>low</thresholdLimit>
<pluginName>[WARNINGS] </pluginName>
<defaultEncoding/>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll/>
<unstableTotalHigh/>
<unstableTotalNormal/>
<unstableTotalLow/>
<unstableNewAll/>
<unstableNewHigh/>
<unstableNewNormal/>
<unstableNewLow/>
<failedTotalAll/>
<failedTotalHigh/>
<failedTotalNormal/>
<failedTotalLow/>
<failedNewAll/>
<failedNewHigh/>
<failedNewNormal/>
<failedNewLow/>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>true</doNotResolveRelativePaths>
<parserConfigurations/>
<consoleParsers>
<hudson.plugins.warnings.ConsoleParser>
<parserName>PHP Runtime</parserName>
</hudson.plugins.warnings.ConsoleParser>
</consoleParsers>
</hudson.plugins.warnings.WarningsPublisher>
<hudson.plugins.checkstyle.CheckStylePublisher>
<healthy/>
<unHealthy/>
<thresholdLimit>low</thresholdLimit>
<pluginName>[CHECKSTYLE] </pluginName>
<defaultEncoding/>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll/>
<unstableTotalHigh/>
<unstableTotalNormal/>
<unstableTotalLow/>
<unstableNewAll/>
<unstableNewHigh/>
<unstableNewNormal/>
<unstableNewLow/>
<failedTotalAll/>
<failedTotalHigh/>
<failedTotalNormal/>
<failedTotalLow/>
<failedNewAll/>
<failedNewHigh/>
<failedNewNormal/>
<failedNewLow/>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.checkstyle.CheckStylePublisher>
<hudson.plugins.pmd.PmdPublisher>
<healthy/>
<unHealthy/>
<thresholdLimit>low</thresholdLimit>
<pluginName>[PMD] </pluginName>
<defaultEncoding/>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll/>
<unstableTotalHigh/>
<unstableTotalNormal/>
<unstableTotalLow/>
<unstableNewAll/>
<unstableNewHigh/>
<unstableNewNormal/>
<unstableNewLow/>
<failedTotalAll/>
<failedTotalHigh/>
<failedTotalNormal/>
<failedTotalLow/>
<failedNewAll/>
<failedNewHigh/>
<failedNewNormal/>
<failedNewLow/>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.pmd.PmdPublisher>
<hudson.plugins.dry.DryPublisher>
<healthy/>
<unHealthy/>
<thresholdLimit>low</thresholdLimit>
<pluginName>[DRY] </pluginName>
<defaultEncoding/>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll/>
<unstableTotalHigh/>
<unstableTotalNormal/>
<unstableTotalLow/>
<unstableNewAll/>
<unstableNewHigh/>
<unstableNewNormal/>
<unstableNewLow/>
<failedTotalAll/>
<failedTotalHigh/>
<failedTotalNormal/>
<failedTotalLow/>
<failedNewAll/>
<failedNewHigh/>
<failedNewNormal/>
<failedNewLow/>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/pmd-cpd.xml</pattern>
<highThreshold>50</highThreshold>
<normalThreshold>25</normalThreshold>
</hudson.plugins.dry.DryPublisher>
<hudson.plugins.plot.PlotPublisher>
<plots>
<hudson.plugins.plot.Plot>
<title>A - Lines of code</title>
<yaxis>Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Lines of Code (LOC)</string>
<string>Comment Lines of Code (CLOC)</string>
<string>Non-Comment Lines of Code (NCLOC)</string>
<string>Logical Lines of Code (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Lines of Code (LOC),Comment Lines of Code (CLOC),Non-Comment Lines of Code (NCLOC),Logical Lines of Code (LLOC)
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>123.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>B - Structures Containers</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Namespaces</string>
<string>Files</string>
<string>Directories</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Directories,Files,Namespaces</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1107599928.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>C - Average Length</title>
<yaxis>Average Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Average Function Length (LLOC)</string>
<string>Average Method Length (LLOC)</string>
<string>Average Class Length (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Average Class Length (LLOC),Average Method Length (LLOC),Average Function Length (LLOC)
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>523405415.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>D - Relative Cyclomatic Complexity</title>
<yaxis>Cyclomatic Complexity by Structure</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Cyclomatic Complexity / Lines of Code</string>
<string>Cyclomatic Complexity / Number of Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Cyclomatic Complexity / Lines of Code,Cyclomatic Complexity / Number of Methods
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>186376189.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>E - Types of Classes</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Abstract Classes</string>
<string>Classes</string>
<string>Concrete Classes</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Classes,Abstract Classes,Concrete Classes</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>594356163.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>F - Types of Methods</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Methods</string>
<string>Static Methods</string>
<string>Non-Static Methods</string>
<string>Public Methods</string>
<string>Non-Public Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Methods,Non-Static Methods,Static Methods,Public Methods,Non-Public Methods
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1019987862.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>G - Types of Constants</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Class Constants</string>
<string>Global Constants</string>
<string>Constants</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Constants,Global Constants,Class Constants</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>217648577.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>I - Testing</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Test Classes</string>
<string>Test Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Test Classes,Test Methods</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>174807245.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>AB - Code Structure by Logical Lines of Code</title>
<yaxis>Logical Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Classes Length (LLOC)</string>
<string>LLOC outside functions or classes</string>
<string>Functions Length (LLOC)</string>
<string>Logical Lines of Code (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Logical Lines of Code (LLOC),Classes Length (LLOC),Functions Length (LLOC),LLOC outside functions or classes
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>946905520.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>H - Types of Functions</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Functions</string>
<string>Named Functions</string>
<string>Anonymous Functions</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Functions,Named Functions,Anonymous Functions</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1174623854.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>BB - Structure Objects</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Functions</string>
<string>Traits</string>
<string>Classes</string>
<string>Methods</string>
<string>Interfaces</string>
<string>Constants</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Interfaces,Traits,Classes,Methods,Functions,Constants
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1234245913.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
</plots>
</hudson.plugins.plot.PlotPublisher>
<org.jenkinsci.plugins.cloverphp.CloverPublisher>
<publishHtmlReport>true</publishHtmlReport>
<reportDir>build/coverage</reportDir>
<xmlLocation>build/logs/clover.xml</xmlLocation>
<disableArchiving>false</disableArchiving>
<healthyTarget>
<methodCoverage>70</methodCoverage>
<statementCoverage>80</statementCoverage>
</healthyTarget>
<unhealthyTarget/>
<failingTarget/>
</org.jenkinsci.plugins.cloverphp.CloverPublisher>
<hudson.plugins.crap4j.Crap4JPublisher>
<reportPattern>build/logs/crap4j.xml</reportPattern>
<healthThreshold/>
</hudson.plugins.crap4j.Crap4JPublisher>
<htmlpublisher.HtmlPublisher>
<reportTargets>
<htmlpublisher.HtmlPublisherTarget>
<reportName>API Documentation</reportName>
<reportDir>build/api</reportDir>
<reportFiles>index.html</reportFiles>
<keepAll>true</keepAll>
<wrapperName>htmlpublisher-wrapper.html</wrapperName>
</htmlpublisher.HtmlPublisherTarget>
</reportTargets>
</htmlpublisher.HtmlPublisher>
<xunit>
<types>
<PHPUnitJunitHudsonTestType>
<pattern>build/logs/junit.xml</pattern>
<faildedIfNotNew>true</faildedIfNotNew>
<deleteOutputFiles>true</deleteOutputFiles>
<stopProcessingIfError>true</stopProcessingIfError>
</PHPUnitJunitHudsonTestType>
</types>
<thresholds>
<org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
</thresholds>
<thresholdMode>1</thresholdMode>
</xunit>
<hudson.plugins.jdepend.JDependRecorder>
<configuredJDependFile>build/logs/jdepend.xml</configuredJDependFile>
</hudson.plugins.jdepend.JDependRecorder>
<hudson.plugins.violations.ViolationsPublisher>
<config>
<suppressions class="tree-set">
<no-comparator/>
</suppressions>
<typeConfigs>
<no-comparator/>
<entry>
<string>checkstyle</string>
<hudson.plugins.violations.TypeConfig>
<type>checkstyle</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>codenarc</string>
<hudson.plugins.violations.TypeConfig>
<type>codenarc</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpd</string>
<hudson.plugins.violations.TypeConfig>
<type>cpd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd-cpd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpplint</string>
<hudson.plugins.violations.TypeConfig>
<type>cpplint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>csslint</string>
<hudson.plugins.violations.TypeConfig>
<type>csslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>findbugs</string>
<hudson.plugins.violations.TypeConfig>
<type>findbugs</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>fxcop</string>
<hudson.plugins.violations.TypeConfig>
<type>fxcop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>gendarme</string>
<hudson.plugins.violations.TypeConfig>
<type>gendarme</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jcreport</string>
<hudson.plugins.violations.TypeConfig>
<type>jcreport</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jslint</string>
<hudson.plugins.violations.TypeConfig>
<type>jslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pep8</string>
<hudson.plugins.violations.TypeConfig>
<type>pep8</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pmd</string>
<hudson.plugins.violations.TypeConfig>
<type>pmd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pylint</string>
<hudson.plugins.violations.TypeConfig>
<type>pylint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>simian</string>
<hudson.plugins.violations.TypeConfig>
<type>simian</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>stylecop</string>
<hudson.plugins.violations.TypeConfig>
<type>stylecop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern/>
</hudson.plugins.violations.TypeConfig>
</entry>
</typeConfigs>
<limit>100</limit>
<sourcePathPattern/>
<fauxProjectPath/>
<encoding>default</encoding>
</config>
</hudson.plugins.violations.ViolationsPublisher>
</publishers>
<buildWrappers>
<hudson.plugins.ws__cleanup.PreBuildCleanup>
<deleteDirs>false</deleteDirs>
<cleanupParameter></cleanupParameter>
<externalDelete></externalDelete>
<disableDeferredWipeout>false</disableDeferredWipeout>
</hudson.plugins.ws__cleanup.PreBuildCleanup>
</buildWrappers>
</project>

View file

@ -0,0 +1,691 @@
<?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<description>&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/overview-pyramid.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;&#xd;
&lt;img type=&quot;image/svg+xml&quot; height=&quot;300&quot; src=&quot;ws/build/pdepend/dependencies.svg&quot; width=&quot;500&quot;&gt;&lt;/img&gt;</description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>true</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers class="vector"/>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Ant>
<targets></targets>
</hudson.tasks.Ant>
</builders>
<publishers>
<hudson.plugins.warnings.WarningsPublisher>
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[WARNINGS] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<usePreviousBuildAsReference>false</usePreviousBuildAsReference>
<useStableBuildAsReference>false</useStableBuildAsReference>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<dontComputeNew>false</dontComputeNew>
<doNotResolveRelativePaths>true</doNotResolveRelativePaths>
<parserConfigurations/>
<consoleParsers>
<hudson.plugins.warnings.ConsoleParser>
<parserName>PHP Runtime</parserName>
</hudson.plugins.warnings.ConsoleParser>
</consoleParsers>
</hudson.plugins.warnings.WarningsPublisher>
<hudson.plugins.checkstyle.CheckStylePublisher>
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[CHECKSTYLE] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.checkstyle.CheckStylePublisher>
<hudson.plugins.pmd.PmdPublisher>
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[PMD] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.pmd.PmdPublisher>
<hudson.plugins.dry.DryPublisher>
<healthy></healthy>
<unHealthy></unHealthy>
<thresholdLimit>low</thresholdLimit>
<pluginName>[DRY] </pluginName>
<defaultEncoding></defaultEncoding>
<canRunOnFailed>true</canRunOnFailed>
<useDeltaValues>false</useDeltaValues>
<thresholds>
<unstableTotalAll></unstableTotalAll>
<unstableTotalHigh></unstableTotalHigh>
<unstableTotalNormal></unstableTotalNormal>
<unstableTotalLow></unstableTotalLow>
<unstableNewAll></unstableNewAll>
<unstableNewHigh></unstableNewHigh>
<unstableNewNormal></unstableNewNormal>
<unstableNewLow></unstableNewLow>
<failedTotalAll></failedTotalAll>
<failedTotalHigh></failedTotalHigh>
<failedTotalNormal></failedTotalNormal>
<failedTotalLow></failedTotalLow>
<failedNewAll></failedNewAll>
<failedNewHigh></failedNewHigh>
<failedNewNormal></failedNewNormal>
<failedNewLow></failedNewLow>
</thresholds>
<shouldDetectModules>false</shouldDetectModules>
<pattern>build/logs/pmd-cpd.xml</pattern>
<highThreshold>50</highThreshold>
<normalThreshold>25</normalThreshold>
</hudson.plugins.dry.DryPublisher>
<hudson.plugins.plot.PlotPublisher>
<plots>
<hudson.plugins.plot.Plot>
<title>A - Lines of code</title>
<yaxis>Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Lines of Code (LOC)</string>
<string>Comment Lines of Code (CLOC)</string>
<string>Non-Comment Lines of Code (NCLOC)</string>
<string>Logical Lines of Code (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Lines of Code (LOC),Comment Lines of Code (CLOC),Non-Comment Lines of Code (NCLOC),Logical Lines of Code (LLOC)
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>123.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>B - Structures Containers</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Namespaces</string>
<string>Files</string>
<string>Directories</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Directories,Files,Namespaces</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1107599928.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>C - Average Length</title>
<yaxis>Average Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Average Function Length (LLOC)</string>
<string>Average Method Length (LLOC)</string>
<string>Average Class Length (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Average Class Length (LLOC),Average Method Length (LLOC),Average Function Length (LLOC)
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>523405415.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>D - Relative Cyclomatic Complexity</title>
<yaxis>Cyclomatic Complexity by Structure</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Cyclomatic Complexity / Lines of Code</string>
<string>Cyclomatic Complexity / Number of Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Cyclomatic Complexity / Lines of Code,Cyclomatic Complexity / Number of Methods
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>186376189.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>E - Types of Classes</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Abstract Classes</string>
<string>Classes</string>
<string>Concrete Classes</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Classes,Abstract Classes,Concrete Classes</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>594356163.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>F - Types of Methods</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Methods</string>
<string>Static Methods</string>
<string>Non-Static Methods</string>
<string>Public Methods</string>
<string>Non-Public Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Methods,Non-Static Methods,Static Methods,Public Methods,Non-Public Methods
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1019987862.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>G - Types of Constants</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Class Constants</string>
<string>Global Constants</string>
<string>Constants</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Constants,Global Constants,Class Constants</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>217648577.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>I - Testing</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Test Classes</string>
<string>Test Methods</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Test Classes,Test Methods</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>174807245.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>AB - Code Structure by Logical Lines of Code</title>
<yaxis>Logical Lines of Code</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Classes Length (LLOC)</string>
<string>LLOC outside functions or classes</string>
<string>Functions Length (LLOC)</string>
<string>Logical Lines of Code (LLOC)</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Logical Lines of Code (LLOC),Classes Length (LLOC),Functions Length (LLOC),LLOC outside functions or classes
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>946905520.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>H - Types of Functions</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Functions</string>
<string>Named Functions</string>
<string>Anonymous Functions</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>Functions,Named Functions,Anonymous Functions</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1174623854.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
<hudson.plugins.plot.Plot>
<title>BB - Structure Objects</title>
<yaxis>Count</yaxis>
<series>
<hudson.plugins.plot.CSVSeries>
<file>build/logs/phploc.csv</file>
<label/>
<fileType>csv</fileType>
<strExclusionSet>
<string>Functions</string>
<string>Traits</string>
<string>Classes</string>
<string>Methods</string>
<string>Interfaces</string>
<string>Constants</string>
</strExclusionSet>
<inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
<exclusionValues>
Interfaces,Traits,Classes,Methods,Functions,Constants
</exclusionValues>
<url/>
<displayTableFlag>false</displayTableFlag>
</hudson.plugins.plot.CSVSeries>
</series>
<group>phploc</group>
<numBuilds>100</numBuilds>
<csvFileName>1234245913.csv</csvFileName>
<csvLastModification>0</csvLastModification>
<style>line</style>
<useDescr>false</useDescr>
</hudson.plugins.plot.Plot>
</plots>
</hudson.plugins.plot.PlotPublisher>
<org.jenkinsci.plugins.cloverphp.CloverPublisher>
<publishHtmlReport>true</publishHtmlReport>
<reportDir>build/coverage</reportDir>
<xmlLocation>build/logs/clover.xml</xmlLocation>
<disableArchiving>false</disableArchiving>
<healthyTarget>
<methodCoverage>70</methodCoverage>
<statementCoverage>80</statementCoverage>
</healthyTarget>
<unhealthyTarget/>
<failingTarget/>
</org.jenkinsci.plugins.cloverphp.CloverPublisher>
<hudson.plugins.crap4j.Crap4JPublisher>
<reportPattern>build/logs/crap4j.xml</reportPattern>
<healthThreshold></healthThreshold>
</hudson.plugins.crap4j.Crap4JPublisher>
<htmlpublisher.HtmlPublisher>
<reportTargets>
<htmlpublisher.HtmlPublisherTarget>
<reportName>API Documentation</reportName>
<reportDir>build/api</reportDir>
<reportFiles>index.html</reportFiles>
<keepAll>true</keepAll>
<wrapperName>htmlpublisher-wrapper.html</wrapperName>
</htmlpublisher.HtmlPublisherTarget>
</reportTargets>
</htmlpublisher.HtmlPublisher>
<xunit>
<types>
<PHPUnitJunitHudsonTestType>
<pattern>build/logs/junit.xml</pattern>
<faildedIfNotNew>true</faildedIfNotNew>
<deleteOutputFiles>true</deleteOutputFiles>
<stopProcessingIfError>true</stopProcessingIfError>
</PHPUnitJunitHudsonTestType>
</types>
<thresholds>
<org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.FailedThreshold>
<org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
<unstableThreshold>0</unstableThreshold>
<unstableNewThreshold>0</unstableNewThreshold>
<failureThreshold>0</failureThreshold>
<failureNewThreshold>0</failureNewThreshold>
</org.jenkinsci.plugins.xunit.threshold.SkippedThreshold>
</thresholds>
<thresholdMode>1</thresholdMode>
</xunit>
<hudson.plugins.jdepend.JDependRecorder>
<configuredJDependFile>build/logs/jdepend.xml</configuredJDependFile>
</hudson.plugins.jdepend.JDependRecorder>
<hudson.plugins.violations.ViolationsPublisher>
<config>
<suppressions class="tree-set">
<no-comparator/>
</suppressions>
<typeConfigs>
<no-comparator/>
<entry>
<string>checkstyle</string>
<hudson.plugins.violations.TypeConfig>
<type>checkstyle</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/checkstyle.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>codenarc</string>
<hudson.plugins.violations.TypeConfig>
<type>codenarc</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpd</string>
<hudson.plugins.violations.TypeConfig>
<type>cpd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd-cpd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>cpplint</string>
<hudson.plugins.violations.TypeConfig>
<type>cpplint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>csslint</string>
<hudson.plugins.violations.TypeConfig>
<type>csslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>findbugs</string>
<hudson.plugins.violations.TypeConfig>
<type>findbugs</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>fxcop</string>
<hudson.plugins.violations.TypeConfig>
<type>fxcop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>gendarme</string>
<hudson.plugins.violations.TypeConfig>
<type>gendarme</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jcreport</string>
<hudson.plugins.violations.TypeConfig>
<type>jcreport</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>jslint</string>
<hudson.plugins.violations.TypeConfig>
<type>jslint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pep8</string>
<hudson.plugins.violations.TypeConfig>
<type>pep8</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pmd</string>
<hudson.plugins.violations.TypeConfig>
<type>pmd</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern>build/logs/pmd.xml</pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>pylint</string>
<hudson.plugins.violations.TypeConfig>
<type>pylint</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>simian</string>
<hudson.plugins.violations.TypeConfig>
<type>simian</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
<entry>
<string>stylecop</string>
<hudson.plugins.violations.TypeConfig>
<type>stylecop</type>
<min>10</min>
<max>999</max>
<unstable>999</unstable>
<usePattern>false</usePattern>
<pattern></pattern>
</hudson.plugins.violations.TypeConfig>
</entry>
</typeConfigs>
<limit>100</limit>
<sourcePathPattern></sourcePathPattern>
<fauxProjectPath></fauxProjectPath>
<encoding>default</encoding>
</config>
</hudson.plugins.violations.ViolationsPublisher>
</publishers>
<buildWrappers/>
</project>

5
site.yml Normal file
View file

@ -0,0 +1,5 @@
---
- name: "Role for Jenkins/CI instances management"
hosts: all
roles:
- jenkins-php-v1