Skip to content

Commit 5189b07

Browse files
mistralozNgob
authored andcommitted
Add Kube in CI/CD
1 parent e4d21e5 commit 5189b07

29 files changed

+1123
-456
lines changed

.env.dist

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,36 @@
11
# The password, username et databasename shall be updated
22

3-
APP_NAME=boilerplatev2
4-
DATABASE_PASSWORD=thisshallbeupdated
5-
DATABASE_USERNAME=myapp
6-
DATABASE_NAME=mydb
7-
DATABASE_URL=mysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@mysql:3306/${DATABASE_NAME}?serverVersion=10.7.3-MariaDB
3+
APP_NAME="boilerplatev2"
4+
DATABASE_PASSWORD="super-secret"
5+
DATABASE_USERNAME="api-user"
6+
DATABASE_NAME="api"
87

8+
BASE_DOMAIN="${APP_NAME}.localhost"
9+
API_SUBDOMAIN="api"
10+
API_ROUTE_FROM_BASE_DOMAIN="/api"
11+
PHPMYADMIN_DOMAIN="phpmyadmin.${BASE_DOMAIN}"
12+
PROTOCOL="http"
913

10-
BASE_DOMAIN=${APP_NAME}.localhost
11-
API_SUBDOMAIN=api
12-
API_ROUTE_FROM_BASE_DOMAIN=/api
13-
PHPMYADMIN_DOMAIN=phpmyadmin.${BASE_DOMAIN}
14-
PROTOCOL=http
14+
BACK_APP_NAME="back"
15+
FRONT_APP_NAME="front"
1516

16-
BACK_APP_NAME=back
17-
FRONT_APP_NAME=front
18-
19-
API_DOMAIN=${API_SUBDOMAIN}.${BASE_DOMAIN}
17+
API_DOMAIN="${API_SUBDOMAIN}.${BASE_DOMAIN}"
2018

2119
DEPLOYMENT_TAG=latest
2220

23-
IMAGE_REGISTRY=git.thecodingmachine.com:444/tcm-projects/${APP_NAME}
24-
BACK_IMAGE_NAME=${IMAGE_REGISTRY}/${BACK_APP_NAME}
25-
FRONT_IMAGE_NAME=${IMAGE_REGISTRY}/${FRONT_APP_NAME}
26-
27-
BACK_ROUTER_RULE=Host(`${API_DOMAIN}`) || Host(`${BASE_DOMAIN}`) && PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)
28-
FRONT_ROUTER_RULE=Host(`${BASE_DOMAIN}`) && ! PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)
29-
30-
PHPMYADMIN_ROUTER_RULE=Host(`${PHPMYADMIN_DOMAIN}`)
21+
IMAGE_REGISTRY="git.thecodingmachine.com:444/tcm-projects/${APP_NAME}"
22+
BACK_IMAGE_NAME="${IMAGE_REGISTRY}/${BACK_APP_NAME}"
23+
FRONT_IMAGE_NAME="${IMAGE_REGISTRY}/${FRONT_APP_NAME}"
3124

25+
BACK_ROUTER_RULE="Host(`${API_DOMAIN}`) || Host(`${BASE_DOMAIN}`) && PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)"
26+
FRONT_ROUTER_RULE="Host(`${BASE_DOMAIN}`) && ! PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)"
27+
PHPMYADMIN_ROUTER_RULE="Host(`${PHPMYADMIN_DOMAIN}`)"
3228

