1
- name : 😊 Deploiment - Laravel CD
1
+ name : 😊 Deploiment - InstaRepas
2
2
3
3
on :
4
4
workflow_dispatch :
5
+ inputs :
6
+ version :
7
+ description : ' Numéro de version pour le déploiement (format: X.Y.Z)'
8
+ required : false
5
9
6
10
jobs :
7
11
deploy :
8
12
runs-on : ubuntu-latest
13
+ permissions :
14
+ contents : write
9
15
10
16
steps :
11
17
- name : 📦 Récupération du Code
12
-
18
+
19
+ with :
20
+ fetch-depth : ' 0'
13
21
14
22
- name : ⚙️ Configuration de PHP
15
- uses : shivammathur/setup-php@2.25 .4
23
+ uses : shivammathur/setup-php@2.30 .4
16
24
with :
17
- php-version : ' 8.2 '
18
- extensions : bcmath, bz2, calendar, Core, ctype, curl, date, dom, exif, FFI, fileinfo, filter, ftp, gd, gettext, hash, iconv, igbinary, imagick, imap, intl, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, Phar, posix, readline, redis, Reflection, session, shmop, SimpleXML, soap, sockets, sodium, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib, Zend OPcache
25
+ php-version : ' 8.3 '
26
+ extensions : mongodb, bcmath, bz2, calendar, Core, ctype, curl, date, dom, exif, FFI, fileinfo, filter, ftp, gd, gettext, hash, iconv, igbinary, imagick, imap, intl, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, Phar, posix, readline, redis, Reflection, session, shmop, SimpleXML, soap, sockets, sodium, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib, Zend OPcache
19
27
tools : composer:v2
20
28
21
29
- name : 📚 Installation de NPM
22
30
run : |
31
+ sudo apt-get update
23
32
sudo apt-get install -y npm
24
33
npm --version
25
34
26
35
- name : 🚀 Aller au répertoire Laravel et afficher
27
36
run : |
28
- cd InstaRepas
29
37
pwd
30
38
ls -la
31
39
32
40
- name : 🛠️ Installation des dépendances du projet
33
41
run : |
34
- composer install --no-progress --prefer-dist --optimize-autoloader
42
+ composer install --no-dev --no- progress --prefer-dist --optimize-autoloader
35
43
npm install
36
- working-directory : ./InstaRepas
37
44
38
45
- name : 🏗️ Construction du Projet
39
46
run : |
40
47
npm run build
41
- working-directory : ./InstaRepas
42
48
43
49
- name : 🗝️ Ajouter la clé SSH
44
50
run : |
45
51
mkdir -p ~/.ssh
46
52
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
47
53
48
54
- name : 🔐 Configuration de SSH et rsync
49
- uses : webfactory/ssh-agent@v0.8 .0
55
+ uses : webfactory/ssh-agent@v0.9 .0
50
56
with :
51
57
ssh-private-key : ${{ secrets.SSH_PRIVATE_KEY }}
52
58
53
- - name : 🚀 Déployer sur le serveur
59
+ - name : 🏷️ Création du tag de version
60
+ uses : anothrNick/github-tag-action@v1
61
+ env :
62
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
63
+ CUSTOM_TAG : ${{ github.event.inputs.version }}
64
+ WITH_V : true
65
+
66
+ - name : 🗑️ Supprimer les répertoires bootstrap/cache, public et storage
54
67
run : |
55
- rsync -r -avz -O --delete-after --exclude=.git --exclude=.github --exclude=dist --exclude=node_modules --exclude=.env --quiet -e ' ssh -p ${{ secrets.REMOTE_PORT }}' ${{ secrets.REMOTE_PATH }} $GITHUB_WORKSPACE/InstaRepas/ ${{ secrets.REMOTE_USER }}@ ${{ secrets.REMOTE_HOST }}: ${{ secrets.REMOTE_DIR }}
56
-
57
- - name : 🔄 Changer les permissions de /storage et bootstrap/cache
68
+ ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "sudo rm -rf ${{ secrets.PROD_DIR }}/bootstrap/ ${{ secrets.PROD_DIR }}/public ${{ secrets.PROD_DIR }}/storage"
69
+
70
+ - name : 🚀 Déploiement sur le serveur de production
58
71
run : |
59
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "${{ secrets.REMOTE_OWN }} ${{ secrets.REMOTE_DIR }}/storage"
60
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "${{ secrets.REMOTE_OWN }} ${{ secrets.REMOTE_DIR }}/bootstrap/cache"
61
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "${{ secrets.REMOTE_MOD }} ${{ secrets.REMOTE_DIR }}/storage"
62
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "${{ secrets.REMOTE_MOD }} ${{ secrets.REMOTE_DIR }}/bootstrap/cache"
63
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "${{ secrets.REMOTE_WWW }} ${{ secrets.REMOTE_DIR }}/public"
64
-
65
- - name : 🔑 Copie du fichier .env si absent
72
+ echo "Répertoire de travail local :"
73
+ pwd
74
+ echo "Contenu du répertoire de travail local :"
75
+ ls -la
76
+ echo "Déploiement des fichiers vers le serveur de production..."
77
+ rsync -r -avz -O --delete-after --exclude=kubernetes --exclude=database --exclude=install.sh --exclude=conf --exclude=.github --exclude=.editorconfig --exclude=dist --exclude=node_modules --exclude=.env --exclude=Dockerfile --exclude=_ide_helper.php --exclude=_ide_helper_models.php --exclude=shell-php.nix --exclude=shell-stripe.nix --exclude=php.nix --exclude=deploy.yaml --exclude=README.md --exclude=tests --exclude=.phpstorm.meta.php --exclude=.env.example --exclude=phpunit.xml --exclude=.gitattributes --exclude=.git --exclude=.gitignore --quiet -e 'ssh -p ${{ secrets.REMOTE_PORT }}' . ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}:${{ secrets.PROD_DIR }}
78
+
79
+ - name : 🔄 Changer le propriétaire et les permissions des répertoires
66
80
run : |
67
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "if [ ! -f ${{ secrets.REMOTE_DIR }}/.env ]; then cp ${{ secrets.REMOTE_DIR }}/.env.example ${{ secrets.REMOTE_DIR }}/.env; fi"
68
-
69
- - name : 🔄 Générer la clé Laravel si nécessaire
81
+ ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "sudo chown -R www-data:www-data ${{ secrets.PROD_DIR }}/bootstrap/cache ${{ secrets.PROD_DIR }}/public ${{ secrets.PROD_DIR }}/storage"
82
+ ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "sudo chmod -R 775 ${{ secrets.PROD_DIR }}/bootstrap/cache ${{ secrets.PROD_DIR }}/storage"
83
+
84
+ - name : 🎨 Exécuter les commandes de maintenance Laravel
70
85
run : |
71
- ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "if grep -q 'APP_KEY=' ${{ secrets.REMOTE_DIR }}/.env && grep -q '^APP_KEY=$' ${{ secrets.REMOTE_DIR }}/.env; then cd ${{ secrets.REMOTE_DIR }} && php artisan key:generate; fi "
86
+ ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "cd ${{ secrets.PROD_DIR }} && sudo php artisan cache:clear && sudo php artisan route:clear && sudo php artisan view:clear "
0 commit comments