-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
120 lines (105 loc) · 3.28 KB
/
Taskfile.yml
File metadata and controls
120 lines (105 loc) · 3.28 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
112
113
114
115
116
117
118
119
120
version: 3
# Taskfile principal - Tâches globales et inclusions
# Charge automatiquement les variables depuis le fichier .env s'il existe
dotenv: [ '.env' ]
includes:
docker: ./taskfiles/docker/Taskfile.yml
utils: ./taskfiles/utils/Taskfile.yml
env: ./taskfiles/env/Taskfile.yml
nodejs: ./taskfiles/nodejs/Taskfile.yml
download: ./taskfiles/download/Taskfile.yml
lint: ./taskfiles/lint/Taskfile.yml
vars:
# Variables avec valeurs par défaut depuis .env ou valeurs de fallback
PROJECT_NAME: '{{.PROJECT_NAME | default "expressjs"}}'
ENVIRONMENT: '{{.ENVIRONMENT | default "development"}}'
STACK_NAME: '{{.STACK | default "expressjs"}}'
FOLDERLAMPY: '{{.FOLDERLAMPY | default "lampy"}}'
DOCKERCOMPOSEFILE: '{{.DOCKERCOMPOSEFILE | default "docker-compose-lampy.yml"}}'
tasks:
default:
desc: "Affiche l'aide et les tâches disponibles"
silent: true
cmds:
- echo "🛠️ Collection de Taskfiles pour le développement"
- echo ""
- echo "Tâches globales disponibles :"
- task --list
- echo ""
lint:all:
desc: "Exécute tous les linters disponibles"
cmds:
- task: lint:yml
vars:
IGNORE_DIR: "taskfiles"
- task: lint:md
vars:
IGNORE_DIR: "taskfiles"
- task: lint:action
- task: lint:docker
info:
desc: "Affiche les informations du projet avec les variables d'environnement"
silent: true
cmds:
- |
export PROJECT_VERSION=$(jq -r .version package.json)
echo "🛠️ {{.PROJECT_NAME}} v$PROJECT_VERSION - Collection de Taskfiles"
echo "Environnement: {{.ENVIRONMENT}}"
help:
desc: "Affiche l'aide détaillée"
aliases: [ h ]
silent: true
cmds:
- task: default
expressjs:getpull-image:
desc: "Télécharge les images Docker définies dans le docker-compose.yml"
silent: true
cmds:
- task: docker:images:pull
vars:
COMPOSE_FILE: "{{.DOCKERCOMPOSEFILE}}"
expressjs:deploy:
desc: "Déploie les stacks Docker définies dans les fichiers docker-compose"
silent: true
cmds:
- task: docker:stack:deploy
vars:
COMPOSE_FILE: "{{.DOCKERCOMPOSEFILE}}"
STACK_NAME: "{{.STACK_NAME}}"
expressjs:waiting:
desc: "Attend que les services soient opérationnels"
silent: true
cmds:
- task: docker:stack:check:containers:ready
vars:
CONTAINERS: "www"
STACK_NAME: "{{.STACK_NAME}}"
expressjs:ls:
desc: "Liste les stacks et services Docker"
silent: true
cmds:
- task: docker:stack:services
vars:
STACK_NAME: "{{.STACK_NAME}}"
create:apps:
desc: "Crée une nouvelle application Express Js dans le dossier apps"
silent: true
cmds:
- docker run --rm -v $(pwd)/apps:/var/www -w /var/www $(awk '/www:/ {f=1} f && /image:/ {print $2; exit}' {{.DOCKERCOMPOSEFILE}}) npm install
expressjs:exec:
desc: "Exécute une commande dans un conteneur en cours d'exécution"
silent: true
cmds:
- task: create:apps
- task: expressjs:getpull-image
- task: expressjs:deploy
- task: expressjs:waiting
- task: expressjs:ls
expressjs:bash:
desc: "Ouvre un shell bash dans le conteneur www"
silent: true
cmds:
- task: docker:stack:shell
vars:
STACK_NAME: "expressjs"
SERVICE_NAME: "www"