3329
# SSO CONFIG
34-
35-
APP_SSO_SERVICEPROVIDER_X509CERT=MIICkDCCAfmgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wHhcNMTcwOTA4MTUyNzM0WhcNMTgwOTA4MTUyNzM0WjBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAGjUDBOMB0GA1UdDgQWBBSk8/zuzxKBEwpusxRAva7oY7MkrDAfBgNVHSMEGDAWgBSk8/zuzxKBEwpusxRAva7oY7MkrDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAGlGJPIGYAKKkhW/EAvJbprOAwLvSEansPR8iQlGOq49k/R+mvvTKyQ4DsUglrjbTqA90MZ3S7IG25rPtX6uG2Gmi8QdpJbvfbvkMqk4aNbHveWm35lhsFpiJhu5ngUvb7RjZAVg9YRJGMufZwA5TKrr57fIKhA45QXxbITEP2gX
36-
APP_SSO_SERVICEPROVIDER_PRIVATEKEY=MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAECgYEAgLUgBTLzCABa9ZXTl12PDjc1xsdFu8OVgDg+DamZ27sc9Qv3Iw1FRuiMq/vdU1zBlITD4CPbTeDDBpWuvLainACpk4JJK22JozwLpaqnyrrhPNxphBe3XUREe6Tw53q9cM1j9RlD+PwbM2KbudfBmsi+sPvNK0pEAHFJZhogjfECQQDtwqhYQhLUCmgzMMFNU1PYvPJ6+5cdrgxK5JJhQxKJnclUdnjw3zUwdN3XpJk9ggq/GTCAjd/vE8ILV2DXgD6nAkEA0W5pvJx5EG9hekJ3/LaqcIKNH38uqhm4LPrXaLbUOToVyjBsJhlfRVVQojhOT9mAkTs4RhSP0IZy+Xkvh3s6nQJBALPzOnriN2HpJohoBEXEJZfLGjNerDc4ffFJIkke/K7Pj4uvx0V3ishMC4Ok/p6BCCUuqXkC6FQIvjrbPV6dn80CQQDRAZvMe2vmlwF0/fi436Ng/SjRkh+D6n7/hKaM/kj1g55TVdfYfeGyU95QxliBH9NLHQqgBc0wkb0Uc3iXgMeRAkAm30yjx2YPHjXZydKsJFgNtfI0PvoFS8tv1Ljb3FfflzrKEFFBtwfC/kxJXY+oKIKMSW0YxT0EuOkq3K5uIeGd
30+
APP_SSO_SERVICEPROVIDER_X509CERT="MIICkDCCAfmgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wHhcNMTcwOTA4MTUyNzM0WhcNMTgwOTA4MTUyNzM0WjBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAGjUDBOMB0GA1UdDgQWBBSk8/zuzxKBEwpusxRAva7oY7MkrDAfBgNVHSMEGDAWgBSk8/zuzxKBEwpusxRAva7oY7MkrDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAGlGJPIGYAKKkhW/EAvJbprOAwLvSEansPR8iQlGOq49k/R+mvvTKyQ4DsUglrjbTqA90MZ3S7IG25rPtX6uG2Gmi8QdpJbvfbvkMqk4aNbHveWm35lhsFpiJhu5ngUvb7RjZAVg9YRJGMufZwA5TKrr57fIKhA45QXxbITEP2gX"
31+
APP_SSO_SERVICEPROVIDER_PRIVATEKEY="MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAECgYEAgLUgBTLzCABa9ZXTl12PDjc1xsdFu8OVgDg+DamZ27sc9Qv3Iw1FRuiMq/vdU1zBlITD4CPbTeDDBpWuvLainACpk4JJK22JozwLpaqnyrrhPNxphBe3XUREe6Tw53q9cM1j9RlD+PwbM2KbudfBmsi+sPvNK0pEAHFJZhogjfECQQDtwqhYQhLUCmgzMMFNU1PYvPJ6+5cdrgxK5JJhQxKJnclUdnjw3zUwdN3XpJk9ggq/GTCAjd/vE8ILV2DXgD6nAkEA0W5pvJx5EG9hekJ3/LaqcIKNH38uqhm4LPrXaLbUOToVyjBsJhlfRVVQojhOT9mAkTs4RhSP0IZy+Xkvh3s6nQJBALPzOnriN2HpJohoBEXEJZfLGjNerDc4ffFJIkke/K7Pj4uvx0V3ishMC4Ok/p6BCCUuqXkC6FQIvjrbPV6dn80CQQDRAZvMe2vmlwF0/fi436Ng/SjRkh+D6n7/hKaM/kj1g55TVdfYfeGyU95QxliBH9NLHQqgBc0wkb0Uc3iXgMeRAkAm30yjx2YPHjXZydKsJFgNtfI0PvoFS8tv1Ljb3FfflzrKEFFBtwfC/kxJXY+oKIKMSW0YxT0EuOkq3K5uIeGd"
3732
# THE SSO APP
38-
APP_SSO_IDENTITYPROVIDER_X509CERT=MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMxMTQzNDQ3WhcNNDgwNjI1MTQzNDQ3WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzUCFozgNb1h1M0jzNRSCjhOBnR+uVbVpaWfXYIR+AhWDdEe5ryY+CgavOg8bfLybyzFdehlYdDRgkedEB/GjG8aJw06l0qF4jDOAw0kEygWCu2mcH7XOxRt+YAH3TVHa/Hu1W3WjzkobqqqLQ8gkKWWM27fOgAZ6GieaJBN6VBSMMcPey3HWLBmc+TYJmv1dbaO2jHhKh8pfKw0W12VM8P1PIO8gv4Phu/uuJYieBWKixBEyy0lHjyixYFCR12xdh4CA47q958ZRGnnDUGFVE1QhgRacJCOZ9bd5t9mr8KLaVBYTCJo5ERE8jymab5dPqe5qKfJsCZiqWglbjUo9twIDAQABo1AwTjAdBgNVHQ4EFgQUxpuwcs/CYQOyui+r1G+3KxBNhxkwHwYDVR0jBBgwFoAUxpuwcs/CYQOyui+r1G+3KxBNhxkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAAiWUKs/2x/viNCKi3Y6blEuCtAGhzOOZ9EjrvJ8+COH3Rag3tVBWrcBZ3/uhhPq5gy9lqw4OkvEws99/5jFsX1FJ6MKBgqfuy7yh5s1YfM0ANHYczMmYpZeAcQf2CGAaVfwTTfSlzNLsF2lW/ly7yapFzlYSJLGoVE+OHEu8g5SlNACUEfkXw+5Eghh+KzlIN7R6Q7r2ixWNFBC/jWf7NKUfJyX8qIG5md1YUeT6GBW9Bm2/1/RiO24JTaYlfLdKK9TYb8sG5B+OLab2DImG99CJ25RkAcSobWNF5zD0O6lgOo3cEdB/ksCq3hmtlC/DlLZ/D8CJ+7VuZnS1rR2naQ==
39-
APP_SSO_IDENTITYPROVIDER_ENTITYID=http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/metadata.php
40-
APP_SSO_IDENTITYPROVIDER_LOGINURL=http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php
41-
APP_SSO_IDENTITYPROVIDER_LOGOUTURL=http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php
33+
APP_SSO_IDENTITYPROVIDER_X509CERT="MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMxMTQzNDQ3WhcNNDgwNjI1MTQzNDQ3WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzUCFozgNb1h1M0jzNRSCjhOBnR+uVbVpaWfXYIR+AhWDdEe5ryY+CgavOg8bfLybyzFdehlYdDRgkedEB/GjG8aJw06l0qF4jDOAw0kEygWCu2mcH7XOxRt+YAH3TVHa/Hu1W3WjzkobqqqLQ8gkKWWM27fOgAZ6GieaJBN6VBSMMcPey3HWLBmc+TYJmv1dbaO2jHhKh8pfKw0W12VM8P1PIO8gv4Phu/uuJYieBWKixBEyy0lHjyixYFCR12xdh4CA47q958ZRGnnDUGFVE1QhgRacJCOZ9bd5t9mr8KLaVBYTCJo5ERE8jymab5dPqe5qKfJsCZiqWglbjUo9twIDAQABo1AwTjAdBgNVHQ4EFgQUxpuwcs/CYQOyui+r1G+3KxBNhxkwHwYDVR0jBBgwFoAUxpuwcs/CYQOyui+r1G+3KxBNhxkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAAiWUKs/2x/viNCKi3Y6blEuCtAGhzOOZ9EjrvJ8+COH3Rag3tVBWrcBZ3/uhhPq5gy9lqw4OkvEws99/5jFsX1FJ6MKBgqfuy7yh5s1YfM0ANHYczMmYpZeAcQf2CGAaVfwTTfSlzNLsF2lW/ly7yapFzlYSJLGoVE+OHEu8g5SlNACUEfkXw+5Eghh+KzlIN7R6Q7r2ixWNFBC/jWf7NKUfJyX8qIG5md1YUeT6GBW9Bm2/1/RiO24JTaYlfLdKK9TYb8sG5B+OLab2DImG99CJ25RkAcSobWNF5zD0O6lgOo3cEdB/ksCq3hmtlC/DlLZ/D8CJ+7VuZnS1rR2naQ=="
34+
APP_SSO_IDENTITYPROVIDER_ENTITYID="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/metadata.php"
35+
APP_SSO_IDENTITYPROVIDER_LOGINURL="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php"
36+
APP_SSO_IDENTITYPROVIDER_LOGOUTURL="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php"

.gitlab-ci.yml

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# It is shared between includes anyway
21
stages:
32
- build
43
- test
54
- deploy
6-
- cleanup
5+
6+
# It is shared between includes anyway
77
default:
88
retry:
99
max: 2
@@ -18,18 +18,24 @@ default:
1818
- unmet_prerequisites
1919
- scheduler_failure
2020
- data_integrity_failure
21+
2122
variables:
23+
GIT_STRATEGY: fetch
24+
GIT_DEPTH: 1
25+
CURRENT_WORKFLOW: "undefined"
2226
TAG_NAME: ${CI_COMMIT_REF_SLUG}
23-
IMAGE_NAME: ${CI_REGISTRY_IMAGE}/back
24-
IMAGE_WITH_TAG: ${IMAGE_NAME}:${TAG_NAME}
25-
FRONT_IMAGE_NAME: ${CI_REGISTRY_IMAGE}/front
26-
FRONT_IMAGE_WITH_TAG: ${FRONT_IMAGE_NAME}:${TAG_NAME}
27-
DEPLOYMENT_PATH: /tcm_deployment/${CI_PROJECT_NAME}
28-
DEPLOYMENT_IP: PUT_YOUR_DEPLOYMENT_IP_HERE
27+
BACK_IMAGE: ${CI_REGISTRY_IMAGE}/back
28+
BACK_IMAGE_DEV: ${BACK_IMAGE}:${TAG_NAME}-dev
29+
BACK_IMAGE_STABLE: ${BACK_IMAGE}:${TAG_NAME}
30+
FRONT_IMAGE: ${CI_REGISTRY_IMAGE}/front
31+
FRONT_IMAGE_DEV: ${FRONT_IMAGE}:${TAG_NAME}-dev
32+
FRONT_IMAGE_STABLE: ${FRONT_IMAGE}:${TAG_NAME}
33+
# DEPLOYMENT_PATH: /tcm_deployment/${CI_PROJECT_NAME}
34+
# DEPLOYMENT_IP: PUT_YOUR_DEPLOYMENT_IP_HERE
2935

