-
Notifications
You must be signed in to change notification settings - Fork 0
157 lines (124 loc) · 4.68 KB
/
master_push_validation.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
name: Master branch validation
on:
push:
branches: [ master ]
env:
DOCKER_USER: ${{secrets.DOCKER_USER}}
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
IMAGE_NAME: ${{secrets.IMAGE_NAME}}
jobs:
Build_and_push_docker_image:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get changed files using defaults
id: changed-files
uses: tj-actions/[email protected]
- name: Build the docker image
if: contains(steps.changed-files.outputs.modified_files, 'Dockerfile')
run: docker build . --file Dockerfile --tag $DOCKER_USER/$IMAGE_NAME:latest
- name: Login to DockerHub
if: contains(steps.changed-files.outputs.modified_files, 'Dockerfile')
run: docker login -u $DOCKER_USER -p $DOCKER_PASSWORD docker.io
- name: Push the docker image
if: contains(steps.changed-files.outputs.modified_files, 'Dockerfile')
run: docker push $DOCKER_USER/$IMAGE_NAME --all-tags
Prepare_environment:
needs: Build_and_push_docker_image
runs-on: ubuntu-latest
container:
image: mkoding/tfg-project:latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache vendor
uses: actions/cache@v3
id: composer-cache
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}-${{ hashFiles('composer.json') }}
- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --no-ansi --no-interaction --no-progress --prefer-dist
Run_linters:
needs: Prepare_environment
runs-on: ubuntu-latest
container:
image: mkoding/tfg-project:latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare environment file
run: cp .env.ci .env
- name: Cache composer
uses: actions/cache@v3
id: composer-cache
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}-${{ hashFiles('composer.json') }}
- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Composer dump autoload
run: composer dump-autoload
- name: Generate artisan key
run: php artisan key:generate --ansi
- name: Run linters
run: ./scripts/linters.sh
- name: Generate Doctrine Proxies
run: php artisan doctrine:generate:proxies
Run_unit_tests:
needs: Prepare_environment
runs-on: ubuntu-latest
container:
image: mkoding/tfg-project:latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare environment file
run: cp .env.ci .env
- name: Cache composer
uses: actions/cache@v3
id: composer-cache
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}-${{ hashFiles('composer.json') }}
- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Composer dump autoload
run: composer dump-autoload
- name: Generate artisan key
run: php artisan key:generate --ansi
- name: Run unit tests
run: vendor/bin/paratest -c phpunit_unit.xml --runner=WrapperRunner
Run_integration_tests:
needs: Prepare_environment
runs-on: ubuntu-latest
container:
image: mkoding/tfg-project:latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare environment file
run: cp .env.ci .env
- name: Cache composer
uses: actions/cache@v3
id: composer-cache
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}-${{ hashFiles('composer.json') }}
- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Composer dump autoload
run: composer dump-autoload
- name: Generate artisan key
run: php artisan key:generate --ansi
- name: Clear integration tests caches
run: php artisan optimize:clear --env=ci
- name: Run integration tests
run: vendor/bin/paratest -c phpunit_integration.xml --runner=WrapperRunner