-
Notifications
You must be signed in to change notification settings - Fork 1
111 lines (89 loc) · 3.27 KB
/
Copy pathcontinuous_integration.yml
File metadata and controls
111 lines (89 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# This is a basic workflow to help you get started with Actions
name: Continuous Integration
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for certain branches
push:
branches:
- dev
- ft/*
- hotfix/*
- tmp/*
- v1.*
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
name: Build project
# The type of runner that the job will run on
runs-on: ubuntu-latest
env:
DB_DATABASE: db_api_ddd_template_test
DB_USER: root
DB_PASSWORD: root
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Runs single commands using the runners shell
- run: composer validate --strict
- run: composer install --prefer-dist --no-progress --no-suggest
- name: Pull images
run: docker-compose -f docker/docker-compose.yml pull --ignore-pull-failures || true
- name: Start services
run: docker-compose -f docker/docker-compose.yml up -d --build
- name: Wait for services
run: |
while status="$(docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" "$(docker-compose -f docker/docker-compose.yml ps -q php)")"; do
case $status in
starting) sleep 1;;
healthy) exit 0;;
unhealthy)
docker-compose ps
docker-compose logs
exit 1
;;
esac
done
exit 1
- name: Check HTTP reachability
run: curl -v -o /dev/null http://localhost:8080
- name: Start and set up MySQL
run: |
sudo /etc/init.d/mysql start
mysql -e 'CREATE DATABASE ${{ env.DB_DATABASE }};' -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }}
mysql -e 'SHOW DATABASES;' -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }}
- name: PHP Unit tests
if: ${{ always() }}
run: bin/phpunit
- name: PHP Code Sniffer
if: ${{ always() }}
run: bin/phpcs src/ tests/
- name: PHP Stan
if: ${{ always() }}
run: bin/phpstan analyse -c phpstan.neon
- name: PHP Mess Detector
if: ${{ always() }}
run: bin/phpmd src/ text phpmd.xml
- name: PHP Magic Number Detector
if: ${{ always() }}
run: bin/phpmnd src tests --progress --extensions=all
- name: PHP Copy Paste Detector (PHPCPD)
if: ${{ always() }}
run: bin/phpcpd ./ --exclude=var --exclude=vendor --fuzzy --min-lines=5
- name: Churn-php
if: ${{ always() }}
run: bin/churn run --configuration=churn.yml
- name: PhpDeprecationDetector
if: ${{ always() }}
run: bin/phpdd src/ tests/
- name: Twigcs (Twig checkstyle)
if: ${{ always() }}
run: bin/twigcs templates/
- name: Deptrac
if: ${{ always() }}
run: bin/deptrac analyse