3036
include:
31-
- local: gitlab-ci/gitlab-ci-merge-request.yml
32-
- local: gitlab-ci/gitlab-ci-tags-prod.yml
33-
- local: gitlab-ci/gitlab-ci-branch-main.yml
34-
# rules:
35-
# - if: $CI_COMMIT_TAG =~ /^[0-9]+.[0-9]+.[0-9]+$/
37+
- local: 'gitlab-ci/rules.gitlab-ci.yml'
38+
- local: 'gitlab-ci/build.gitlab-ci.yml'
39+
- local: 'gitlab-ci/test-back.gitlab-ci.yml'
40+
- local: 'gitlab-ci/test-front.gitlab-ci.yml'
41+
- local: 'gitlab-ci/deploy-k8s.gitlab-ci.yml'

Makefile

Lines changed: 88 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,158 +1,156 @@
1-
# .RECIPEPREFIX = " "
2-
# Change tabs to space in makefile
3-
4-
# Load .env variable (the prod is added also if there is any)
5-
ifneq (,$(wildcard ./.env.dist))
6-
include .env.dist
7-
export
8-
endif
9-
ifneq (,$(wildcard ./.env))
10-
include .env
11-
export
12-
endif
13-
ifneq (,$(wildcard ./.env.prod))
14-
include .env.prod
15-
export
16-
endif
17-
18-
# connect to the back container
1+
.DEFAULT_GOAL := help
2+
SHELL := $(shell which bash)
3+
4+
# Load .env variable
5+
-include .env.dist
6+
-include .env
7+
8+
.env: ## Create .env file if it's does not exist
9+
cp .env.dist .env
10+
11+
.PHONY: sync-env
12+
sync-env: .env ## Add variables who did not exist in .env (from .env.dist)
13+
@while IFS='=' read -r k v; do \
14+
if [[ ! -z "$$k" && ! -z "$$v" && $${k:0:1} != '#' ]]; then \
15+
grep -q "^$$k=" .env; \
16+
if [[ $$? -ne 0 ]]; then \
17+
echo "Warning : $$k is declared in .env.dist but was not in .env (auto fixed)" >&2; \
18+
echo "# Added by autofix :" >> .env; echo "$$k=$$v" >> .env; \
19+
fi; \
20+
fi; \
21+
done < .env.dist
22+
1923
.PHONY: bbash
20-
bbash: ;\
21-
docker compose exec back bash;
24+
bbash: sync-env ## connect to the back container
25+
docker compose exec back bash;
2226

