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

This commit is contained in:
2025-04-23 23:47:36 +02:00
parent 166bd53beb
commit 2ce3eafb79
4 changed files with 44 additions and 65 deletions

View File

@@ -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
View File

@@ -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.');

View File

@@ -1,5 +0,0 @@
let is_dev = false; // Set to true for development mode
module.exports = {
is_dev
}

View File

@@ -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: