Skip to content

Commit 8988fb4

Browse files
up worklfow
1 parent 08dc574 commit 8988fb4

File tree

4 files changed

+126
-31
lines changed

4 files changed

+126
-31
lines changed

.github/workflows/main.yml

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,86 @@
1-
name: 😊 Deploiment - Laravel CD
1+
name: 😊 Deploiment - InstaRepas
22

33
on:
44
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Numéro de version pour le déploiement (format: X.Y.Z)'
8+
required: false
59

610
jobs:
711
deploy:
812
runs-on: ubuntu-latest
13+
permissions:
14+
contents: write
915

1016
steps:
1117
- name: 📦 Récupération du Code
12-
uses: actions/[email protected]
18+
uses: actions/[email protected]
19+
with:
20+
fetch-depth: '0'
1321

1422
- name: ⚙️ Configuration de PHP
15-
uses: shivammathur/setup-php@2.25.4
23+
uses: shivammathur/setup-php@2.30.4
1624
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
1927
tools: composer:v2
2028

2129
- name: 📚 Installation de NPM
2230
run: |
31+
sudo apt-get update
2332
sudo apt-get install -y npm
2433
npm --version
2534
2635
- name: 🚀 Aller au répertoire Laravel et afficher
2736
run: |
28-
cd InstaRepas
2937
pwd
3038
ls -la
3139
3240
- name: 🛠️ Installation des dépendances du projet
3341
run: |
34-
composer install --no-progress --prefer-dist --optimize-autoloader
42+
composer install --no-dev --no-progress --prefer-dist --optimize-autoloader
3543
npm install
36-
working-directory: ./InstaRepas
3744
3845
- name: 🏗️ Construction du Projet
3946
run: |
4047
npm run build
41-
working-directory: ./InstaRepas
4248
4349
- name: 🗝️ Ajouter la clé SSH
4450
run: |
4551
mkdir -p ~/.ssh
4652
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
4753
4854
- name: 🔐 Configuration de SSH et rsync
49-
uses: webfactory/ssh-agent@v0.8.0
55+
uses: webfactory/ssh-agent@v0.9.0
5056
with:
5157
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
5258

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
5467
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
5871
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
6680
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
7085
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"

.github/workflows/rollback.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: 🔄 Rollback Deployment
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
tag_to_deploy:
7+
description: 'Tag Git à déployer'
8+
required: true
9+
10+
jobs:
11+
deploy:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: write
15+
16+
steps:
17+
- name: Récupération du code source
18+
uses: actions/[email protected]
19+
with:
20+
ref: ${{ github.event.inputs.tag_to_deploy }}
21+
fetch-depth: 0
22+
23+
- name: ⚙️ Configuration de PHP
24+
uses: shivammathur/[email protected]
25+
with:
26+
php-version: '8.3'
27+
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
28+
tools: composer:v2
29+
30+
- name: 📚 Installation de NPM
31+
run: |
32+
sudo apt-get install -y npm
33+
npm --version
34+
35+
- name: 🚀 Aller au répertoire Laravel et afficher
36+
run: |
37+
pwd
38+
ls -la
39+
40+
- name: 🛠️ Installation des dépendances du projet
41+
run: |
42+
composer install --no-dev --no-progress --prefer-dist --optimize-autoloader
43+
npm install
44+
45+
46+
- name: 🏗️ Construction du Projet
47+
run: |
48+
npm run build
49+
50+
- name: 🗝️ Ajouter la clé SSH
51+
run: |
52+
mkdir -p ~/.ssh
53+
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
54+
55+
- name: 🔐 Configuration de SSH et rsync
56+
uses: webfactory/[email protected]
57+
with:
58+
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
59+
60+
- name: 🗑️ Supprimer les répertoires bootstrap/cache, public et storage
61+
run: |
62+
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"
63+
64+
- name: 🚀 Déploiement sur le serveur de production
65+
run: |
66+
echo "Répertoire de travail local :"
67+
pwd
68+
echo "Contenu du répertoire de travail local :"
69+
ls -la
70+
echo "Déploiement des fichiers vers le serveur de production..."
71+
rsync -r -avz -O --delete-after --exclude=kubernetes --exclude=install.sh --exclude=database --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 }}
72+
73+
- name: 🔄 Changer le propriétaire et les permissions des répertoires
74+
run: |
75+
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"
76+
ssh -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} "sudo chmod -R 775 ${{ secrets.PROD_DIR }}/bootstrap/cache ${{ secrets.PROD_DIR }}/storage"
77+
78+
- name: 🎨 Exécuter les commandes de maintenance Laravel
79+
run: |
80+
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"

.github/workflows/ssh-test-key.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ jobs:
99

1010
steps:
1111
- name: 📦 Récupération du Code
12-
uses: actions/checkout@v3.5.2
12+
uses: actions/checkout@v4.1.4
1313

1414
- name: 🗝️ Installer la clé SSH
15-
uses: shimataro/ssh-key-action@v2.5.1
15+
uses: shimataro/ssh-key-action@v2.7.0
1616
with:
1717
key: ${{ secrets.SSH_PRIVATE_KEY }}
1818
known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
1919

2020
- name: 🖥️ Tester la connexion SSH
21-
run: ssh -p ${{ secrets.REMOTE_PORT }} -T ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}
21+
run: ssh -p ${{ secrets.REMOTE_PORT }} -T ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}

InstaRepas/.env.example

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ LOG_DEPRECATIONS_CHANNEL=null
99
LOG_LEVEL=debug
1010

1111
DB_CONNECTION=mysql
12-
DB_HOST=127.0.0.1
12+
DB_HOST=
1313
DB_PORT=3306
14-
DB_DATABASE=laravel
15-
DB_USERNAME=root
14+
DB_DATABASE=grling_instarepas
15+
DB_USERNAME=grling_instarepas
1616
DB_PASSWORD=
1717

1818
BROADCAST_DRIVER=log

0 commit comments

Comments
 (0)