23-
# connect to the front container
2427
.PHONY: fbash
25-
fbash: ;\
26-
docker compose exec front bash;
28+
fbash: sync-env ## connect to the front container
29+
docker compose exec front bash;
2730

28-
# Launch migration
2931
.PHONY: migrate
30-
migrate: ;\
31-
docker compose exec back composer -- run console doctrine:migrations:migrate -n
32+
migrate: sync-env ## Launch migration
33+
docker compose exec back composer -- run console doctrine:migrations:migrate -n
3234

33-
# Force doctrine update from entities
3435
.PHONY: db-dev-mig
35-
db-dev-mig: ;\
36-
docker compose exec back composer -- run console doctrine\:schema\:update -f
36+
db-dev-mig: sync-env ## Force doctrine update from entities
37+
docker compose exec back composer -- run console doctrine\:schema\:update -f
3738

38-
# Launch generate migration (recommended) from database diff
39-
# doctrine:schema:validate --skip-sync is used to check the database mapping before generating the migration,
40-
# skip-sync is used to skip database and mapping sync validation
41-
db-mig-diff: ;\
42-
docker compose exec back composer -- run console doctrine:schema:validate --skip-sync && \
43-
docker compose exec back composer -- run console make:migration
39+
db-mig-diff: sync-env ## Launch generate migration (recommended) from database diff
40+
# doctrine:schema:validate --skip-sync is used to check the database mapping before generating the migration,
41+
# skip-sync is used to skip database and mapping sync validation
42+
docker compose exec back composer -- run console doctrine:schema:validate --skip-sync
43+
docker compose exec back composer -- run console make:migration
4444

45-
# Launch generate migration (not recommended)
4645
.PHONY: migrate-diff
47-
db-migrate-diff: ;\
48-
docker compose exec back composer -- run console doctrine:migrations:diff -n
46+
db-migrate-diff: sync-env ## Launch generate migration (not recommended)
47+
docker compose exec back composer -- run console doctrine:migrations:diff -n
4948

