Refactor le workflow de déploiement et simplifie la connexion à la base de données PostgreSQL
All checks were successful
SSH Hello / ssh-hello (push) Successful in 2s
All checks were successful
SSH Hello / ssh-hello (push) Successful in 2s
This commit is contained in:
@@ -1,45 +1,22 @@
|
|||||||
|
name: SSH Hello
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main # Déclenche l'action pour la branche principale
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
system-deploy:
|
ssh-hello:
|
||||||
runs-on: ubuntu-latest # Utilisation de l'image Ubuntu pour l'environnement de job
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Étape 1: Setup SSH
|
- name: Write SSH Key
|
||||||
- name: Setup SSH and Add Private Key
|
|
||||||
run: |
|
run: |
|
||||||
# Créez un dossier pour stocker les clés SSH
|
echo "$SSH_PRIVATE_KEY" > id_rsa
|
||||||
mkdir -p ~/.ssh
|
chmod 600 id_rsa
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ vars.SSH_PRIVATE_KEY }}
|
||||||
|
|
||||||
# Ajoutez la clé privée stockée dans le secret à un fichier id_rsa
|
- name: Run SSH Hello
|
||||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
|
||||||
|
|
||||||
# Protéger les permissions du fichier de la clé privée
|
|
||||||
chmod 600 ~/.ssh/id_rsa
|
|
||||||
|
|
||||||
# Ajoutez l'hôte distant à known_hosts pour éviter les erreurs de vérification de l'host
|
|
||||||
ssh-keyscan -H 192.168.1.87 >> ~/.ssh/known_hosts
|
|
||||||
|
|
||||||
# Vérifiez les permissions du fichier id_rsa (optionnel, juste pour être sûr)
|
|
||||||
ls -l ~/.ssh/id_rsa
|
|
||||||
|
|
||||||
# Étape 2: Test SSH Connection
|
|
||||||
- name: Test SSH connection
|
|
||||||
run: |
|
run: |
|
||||||
# Testez la connexion SSH avec l'hôte distant
|
ssh -i id_rsa -o StrictHostKeyChecking=no ${{ vars.SSH_USER }}@${{ vars.SSH_HOST }} "echo 'Hello from Gitea Action!'"
|
||||||
ssh -v kerboul@192.168.1.87 "echo 'Connection successful!'"
|
|
||||||
|
|
||||||
# Étape 3: Ajouter une action qui utilise la connexion SSH
|
|
||||||
- name: Run remote command
|
|
||||||
run: |
|
|
||||||
# Exemple de commande distante exécutée sur le serveur distant via SSH
|
|
||||||
ssh kerboul@192.168.1.87 "cd /home/kerboul/scripts/timelapse && ./update_timelapse.sh"
|
|
||||||
|
|
||||||
# Étape 4: Nettoyage (optionnel)
|
|
||||||
- name: Clean up SSH keys
|
|
||||||
run: |
|
|
||||||
# Supprimer la clé privée pour des raisons de sécurité (optionnel)
|
|
||||||
rm -f ~/.ssh/id_rsa
|
|
||||||
rm -f ~/.ssh/known_hosts
|
|
||||||
|
|||||||
34
db.js
34
db.js
@@ -1,33 +1,29 @@
|
|||||||
const { Client } = require('pg');
|
const { Client } = require('pg');
|
||||||
const devlock = require('./devlock.js');
|
|
||||||
|
|
||||||
let dev = devlock.is_dev;
|
const client = new Client({
|
||||||
console.log('[INFO] Environment:', dev ? 'Development Local' : 'Development Remote');
|
host: 'timelapse-db',
|
||||||
|
|
||||||
let client = new Client({
|
|
||||||
host: '192.168.192.2',
|
|
||||||
port: 5432,
|
port: 5432,
|
||||||
user: 'timelapse',
|
user: 'postgres',
|
||||||
password: 'timelapse',
|
password: 'postgres',
|
||||||
database: 'timelapse'
|
database: 'timelapse'
|
||||||
});
|
});
|
||||||
|
|
||||||
if (dev) {
|
let isConnecting = false;
|
||||||
client = new Client({
|
|
||||||
host: 'mikoshi',
|
|
||||||
port: 54322,
|
|
||||||
user: 'timelapse',
|
|
||||||
password: 'timelapse',
|
|
||||||
database: 'timelapse_dev'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function init_database() {
|
function init_database() {
|
||||||
|
if (isConnecting) {
|
||||||
|
console.log('[DB] Connection attempt already in progress, skipping...');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
console.log('[DB] Initialisation de la base de données PostgreSQL...');
|
console.log('[DB] Initialisation de la base de données PostgreSQL...');
|
||||||
|
isConnecting = true;
|
||||||
|
|
||||||
client.connect(err => {
|
client.connect(err => {
|
||||||
|
isConnecting = false;
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error('Erreur de connexion à la base de données:', err);
|
console.error('[DB] Erreur de connexion à la base de données:', err);
|
||||||
setTimeout(init_database, 3000);
|
setTimeout(init_database, 3000);
|
||||||
} else {
|
} else {
|
||||||
console.log('[DB] Connecté à la base de données PostgreSQL.');
|
console.log('[DB] Connecté à la base de données PostgreSQL.');
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
let is_dev = false; // Set to true for development mode
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
is_dev
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
services:
|
services:
|
||||||
timelapse-api:
|
timelapse-api:
|
||||||
build:
|
build:
|
||||||
context: . # Chemin vers le répertoire contenant le Dockerfile
|
context: .
|
||||||
dockerfile: Dockerfile # Nom du Dockerfile, par défaut c'est "Dockerfile"
|
dockerfile: Dockerfile
|
||||||
container_name: timelapse-api
|
container_name: timelapse-api
|
||||||
ports:
|
ports:
|
||||||
- "8053:3000"
|
- "8053:3000"
|
||||||
@@ -17,13 +17,24 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- bridge
|
- bridge
|
||||||
- timelapse_network
|
timelapse-db:
|
||||||
|
image: postgres:14
|
||||||
|
container_name: timelapse-db
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
volumes:
|
||||||
|
- /home/timelapse/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
- POSTGRES_DB=timelapse
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- bridge
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
bridge:
|
bridge:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
timelapse_network:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
node_modules:
|
node_modules:
|
||||||
Reference in New Issue
Block a user