50-
# See logs of back
5149
.PHONY: blogs
52-
blogs: ;\
53-
docker-compose logs back -f
50+
blogs: ## Display logs of back
51+
docker compose logs back -f
5452

5553
.PHONY: flogs
56-
flogs: ;\
57-
docker-compose logs front -f
58-
# Init dev env
59-
init-dev: ;\
60-
cp -n docker-compose.override.yml.template docker-compose.override.yml; \
61-
cp -n .env.dist .env; \
62-
echo "Add ${BASE_DOMAIN} and ${API_DOMAIN} and samltest.${BASE_DOMAIN} to your /etc/hosts"; \
63-
if grep -q ${BASE_DOMAIN} /etc/hosts ; then echo "not adding to /etc/hosts" ; else echo "\n127.0.0.1 ${BASE_DOMAIN} ${API_DOMAIN} samltest.${BASE_DOMAIN}" | sudo tee -a /etc/hosts ; fi
54+
flogs: sync-env ## Display logs of front
55+
docker compose logs front -f
56+
.PHONY: init-dev
57+
init-dev: sync-env ## Init dev env
58+
cp -n docker-compose.override.yml.template docker-compose.override.yml
59+
if uname | grep -ivq "linux"; then \
60+
echo "Add $(BASE_DOMAIN) and $(API_DOMAIN) and samltest.$(BASE_DOMAIN) to your /etc/hosts"; \
61+
if grep -q $(BASE_DOMAIN) /etc/hosts ; then echo "not adding to /etc/hosts" ; else echo "\n127.0.0.1 $(BASE_DOMAIN) $(API_DOMAIN) samltest.$(BASE_DOMAIN)" | sudo tee -a /etc/hosts ; fi \
62+
fi
6463
#
6564
# Theses are usefull when you use docker
6665
#
66+
.PHONY: down
67+
down: sync-env ## down docker compose
68+
docker compose down
6769

68-
# down docker compose
69-
down: ;\
70-
docker compose down
71-
# up docker compose
72-
up: ;\
73-
DOCKER_BUILDKIT=1 docker compose up -d ; docker compose logs initback back front -f
70+
.PHONY: up
71+
up: sync-env ## up docker compose
72+
DOCKER_BUILDKIT=1 docker compose up -d
73+
docker compose logs initback back front -f
7474

75-
# stronger down (remove volume / image / orphans)
7675
.PHONY: fdown
77-
fdown: ;\
78-
docker compose down -v --remove-orphans
76+
fdown: sync-env ## stronger down (remove volume / image / orphans)
77+
docker compose down -v --remove-orphans
7978

80-
# stronger up (recreate all container and rebuild the image)
81-
fup: ;\
82-
DOCKER_BUILDKIT=1 docker compose up -d --force-recreate --build
79+
fup: sync-env ## stronger up (recreate all container and rebuild the image)
80+
DOCKER_BUILDKIT=1 docker compose up -d --force-recreate --build
8381

84-
# Soft Restart
8582
.PHONY: restart
86-
restart: down up
83+
restart: down up ## Soft Restart
8784

88-
# Hard restart
8985
.PHONY: frestart
90-
frestart: fdown fup
86+
frestart: fdown fup ## Hard restart
9187

9288
.PHONY: stop-front
93-
stop-front: ;\
94-
DOCKER_BUILDKIT=1 docker compose stop front
89+
stop-front: sync-env ## stop front container
90+
DOCKER_BUILDKIT=1 docker compose stop front
9591

9692
.PHONY: rm-front
97-
rm-front: ;\
98-
DOCKER_BUILDKIT=1 docker compose rm front -f
93+
rm-front: sync-env ## remove front container
94+
DOCKER_BUILDKIT=1 docker compose rm front -f
9995

10096
.PHONY: start-front
101-
start-front: ;\
102-
DOCKER_BUILDKIT=1 docker compose up front -d
97+
start-front: sync-env ## start front container
98+
DOCKER_BUILDKIT=1 docker compose up front -d
10399

104100
.PHONY: reset-front
105-
reset-front: stop-front rm-front start-front
101+
reset-front: stop-front rm-front start-front ## reset front container
106102

107103
.PHONY: dumpautoload
108-
dumpautoload: ;\
104+
dumpautoload: sync-env ## dump the composer autoloader
109105
docker compose exec back composer -- dumpautoload
110106

111107
#
112108
# Theses are static analyses + tests
113109
#
114110

115111
.PHONY: phpmd
116-
phpmd: ;\
112+
phpmd: sync-env ## phpMD
117113
docker compose exec back composer -- run phpmd
118114

119115
.PHONY: cs-fix
120-
cs-fix: ;\
116+
cs-fix: sync-env ## cs-fix
121117
docker compose exec back composer -- run cs-fix
122118

123119

124120
.PHONY: cs-check
125-
cs-check: ;\
121+
cs-check: sync-env ## cs-check
126122
docker compose exec back composer -- run cs-check
127123

128124
.PHONY: phpstan
129-
phpstan: ;\
125+
phpstan: sync-env ## phpstan
130126
docker compose exec back composer -- run phpstan
131127

132128
.PHONY: frontlint
133-
frontlint: ;\
129+
frontlint: sync-env ## lint front (fix)
134130
docker compose exec front yarn lint --fix
135131

136132
.PHONY: frontcheck
137-
frontcheck: ;\
138-
docker compose exec front yarn lint
133+
frontcheck: ## lint front (check)
134+
docker sync-env compose exec front yarn lint
139135

140-
# Run all CI tools
141136
.PHONY: ci
142-
ci: cs-fix phpstan phpmd cs-check frontlint
137+
ci: cs-fix phpstan phpmd cs-check frontlint ## Run all CI tools
143138

144139

145140
.PHONY: drop-db-dev
146-
drop-db-dev: ;\
141+
drop-db-dev: ## Drop database
147142
docker compose exec back bin/console doctrine:schema:drop --full-database --force
148143

149-
.PHONY: fixtures-dev
150-
fixtures-dev: ;\
151-
docker compose exec back bin/console doctrine:fixtures:load -n
152-
153144
.PHONY: reset-db
154-
reset-db: drop-db-dev migrate fixtures-dev
145+
reset-db: drop-db-dev migrate ## reset database and load fixtures
146+
docker compose exec back bin/console doctrine:fixtures:load -n --append
155147

156148
.PHONY: dump
157-
dump: ;\
158-
docker compose exec mysql mysqldump -u ${DATABASE_USERNAME} -p${DATABASE_PASSWORD} ${DATABASE_NAME} > apps/back/dump/dump.sql
149+
dump: ## dump database in apps/back/dump/dump.sql (use git lfs)
150+
docker compose exec mysql mysqldump -u $(DATABASE_USERNAME) -p$(DATABASE_PASSWORD) $(DATABASE_NAME) > apps/back/dump/dump.sql
151+
gzip -f apps/back/dump/dump.sql
152+
git lfs track ./apps/back/dump/dump.sql.gz
153+
154+
.PHONY: help
155+
help: ## This help.
156+
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

apps/back/.env

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
1818

1919
###> symfony/framework-bundle ###
20-
APP_ENV=dev
21-
APP_SECRET=0ec29fdfe2bfce3ae4c3b8a6159354e4
20+
#APP_ENV=dev
21+
#APP_SECRET=0ec29fdfe2bfce3ae4c3b8a6159354e4
2222
###< symfony/framework-bundle ###
2323

2424
###> doctrine/doctrine-bundle ###
@@ -27,5 +27,4 @@ APP_SECRET=0ec29fdfe2bfce3ae4c3b8a6159354e4
2727
#
2828
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
2929
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4"
30-
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=14&charset=utf8"
3130
###< doctrine/doctrine-bundle ###

0 commit comments

Comments
 (0)