chore(template): adapter .gitea depuis template et synchroniser docs pour sdk_storage
Some checks are pending
Docker Image / docker (push) Waiting to run
Some checks are pending
Docker Image / docker (push) Waiting to run
This commit is contained in:
parent
fda21d47fa
commit
a96323cb32
@ -1,97 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug Report
|
|
||||||
about: Signaler un bug pour nous aider à améliorer 4NK Node
|
|
||||||
title: '[BUG] '
|
|
||||||
labels: ['bug', 'needs-triage']
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🐛 Description du Bug
|
|
||||||
|
|
||||||
Description claire et concise du problème.
|
|
||||||
|
|
||||||
## 🔄 Étapes pour Reproduire
|
|
||||||
|
|
||||||
1. Aller à '...'
|
|
||||||
2. Cliquer sur '...'
|
|
||||||
3. Faire défiler jusqu'à '...'
|
|
||||||
4. Voir l'erreur
|
|
||||||
|
|
||||||
## ✅ Comportement Attendu
|
|
||||||
|
|
||||||
Description de ce qui devrait se passer.
|
|
||||||
|
|
||||||
## ❌ Comportement Actuel
|
|
||||||
|
|
||||||
Description de ce qui se passe actuellement.
|
|
||||||
|
|
||||||
## 📸 Capture d'Écran
|
|
||||||
|
|
||||||
Si applicable, ajoutez une capture d'écran pour expliquer votre problème.
|
|
||||||
|
|
||||||
## 💻 Informations Système
|
|
||||||
|
|
||||||
- **OS** : [ex: Ubuntu 20.04, macOS 12.0, Windows 11]
|
|
||||||
- **Docker** : [ex: 20.10.0]
|
|
||||||
- **Docker Compose** : [ex: 2.0.0]
|
|
||||||
- **Version 4NK Node** : [ex: v1.0.0]
|
|
||||||
- **Architecture** : [ex: x86_64, ARM64]
|
|
||||||
|
|
||||||
## 📋 Configuration
|
|
||||||
|
|
||||||
### Services Actifs
|
|
||||||
```bash
|
|
||||||
docker ps
|
|
||||||
```
|
|
||||||
|
|
||||||
### Variables d'Environnement
|
|
||||||
```bash
|
|
||||||
# Bitcoin Core
|
|
||||||
BITCOIN_NETWORK=signet
|
|
||||||
BITCOIN_RPC_PORT=18443
|
|
||||||
|
|
||||||
# Blindbit
|
|
||||||
BLINDBIT_PORT=8000
|
|
||||||
|
|
||||||
# SDK Relay
|
|
||||||
SDK_RELAY_PORTS=8090-8095
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 Logs
|
|
||||||
|
|
||||||
### Logs Pertinents
|
|
||||||
```
|
|
||||||
Logs pertinents ici
|
|
||||||
```
|
|
||||||
|
|
||||||
### Logs d'Erreur
|
|
||||||
```
|
|
||||||
Logs d'erreur ici
|
|
||||||
```
|
|
||||||
|
|
||||||
### Logs de Debug
|
|
||||||
```
|
|
||||||
Logs de debug ici (si RUST_LOG=debug)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 Tentatives de Résolution
|
|
||||||
|
|
||||||
- [ ] Redémarrage des services
|
|
||||||
- [ ] Nettoyage des volumes Docker
|
|
||||||
- [ ] Vérification de la connectivité réseau
|
|
||||||
- [ ] Mise à jour des dépendances
|
|
||||||
- [ ] Vérification de la configuration
|
|
||||||
|
|
||||||
## 📚 Contexte Supplémentaire
|
|
||||||
|
|
||||||
Toute autre information pertinente sur le problème.
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation](docs/)
|
|
||||||
- [Guide de Dépannage](docs/TROUBLESHOOTING.md)
|
|
||||||
- [Issues Similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci de votre contribution !** 🙏
|
|
@ -1,156 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature Request
|
|
||||||
about: Proposer une nouvelle fonctionnalité pour 4NK Node
|
|
||||||
title: '[FEATURE] '
|
|
||||||
labels: ['enhancement', 'needs-triage']
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚀 Résumé
|
|
||||||
|
|
||||||
Description claire et concise de la fonctionnalité souhaitée.
|
|
||||||
|
|
||||||
## 💡 Motivation
|
|
||||||
|
|
||||||
Pourquoi cette fonctionnalité est-elle nécessaire ? Quels problèmes résout-elle ?
|
|
||||||
|
|
||||||
### Problèmes Actuels
|
|
||||||
- Problème 1
|
|
||||||
- Problème 2
|
|
||||||
- Problème 3
|
|
||||||
|
|
||||||
### Avantages de la Solution
|
|
||||||
- Avantage 1
|
|
||||||
- Avantage 2
|
|
||||||
- Avantage 3
|
|
||||||
|
|
||||||
## 🎯 Proposition
|
|
||||||
|
|
||||||
Description détaillée de la fonctionnalité proposée.
|
|
||||||
|
|
||||||
### Fonctionnalités Principales
|
|
||||||
- [ ] Fonctionnalité 1
|
|
||||||
- [ ] Fonctionnalité 2
|
|
||||||
- [ ] Fonctionnalité 3
|
|
||||||
|
|
||||||
### Interface Utilisateur
|
|
||||||
Description de l'interface utilisateur si applicable.
|
|
||||||
|
|
||||||
### API Changes
|
|
||||||
Description des changements d'API si applicable.
|
|
||||||
|
|
||||||
## 🔄 Alternatives Considérées
|
|
||||||
|
|
||||||
Autres solutions envisagées et pourquoi elles n'ont pas été choisies.
|
|
||||||
|
|
||||||
### Alternative 1
|
|
||||||
- **Description** : ...
|
|
||||||
- **Pourquoi rejetée** : ...
|
|
||||||
|
|
||||||
### Alternative 2
|
|
||||||
- **Description** : ...
|
|
||||||
- **Pourquoi rejetée** : ...
|
|
||||||
|
|
||||||
## 📊 Impact
|
|
||||||
|
|
||||||
### Impact sur les Utilisateurs
|
|
||||||
- Impact positif 1
|
|
||||||
- Impact positif 2
|
|
||||||
- Impact négatif potentiel (si applicable)
|
|
||||||
|
|
||||||
### Impact sur l'Architecture
|
|
||||||
- Changements nécessaires
|
|
||||||
- Compatibilité avec l'existant
|
|
||||||
- Performance
|
|
||||||
|
|
||||||
### Impact sur la Maintenance
|
|
||||||
- Complexité ajoutée
|
|
||||||
- Tests nécessaires
|
|
||||||
- Documentation requise
|
|
||||||
|
|
||||||
## 💻 Exemples d'Utilisation
|
|
||||||
|
|
||||||
### Cas d'Usage 1
|
|
||||||
```bash
|
|
||||||
# Exemple de commande ou configuration
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cas d'Usage 2
|
|
||||||
```python
|
|
||||||
# Exemple de code Python
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cas d'Usage 3
|
|
||||||
```javascript
|
|
||||||
// Exemple de code JavaScript
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🧪 Tests
|
|
||||||
|
|
||||||
### Tests Nécessaires
|
|
||||||
- [ ] Tests unitaires
|
|
||||||
- [ ] Tests d'intégration
|
|
||||||
- [ ] Tests de performance
|
|
||||||
- [ ] Tests de sécurité
|
|
||||||
- [ ] Tests de compatibilité
|
|
||||||
|
|
||||||
### Scénarios de Test
|
|
||||||
- Scénario 1
|
|
||||||
- Scénario 2
|
|
||||||
- Scénario 3
|
|
||||||
|
|
||||||
## 📚 Documentation
|
|
||||||
|
|
||||||
### Documentation Requise
|
|
||||||
- [ ] Guide d'utilisation
|
|
||||||
- [ ] Documentation API
|
|
||||||
- [ ] Exemples de code
|
|
||||||
- [ ] Guide de migration
|
|
||||||
- [ ] FAQ
|
|
||||||
|
|
||||||
## 🔧 Implémentation
|
|
||||||
|
|
||||||
### Étapes Proposées
|
|
||||||
1. **Phase 1** : [Description]
|
|
||||||
2. **Phase 2** : [Description]
|
|
||||||
3. **Phase 3** : [Description]
|
|
||||||
|
|
||||||
### Estimation de Temps
|
|
||||||
- **Développement** : X jours/semaines
|
|
||||||
- **Tests** : X jours/semaines
|
|
||||||
- **Documentation** : X jours/semaines
|
|
||||||
- **Total** : X jours/semaines
|
|
||||||
|
|
||||||
### Ressources Nécessaires
|
|
||||||
- Développeur(s)
|
|
||||||
- Testeur(s)
|
|
||||||
- Documentateur(s)
|
|
||||||
- Infrastructure
|
|
||||||
|
|
||||||
## 🎯 Critères de Succès
|
|
||||||
|
|
||||||
Comment mesurer le succès de cette fonctionnalité ?
|
|
||||||
|
|
||||||
- [ ] Critère 1
|
|
||||||
- [ ] Critère 2
|
|
||||||
- [ ] Critère 3
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation existante](docs/)
|
|
||||||
- [Issues similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement)
|
|
||||||
- [Roadmap](https://git.4nkweb.com/4nk/4NK_node/projects)
|
|
||||||
- [Discussions](https://git.4nkweb.com/4nk/4NK_node/issues)
|
|
||||||
|
|
||||||
## 📋 Checklist
|
|
||||||
|
|
||||||
- [ ] J'ai vérifié que cette fonctionnalité n'existe pas déjà
|
|
||||||
- [ ] J'ai lu la documentation existante
|
|
||||||
- [ ] J'ai vérifié les issues similaires
|
|
||||||
- [ ] J'ai fourni des exemples d'utilisation
|
|
||||||
- [ ] J'ai considéré l'impact sur l'existant
|
|
||||||
- [ ] J'ai proposé des tests
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci de votre contribution à l'amélioration de 4NK Node !** 🌟
|
|
@ -1,180 +0,0 @@
|
|||||||
# Pull Request - 4NK Node
|
|
||||||
|
|
||||||
## 📋 Description
|
|
||||||
|
|
||||||
Description claire et concise des changements apportés.
|
|
||||||
|
|
||||||
### Type de Changement
|
|
||||||
- [ ] 🐛 Bug fix
|
|
||||||
- [ ] ✨ Nouvelle fonctionnalité
|
|
||||||
- [ ] 📚 Documentation
|
|
||||||
- [ ] 🧪 Tests
|
|
||||||
- [ ] 🔧 Refactoring
|
|
||||||
- [ ] 🚀 Performance
|
|
||||||
- [ ] 🔒 Sécurité
|
|
||||||
- [ ] 🎨 Style/UI
|
|
||||||
- [ ] 🏗️ Architecture
|
|
||||||
- [ ] 📦 Build/CI
|
|
||||||
|
|
||||||
### Composants Affectés
|
|
||||||
- [ ] Bitcoin Core
|
|
||||||
- [ ] Blindbit
|
|
||||||
- [ ] SDK Relay
|
|
||||||
- [ ] Tor
|
|
||||||
- [ ] Docker/Infrastructure
|
|
||||||
- [ ] Tests
|
|
||||||
- [ ] Documentation
|
|
||||||
- [ ] Scripts
|
|
||||||
|
|
||||||
## 🔗 Issue(s) Liée(s)
|
|
||||||
|
|
||||||
Fixes #(issue)
|
|
||||||
Relates to #(issue)
|
|
||||||
|
|
||||||
## 🧪 Tests
|
|
||||||
|
|
||||||
### Tests Exécutés
|
|
||||||
- [ ] Tests unitaires
|
|
||||||
- [ ] Tests d'intégration
|
|
||||||
- [ ] Tests de connectivité
|
|
||||||
- [ ] Tests externes
|
|
||||||
- [ ] Tests de performance
|
|
||||||
|
|
||||||
### Commandes de Test
|
|
||||||
```bash
|
|
||||||
# Tests complets
|
|
||||||
./tests/run_all_tests.sh
|
|
||||||
|
|
||||||
# Tests spécifiques
|
|
||||||
./tests/run_unit_tests.sh
|
|
||||||
./tests/run_integration_tests.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Résultats des Tests
|
|
||||||
```
|
|
||||||
Résultats des tests ici
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📸 Captures d'Écran
|
|
||||||
|
|
||||||
Si applicable, ajoutez des captures d'écran pour les changements visuels.
|
|
||||||
|
|
||||||
## 🔧 Changements Techniques
|
|
||||||
|
|
||||||
### Fichiers Modifiés
|
|
||||||
- `fichier1.rs` - Description des changements
|
|
||||||
- `fichier2.py` - Description des changements
|
|
||||||
- `docker-compose.yml` - Description des changements
|
|
||||||
|
|
||||||
### Nouveaux Fichiers
|
|
||||||
- `nouveau_fichier.rs` - Description
|
|
||||||
- `nouveau_script.sh` - Description
|
|
||||||
|
|
||||||
### Fichiers Supprimés
|
|
||||||
- `ancien_fichier.rs` - Raison de la suppression
|
|
||||||
|
|
||||||
### Changements de Configuration
|
|
||||||
```yaml
|
|
||||||
# Exemple de changement de configuration
|
|
||||||
service:
|
|
||||||
new_option: value
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📚 Documentation
|
|
||||||
|
|
||||||
### Documentation Mise à Jour
|
|
||||||
- [ ] README.md
|
|
||||||
- [ ] docs/INSTALLATION.md
|
|
||||||
- [ ] docs/USAGE.md
|
|
||||||
- [ ] docs/API.md
|
|
||||||
- [ ] docs/ARCHITECTURE.md
|
|
||||||
|
|
||||||
### Nouvelle Documentation
|
|
||||||
- [ ] Nouveau guide créé
|
|
||||||
- [ ] Exemples ajoutés
|
|
||||||
- [ ] API documentée
|
|
||||||
|
|
||||||
## 🔍 Code Review Checklist
|
|
||||||
|
|
||||||
### Code Quality
|
|
||||||
- [ ] Le code suit les standards du projet
|
|
||||||
- [ ] Les noms de variables/fonctions sont clairs
|
|
||||||
- [ ] Les commentaires sont appropriés
|
|
||||||
- [ ] Pas de code mort ou commenté
|
|
||||||
- [ ] Gestion d'erreurs appropriée
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
- [ ] Pas de régression de performance
|
|
||||||
- [ ] Optimisations appliquées si nécessaire
|
|
||||||
- [ ] Tests de performance ajoutés
|
|
||||||
|
|
||||||
### Sécurité
|
|
||||||
- [ ] Pas de vulnérabilités introduites
|
|
||||||
- [ ] Validation des entrées utilisateur
|
|
||||||
- [ ] Gestion sécurisée des secrets
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
- [ ] Couverture de tests suffisante
|
|
||||||
- [ ] Tests pour les cas d'erreur
|
|
||||||
- [ ] Tests d'intégration si nécessaire
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
- [ ] Code auto-documenté
|
|
||||||
- [ ] Documentation mise à jour
|
|
||||||
- [ ] Exemples fournis
|
|
||||||
|
|
||||||
## 🚀 Déploiement
|
|
||||||
|
|
||||||
### Impact sur le Déploiement
|
|
||||||
- [ ] Aucun impact
|
|
||||||
- [ ] Migration de données requise
|
|
||||||
- [ ] Changement de configuration
|
|
||||||
- [ ] Redémarrage des services
|
|
||||||
|
|
||||||
### Étapes de Déploiement
|
|
||||||
```bash
|
|
||||||
# Étapes pour déployer les changements
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 Métriques
|
|
||||||
|
|
||||||
### Impact sur les Performances
|
|
||||||
- Temps de réponse : +/- X%
|
|
||||||
- Utilisation mémoire : +/- X%
|
|
||||||
- Utilisation CPU : +/- X%
|
|
||||||
|
|
||||||
### Impact sur la Stabilité
|
|
||||||
- Taux d'erreur : +/- X%
|
|
||||||
- Disponibilité : +/- X%
|
|
||||||
|
|
||||||
## 🔄 Compatibilité
|
|
||||||
|
|
||||||
### Compatibilité Ascendante
|
|
||||||
- [ ] Compatible avec les versions précédentes
|
|
||||||
- [ ] Migration automatique
|
|
||||||
- [ ] Migration manuelle requise
|
|
||||||
|
|
||||||
### Compatibilité Descendante
|
|
||||||
- [ ] Compatible avec les futures versions
|
|
||||||
- [ ] API stable
|
|
||||||
- [ ] Configuration stable
|
|
||||||
|
|
||||||
## 🎯 Critères de Succès
|
|
||||||
|
|
||||||
- [ ] Critère 1
|
|
||||||
- [ ] Critère 2
|
|
||||||
- [ ] Critère 3
|
|
||||||
|
|
||||||
## 📝 Notes Supplémentaires
|
|
||||||
|
|
||||||
Informations supplémentaires importantes pour les reviewers.
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation](docs/)
|
|
||||||
- [Tests](tests/)
|
|
||||||
- [Issues liées](https://git.4nkweb.com/4nk/4NK_node/issues)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci pour votre contribution !** 🙏
|
|
@ -1,345 +0,0 @@
|
|||||||
name: CI - 4NK Node
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main, develop ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main, develop ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
RUST_VERSION: '1.70'
|
|
||||||
DOCKER_COMPOSE_VERSION: '2.20.0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Job de vérification du code
|
|
||||||
code-quality:
|
|
||||||
name: Code Quality
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Cache Rust dependencies
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
|
||||||
target
|
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-cargo-
|
|
||||||
|
|
||||||
- name: Run clippy
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo clippy --all-targets --all-features -- -D warnings
|
|
||||||
|
|
||||||
- name: Run rustfmt
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo fmt --all -- --check
|
|
||||||
|
|
||||||
- name: Check documentation
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo doc --no-deps
|
|
||||||
|
|
||||||
- name: Check for TODO/FIXME
|
|
||||||
run: |
|
|
||||||
if grep -r "TODO\|FIXME" . --exclude-dir=.git --exclude-dir=target; then
|
|
||||||
echo "Found TODO/FIXME comments. Please address them."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de tests unitaires
|
|
||||||
unit-tests:
|
|
||||||
name: Unit Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Cache Rust dependencies
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
|
||||||
target
|
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-cargo-
|
|
||||||
|
|
||||||
- name: Run unit tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --lib --bins
|
|
||||||
|
|
||||||
- name: Run integration tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --tests
|
|
||||||
|
|
||||||
# Job de tests d'intégration
|
|
||||||
integration-tests:
|
|
||||||
name: Integration Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
services:
|
|
||||||
docker:
|
|
||||||
image: docker:24.0.5
|
|
||||||
options: >-
|
|
||||||
--health-cmd "docker info"
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 5
|
|
||||||
ports:
|
|
||||||
- 2375:2375
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Build Docker images
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-bitcoin ./bitcoin
|
|
||||||
docker build -t 4nk-node-blindbit ./blindbit
|
|
||||||
docker build -t 4nk-node-sdk-relay -f ./sdk_relay/Dockerfile ..
|
|
||||||
|
|
||||||
- name: Run integration tests
|
|
||||||
run: |
|
|
||||||
# Tests de connectivité de base
|
|
||||||
./tests/run_connectivity_tests.sh || true
|
|
||||||
|
|
||||||
# Tests d'intégration
|
|
||||||
./tests/run_integration_tests.sh || true
|
|
||||||
|
|
||||||
- name: Upload test results
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
name: test-results
|
|
||||||
path: |
|
|
||||||
tests/logs/
|
|
||||||
tests/reports/
|
|
||||||
retention-days: 7
|
|
||||||
|
|
||||||
# Job de tests de sécurité
|
|
||||||
security-tests:
|
|
||||||
name: Security Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Run cargo audit
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo audit --deny warnings
|
|
||||||
|
|
||||||
- name: Check for secrets
|
|
||||||
run: |
|
|
||||||
# Vérifier les secrets potentiels
|
|
||||||
if grep -r "password\|secret\|key\|token" . --exclude-dir=.git --exclude-dir=target --exclude=*.md; then
|
|
||||||
echo "Potential secrets found. Please review."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Check file permissions
|
|
||||||
run: |
|
|
||||||
# Vérifier les permissions sensibles
|
|
||||||
find . -type f -perm /0111 -name "*.conf" -o -name "*.key" -o -name "*.pem" | while read file; do
|
|
||||||
if [[ $(stat -c %a "$file") != "600" ]]; then
|
|
||||||
echo "Warning: $file has insecure permissions"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Job de build et test Docker
|
|
||||||
docker-build:
|
|
||||||
name: Docker Build & Test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
services:
|
|
||||||
docker:
|
|
||||||
image: docker:24.0.5
|
|
||||||
options: >-
|
|
||||||
--health-cmd "docker info"
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 5
|
|
||||||
ports:
|
|
||||||
- 2375:2375
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Build and test Bitcoin Core
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-bitcoin:test ./bitcoin
|
|
||||||
docker run --rm 4nk-node-bitcoin:test bitcoin-cli --version
|
|
||||||
|
|
||||||
- name: Build and test Blindbit
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-blindbit:test ./blindbit
|
|
||||||
docker run --rm 4nk-node-blindbit:test --version || true
|
|
||||||
|
|
||||||
- name: Build and test SDK Relay
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-sdk-relay:test -f ./sdk_relay/Dockerfile ..
|
|
||||||
docker run --rm 4nk-node-sdk-relay:test --version || true
|
|
||||||
|
|
||||||
- name: Test Docker Compose
|
|
||||||
run: |
|
|
||||||
docker-compose config
|
|
||||||
docker-compose build --no-cache
|
|
||||||
|
|
||||||
# Job de tests de documentation
|
|
||||||
documentation-tests:
|
|
||||||
name: Documentation Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Check markdown links
|
|
||||||
run: |
|
|
||||||
# Vérification basique des liens markdown
|
|
||||||
find . -name "*.md" -exec grep -l "\[.*\](" {} \; | while read file; do
|
|
||||||
echo "Checking links in $file"
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Check documentation structure
|
|
||||||
run: |
|
|
||||||
# Vérifier la présence des fichiers de documentation essentiels
|
|
||||||
required_files=(
|
|
||||||
"README.md"
|
|
||||||
"LICENSE"
|
|
||||||
"CONTRIBUTING.md"
|
|
||||||
"CHANGELOG.md"
|
|
||||||
"CODE_OF_CONDUCT.md"
|
|
||||||
"SECURITY.md"
|
|
||||||
"docs/INDEX.md"
|
|
||||||
"docs/INSTALLATION.md"
|
|
||||||
"docs/USAGE.md"
|
|
||||||
)
|
|
||||||
|
|
||||||
for file in "${required_files[@]}"; do
|
|
||||||
if [[ ! -f "$file" ]]; then
|
|
||||||
echo "Missing required documentation file: $file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Validate documentation
|
|
||||||
run: |
|
|
||||||
# Vérifier la cohérence de la documentation
|
|
||||||
if ! grep -q "4NK Node" README.md; then
|
|
||||||
echo "README.md should mention '4NK Node'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de release guard (cohérence release)
|
|
||||||
release-guard:
|
|
||||||
name: Release Guard
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [code-quality, unit-tests, documentation-tests]
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Ensure guard scripts are executable
|
|
||||||
run: |
|
|
||||||
chmod +x scripts/release/guard.sh || true
|
|
||||||
chmod +x scripts/checks/version_alignment.sh || true
|
|
||||||
|
|
||||||
- name: Version alignment check
|
|
||||||
run: |
|
|
||||||
if [ -f scripts/checks/version_alignment.sh ]; then
|
|
||||||
./scripts/checks/version_alignment.sh
|
|
||||||
else
|
|
||||||
echo "No version alignment script (ok)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Release guard (CI verify)
|
|
||||||
env:
|
|
||||||
RELEASE_TYPE: ci-verify
|
|
||||||
run: |
|
|
||||||
if [ -f scripts/release/guard.sh ]; then
|
|
||||||
./scripts/release/guard.sh
|
|
||||||
else
|
|
||||||
echo "No guard script (ok)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de tests de performance
|
|
||||||
performance-tests:
|
|
||||||
name: Performance Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Run performance tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --release --test performance_tests || true
|
|
||||||
|
|
||||||
- name: Check memory usage
|
|
||||||
run: |
|
|
||||||
# Tests de base de consommation mémoire
|
|
||||||
echo "Performance tests completed"
|
|
||||||
|
|
||||||
# Job de notification
|
|
||||||
notify:
|
|
||||||
name: Notify
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [code-quality, unit-tests, integration-tests, security-tests, docker-build, documentation-tests]
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Notify success
|
|
||||||
if: needs.code-quality.result == 'success' && needs.unit-tests.result == 'success' && needs.integration-tests.result == 'success' && needs.security-tests.result == 'success' && needs.docker-build.result == 'success' && needs.documentation-tests.result == 'success'
|
|
||||||
run: |
|
|
||||||
echo "✅ All tests passed successfully!"
|
|
||||||
|
|
||||||
- name: Notify failure
|
|
||||||
if: needs.code-quality.result == 'failure' || needs.unit-tests.result == 'failure' || needs.integration-tests.result == 'failure' || needs.security-tests.result == 'failure' || needs.docker-build.result == 'failure' || needs.documentation-tests.result == 'failure'
|
|
||||||
run: |
|
|
||||||
echo "❌ Some tests failed!"
|
|
||||||
exit 1
|
|
@ -1,20 +1,97 @@
|
|||||||
---
|
---
|
||||||
name: Rapport de bug
|
name: Bug Report
|
||||||
about: Signaler un problème
|
about: Signaler un bug pour nous aider à améliorer 4NK Node
|
||||||
labels: bug
|
title: '[BUG] '
|
||||||
|
labels: ['bug', 'needs-triage']
|
||||||
|
assignees: ''
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## 🐛 Description du Bug
|
||||||
|
|
||||||
Décrivez le bug.
|
Description claire et concise du problème.
|
||||||
|
|
||||||
## Reproduction
|
## 🔄 Étapes pour Reproduire
|
||||||
|
|
||||||
1. Étapes
|
1. Aller à '...'
|
||||||
2. Résultat observé
|
2. Cliquer sur '...'
|
||||||
3. Résultat attendu
|
3. Faire défiler jusqu'à '...'
|
||||||
|
4. Voir l'erreur
|
||||||
|
|
||||||
## Contexte
|
## ✅ Comportement Attendu
|
||||||
- Version
|
|
||||||
- OS / Arch
|
Description de ce qui devrait se passer.
|
||||||
- Logs pertinents
|
|
||||||
|
## ❌ Comportement Actuel
|
||||||
|
|
||||||
|
Description de ce qui se passe actuellement.
|
||||||
|
|
||||||
|
## 📸 Capture d'Écran
|
||||||
|
|
||||||
|
Si applicable, ajoutez une capture d'écran pour expliquer votre problème.
|
||||||
|
|
||||||
|
## 💻 Informations Système
|
||||||
|
|
||||||
|
- **OS** : [ex: Ubuntu 20.04, macOS 12.0, Windows 11]
|
||||||
|
- **Docker** : [ex: 20.10.0]
|
||||||
|
- **Docker Compose** : [ex: 2.0.0]
|
||||||
|
- **Version 4NK Node** : [ex: v1.0.0]
|
||||||
|
- **Architecture** : [ex: x86_64, ARM64]
|
||||||
|
|
||||||
|
## 📋 Configuration
|
||||||
|
|
||||||
|
### Services Actifs
|
||||||
|
```bash
|
||||||
|
docker ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### Variables d'Environnement
|
||||||
|
```bash
|
||||||
|
# Bitcoin Core
|
||||||
|
BITCOIN_NETWORK=signet
|
||||||
|
BITCOIN_RPC_PORT=18443
|
||||||
|
|
||||||
|
# Blindbit
|
||||||
|
BLINDBIT_PORT=8000
|
||||||
|
|
||||||
|
# SDK Relay
|
||||||
|
SDK_RELAY_PORTS=8090-8095
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 Logs
|
||||||
|
|
||||||
|
### Logs Pertinents
|
||||||
|
```
|
||||||
|
Logs pertinents ici
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logs d'Erreur
|
||||||
|
```
|
||||||
|
Logs d'erreur ici
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logs de Debug
|
||||||
|
```
|
||||||
|
Logs de debug ici (si RUST_LOG=debug)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Tentatives de Résolution
|
||||||
|
|
||||||
|
- [ ] Redémarrage des services
|
||||||
|
- [ ] Nettoyage des volumes Docker
|
||||||
|
- [ ] Vérification de la connectivité réseau
|
||||||
|
- [ ] Mise à jour des dépendances
|
||||||
|
- [ ] Vérification de la configuration
|
||||||
|
|
||||||
|
## 📚 Contexte Supplémentaire
|
||||||
|
|
||||||
|
Toute autre information pertinente sur le problème.
|
||||||
|
|
||||||
|
## 🔗 Liens Utiles
|
||||||
|
|
||||||
|
- [Documentation](docs/)
|
||||||
|
- [Guide de Dépannage](docs/TROUBLESHOOTING.md)
|
||||||
|
- [Issues Similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Merci de votre contribution !** 🙏
|
||||||
|
@ -1,21 +1,156 @@
|
|||||||
---
|
---
|
||||||
name: Demande de fonctionnalité
|
name: Feature Request
|
||||||
about: Proposer une idée
|
about: Proposer une nouvelle fonctionnalité pour 4NK Node
|
||||||
labels: enhancement
|
title: '[FEATURE] '
|
||||||
|
labels: ['enhancement', 'needs-triage']
|
||||||
|
assignees: ''
|
||||||
---
|
---
|
||||||
|
|
||||||
## Problème / Contexte
|
## 🚀 Résumé
|
||||||
|
|
||||||
Quel problème résout la fonctionnalité ?
|
Description claire et concise de la fonctionnalité souhaitée.
|
||||||
|
|
||||||
## Proposition
|
## 💡 Motivation
|
||||||
|
|
||||||
Décrivez la solution souhaitée.
|
Pourquoi cette fonctionnalité est-elle nécessaire ? Quels problèmes résout-elle ?
|
||||||
|
|
||||||
## Alternatives
|
### Problèmes Actuels
|
||||||
|
- Problème 1
|
||||||
|
- Problème 2
|
||||||
|
- Problème 3
|
||||||
|
|
||||||
Solutions alternatives envisagées.
|
### Avantages de la Solution
|
||||||
|
- Avantage 1
|
||||||
|
- Avantage 2
|
||||||
|
- Avantage 3
|
||||||
|
|
||||||
## Impacts
|
## 🎯 Proposition
|
||||||
|
|
||||||
Tests, docs, compatibilité.
|
Description détaillée de la fonctionnalité proposée.
|
||||||
|
|
||||||
|
### Fonctionnalités Principales
|
||||||
|
- [ ] Fonctionnalité 1
|
||||||
|
- [ ] Fonctionnalité 2
|
||||||
|
- [ ] Fonctionnalité 3
|
||||||
|
|
||||||
|
### Interface Utilisateur
|
||||||
|
Description de l'interface utilisateur si applicable.
|
||||||
|
|
||||||
|
### API Changes
|
||||||
|
Description des changements d'API si applicable.
|
||||||
|
|
||||||
|
## 🔄 Alternatives Considérées
|
||||||
|
|
||||||
|
Autres solutions envisagées et pourquoi elles n'ont pas été choisies.
|
||||||
|
|
||||||
|
### Alternative 1
|
||||||
|
- **Description** : ...
|
||||||
|
- **Pourquoi rejetée** : ...
|
||||||
|
|
||||||
|
### Alternative 2
|
||||||
|
- **Description** : ...
|
||||||
|
- **Pourquoi rejetée** : ...
|
||||||
|
|
||||||
|
## 📊 Impact
|
||||||
|
|
||||||
|
### Impact sur les Utilisateurs
|
||||||
|
- Impact positif 1
|
||||||
|
- Impact positif 2
|
||||||
|
- Impact négatif potentiel (si applicable)
|
||||||
|
|
||||||
|
### Impact sur l'Architecture
|
||||||
|
- Changements nécessaires
|
||||||
|
- Compatibilité avec l'existant
|
||||||
|
- Performance
|
||||||
|
|
||||||
|
### Impact sur la Maintenance
|
||||||
|
- Complexité ajoutée
|
||||||
|
- Tests nécessaires
|
||||||
|
- Documentation requise
|
||||||
|
|
||||||
|
## 💻 Exemples d'Utilisation
|
||||||
|
|
||||||
|
### Cas d'Usage 1
|
||||||
|
```bash
|
||||||
|
# Exemple de commande ou configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cas d'Usage 2
|
||||||
|
```python
|
||||||
|
# Exemple de code Python
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cas d'Usage 3
|
||||||
|
```javascript
|
||||||
|
// Exemple de code JavaScript
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 Tests
|
||||||
|
|
||||||
|
### Tests Nécessaires
|
||||||
|
- [ ] Tests unitaires
|
||||||
|
- [ ] Tests d'intégration
|
||||||
|
- [ ] Tests de performance
|
||||||
|
- [ ] Tests de sécurité
|
||||||
|
- [ ] Tests de compatibilité
|
||||||
|
|
||||||
|
### Scénarios de Test
|
||||||
|
- Scénario 1
|
||||||
|
- Scénario 2
|
||||||
|
- Scénario 3
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
### Documentation Requise
|
||||||
|
- [ ] Guide d'utilisation
|
||||||
|
- [ ] Documentation API
|
||||||
|
- [ ] Exemples de code
|
||||||
|
- [ ] Guide de migration
|
||||||
|
- [ ] FAQ
|
||||||
|
|
||||||
|
## 🔧 Implémentation
|
||||||
|
|
||||||
|
### Étapes Proposées
|
||||||
|
1. **Phase 1** : [Description]
|
||||||
|
2. **Phase 2** : [Description]
|
||||||
|
3. **Phase 3** : [Description]
|
||||||
|
|
||||||
|
### Estimation de Temps
|
||||||
|
- **Développement** : X jours/semaines
|
||||||
|
- **Tests** : X jours/semaines
|
||||||
|
- **Documentation** : X jours/semaines
|
||||||
|
- **Total** : X jours/semaines
|
||||||
|
|
||||||
|
### Ressources Nécessaires
|
||||||
|
- Développeur(s)
|
||||||
|
- Testeur(s)
|
||||||
|
- Documentateur(s)
|
||||||
|
- Infrastructure
|
||||||
|
|
||||||
|
## 🎯 Critères de Succès
|
||||||
|
|
||||||
|
Comment mesurer le succès de cette fonctionnalité ?
|
||||||
|
|
||||||
|
- [ ] Critère 1
|
||||||
|
- [ ] Critère 2
|
||||||
|
- [ ] Critère 3
|
||||||
|
|
||||||
|
## 🔗 Liens Utiles
|
||||||
|
|
||||||
|
- [Documentation existante](docs/)
|
||||||
|
- [Issues similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement)
|
||||||
|
- [Roadmap](https://git.4nkweb.com/4nk/4NK_node/projects)
|
||||||
|
- [Discussions](https://git.4nkweb.com/4nk/4NK_node/issues)
|
||||||
|
|
||||||
|
## 📋 Checklist
|
||||||
|
|
||||||
|
- [ ] J'ai vérifié que cette fonctionnalité n'existe pas déjà
|
||||||
|
- [ ] J'ai lu la documentation existante
|
||||||
|
- [ ] J'ai vérifié les issues similaires
|
||||||
|
- [ ] J'ai fourni des exemples d'utilisation
|
||||||
|
- [ ] J'ai considéré l'impact sur l'existant
|
||||||
|
- [ ] J'ai proposé des tests
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Merci de votre contribution à l'amélioration de 4NK Node !** 🌟
|
||||||
|
@ -1,13 +1,180 @@
|
|||||||
# Objet
|
# Pull Request - 4NK Node
|
||||||
|
|
||||||
Décrivez brièvement les changements.
|
## 📋 Description
|
||||||
|
|
||||||
## Checklist
|
Description claire et concise des changements apportés.
|
||||||
- [ ] Tests ajoutés/mis à jour (`tests/`)
|
|
||||||
- [ ] Documentation mise à jour (`docs/`)
|
|
||||||
- [ ] `cargo fmt` OK
|
|
||||||
- [ ] `cargo clippy` sans warnings
|
|
||||||
- [ ] `CHANGELOG.md` mis à jour si nécessaire
|
|
||||||
|
|
||||||
## Liens
|
### Type de Changement
|
||||||
- Issue liée: #
|
- [ ] 🐛 Bug fix
|
||||||
|
- [ ] ✨ Nouvelle fonctionnalité
|
||||||
|
- [ ] 📚 Documentation
|
||||||
|
- [ ] 🧪 Tests
|
||||||
|
- [ ] 🔧 Refactoring
|
||||||
|
- [ ] 🚀 Performance
|
||||||
|
- [ ] 🔒 Sécurité
|
||||||
|
- [ ] 🎨 Style/UI
|
||||||
|
- [ ] 🏗️ Architecture
|
||||||
|
- [ ] 📦 Build/CI
|
||||||
|
|
||||||
|
### Composants Affectés
|
||||||
|
- [ ] Bitcoin Core
|
||||||
|
- [ ] Blindbit
|
||||||
|
- [ ] SDK Relay
|
||||||
|
- [ ] Tor
|
||||||
|
- [ ] Docker/Infrastructure
|
||||||
|
- [ ] Tests
|
||||||
|
- [ ] Documentation
|
||||||
|
- [ ] Scripts
|
||||||
|
|
||||||
|
## 🔗 Issue(s) Liée(s)
|
||||||
|
|
||||||
|
Fixes #(issue)
|
||||||
|
Relates to #(issue)
|
||||||
|
|
||||||
|
## 🧪 Tests
|
||||||
|
|
||||||
|
### Tests Exécutés
|
||||||
|
- [ ] Tests unitaires
|
||||||
|
- [ ] Tests d'intégration
|
||||||
|
- [ ] Tests de connectivité
|
||||||
|
- [ ] Tests externes
|
||||||
|
- [ ] Tests de performance
|
||||||
|
|
||||||
|
### Commandes de Test
|
||||||
|
```bash
|
||||||
|
# Tests complets
|
||||||
|
./tests/run_all_tests.sh
|
||||||
|
|
||||||
|
# Tests spécifiques
|
||||||
|
./tests/run_unit_tests.sh
|
||||||
|
./tests/run_integration_tests.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Résultats des Tests
|
||||||
|
```
|
||||||
|
Résultats des tests ici
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📸 Captures d'Écran
|
||||||
|
|
||||||
|
Si applicable, ajoutez des captures d'écran pour les changements visuels.
|
||||||
|
|
||||||
|
## 🔧 Changements Techniques
|
||||||
|
|
||||||
|
### Fichiers Modifiés
|
||||||
|
- `fichier1.rs` - Description des changements
|
||||||
|
- `fichier2.py` - Description des changements
|
||||||
|
- `docker-compose.yml` - Description des changements
|
||||||
|
|
||||||
|
### Nouveaux Fichiers
|
||||||
|
- `nouveau_fichier.rs` - Description
|
||||||
|
- `nouveau_script.sh` - Description
|
||||||
|
|
||||||
|
### Fichiers Supprimés
|
||||||
|
- `ancien_fichier.rs` - Raison de la suppression
|
||||||
|
|
||||||
|
### Changements de Configuration
|
||||||
|
```yaml
|
||||||
|
# Exemple de changement de configuration
|
||||||
|
service:
|
||||||
|
new_option: value
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
### Documentation Mise à Jour
|
||||||
|
- [ ] README.md
|
||||||
|
- [ ] docs/INSTALLATION.md
|
||||||
|
- [ ] docs/USAGE.md
|
||||||
|
- [ ] docs/API.md
|
||||||
|
- [ ] docs/ARCHITECTURE.md
|
||||||
|
|
||||||
|
### Nouvelle Documentation
|
||||||
|
- [ ] Nouveau guide créé
|
||||||
|
- [ ] Exemples ajoutés
|
||||||
|
- [ ] API documentée
|
||||||
|
|
||||||
|
## 🔍 Code Review Checklist
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
- [ ] Le code suit les standards du projet
|
||||||
|
- [ ] Les noms de variables/fonctions sont clairs
|
||||||
|
- [ ] Les commentaires sont appropriés
|
||||||
|
- [ ] Pas de code mort ou commenté
|
||||||
|
- [ ] Gestion d'erreurs appropriée
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
- [ ] Pas de régression de performance
|
||||||
|
- [ ] Optimisations appliquées si nécessaire
|
||||||
|
- [ ] Tests de performance ajoutés
|
||||||
|
|
||||||
|
### Sécurité
|
||||||
|
- [ ] Pas de vulnérabilités introduites
|
||||||
|
- [ ] Validation des entrées utilisateur
|
||||||
|
- [ ] Gestion sécurisée des secrets
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
- [ ] Couverture de tests suffisante
|
||||||
|
- [ ] Tests pour les cas d'erreur
|
||||||
|
- [ ] Tests d'intégration si nécessaire
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- [ ] Code auto-documenté
|
||||||
|
- [ ] Documentation mise à jour
|
||||||
|
- [ ] Exemples fournis
|
||||||
|
|
||||||
|
## 🚀 Déploiement
|
||||||
|
|
||||||
|
### Impact sur le Déploiement
|
||||||
|
- [ ] Aucun impact
|
||||||
|
- [ ] Migration de données requise
|
||||||
|
- [ ] Changement de configuration
|
||||||
|
- [ ] Redémarrage des services
|
||||||
|
|
||||||
|
### Étapes de Déploiement
|
||||||
|
```bash
|
||||||
|
# Étapes pour déployer les changements
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Métriques
|
||||||
|
|
||||||
|
### Impact sur les Performances
|
||||||
|
- Temps de réponse : +/- X%
|
||||||
|
- Utilisation mémoire : +/- X%
|
||||||
|
- Utilisation CPU : +/- X%
|
||||||
|
|
||||||
|
### Impact sur la Stabilité
|
||||||
|
- Taux d'erreur : +/- X%
|
||||||
|
- Disponibilité : +/- X%
|
||||||
|
|
||||||
|
## 🔄 Compatibilité
|
||||||
|
|
||||||
|
### Compatibilité Ascendante
|
||||||
|
- [ ] Compatible avec les versions précédentes
|
||||||
|
- [ ] Migration automatique
|
||||||
|
- [ ] Migration manuelle requise
|
||||||
|
|
||||||
|
### Compatibilité Descendante
|
||||||
|
- [ ] Compatible avec les futures versions
|
||||||
|
- [ ] API stable
|
||||||
|
- [ ] Configuration stable
|
||||||
|
|
||||||
|
## 🎯 Critères de Succès
|
||||||
|
|
||||||
|
- [ ] Critère 1
|
||||||
|
- [ ] Critère 2
|
||||||
|
- [ ] Critère 3
|
||||||
|
|
||||||
|
## 📝 Notes Supplémentaires
|
||||||
|
|
||||||
|
Informations supplémentaires importantes pour les reviewers.
|
||||||
|
|
||||||
|
## 🔗 Liens Utiles
|
||||||
|
|
||||||
|
- [Documentation](docs/)
|
||||||
|
- [Tests](tests/)
|
||||||
|
- [Issues liées](https://git.4nkweb.com/4nk/4NK_node/issues)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Merci pour votre contribution !** 🙏
|
||||||
|
@ -1,30 +1,345 @@
|
|||||||
name: CI
|
name: CI - 4NK Node
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches: [ main, develop ]
|
||||||
pull_request:
|
pull_request:
|
||||||
|
branches: [ main, develop ]
|
||||||
|
|
||||||
|
env:
|
||||||
|
RUST_VERSION: '1.70'
|
||||||
|
DOCKER_COMPOSE_VERSION: '2.20.0'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
rust:
|
# Job de vérification du code
|
||||||
|
code-quality:
|
||||||
|
name: Code Quality
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v3
|
||||||
- name: Rust toolchain
|
|
||||||
uses: dtolnay/rust-toolchain@stable
|
- name: Setup Rust
|
||||||
- name: Cache cargo
|
uses: actions-rs/toolchain@v1
|
||||||
uses: actions/cache@v4
|
with:
|
||||||
with:
|
toolchain: ${{ env.RUST_VERSION }}
|
||||||
path: |
|
override: true
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
- name: Cache Rust dependencies
|
||||||
target
|
uses: actions/cache@v3
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
with:
|
||||||
- name: Format check
|
path: |
|
||||||
run: cargo fmt --all -- --check
|
~/.cargo/registry
|
||||||
- name: Clippy
|
~/.cargo/git
|
||||||
run: cargo clippy --all-targets --all-features -- -D warnings
|
target
|
||||||
- name: Build
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||||
run: cargo build --verbose
|
restore-keys: |
|
||||||
- name: Test
|
${{ runner.os }}-cargo-
|
||||||
run: cargo test --all --verbose
|
|
||||||
|
- name: Run clippy
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo clippy --all-targets --all-features -- -D warnings
|
||||||
|
|
||||||
|
- name: Run rustfmt
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo fmt --all -- --check
|
||||||
|
|
||||||
|
- name: Check documentation
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo doc --no-deps
|
||||||
|
|
||||||
|
- name: Check for TODO/FIXME
|
||||||
|
run: |
|
||||||
|
if grep -r "TODO\|FIXME" . --exclude-dir=.git --exclude-dir=target; then
|
||||||
|
echo "Found TODO/FIXME comments. Please address them."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Job de tests unitaires
|
||||||
|
unit-tests:
|
||||||
|
name: Unit Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: ${{ env.RUST_VERSION }}
|
||||||
|
override: true
|
||||||
|
|
||||||
|
- name: Cache Rust dependencies
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.cargo/registry
|
||||||
|
~/.cargo/git
|
||||||
|
target
|
||||||
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-cargo-
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo test --lib --bins
|
||||||
|
|
||||||
|
- name: Run integration tests
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo test --tests
|
||||||
|
|
||||||
|
# Job de tests d'intégration
|
||||||
|
integration-tests:
|
||||||
|
name: Integration Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
docker:
|
||||||
|
image: docker:24.0.5
|
||||||
|
options: >-
|
||||||
|
--health-cmd "docker info"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 2375:2375
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build Docker images
|
||||||
|
run: |
|
||||||
|
docker build -t 4nk-node-bitcoin ./bitcoin
|
||||||
|
docker build -t 4nk-node-blindbit ./blindbit
|
||||||
|
docker build -t 4nk-node-sdk-relay -f ./sdk_relay/Dockerfile ..
|
||||||
|
|
||||||
|
- name: Run integration tests
|
||||||
|
run: |
|
||||||
|
# Tests de connectivité de base
|
||||||
|
./tests/run_connectivity_tests.sh || true
|
||||||
|
|
||||||
|
# Tests d'intégration
|
||||||
|
./tests/run_integration_tests.sh || true
|
||||||
|
|
||||||
|
- name: Upload test results
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: test-results
|
||||||
|
path: |
|
||||||
|
tests/logs/
|
||||||
|
tests/reports/
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
# Job de tests de sécurité
|
||||||
|
security-tests:
|
||||||
|
name: Security Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: ${{ env.RUST_VERSION }}
|
||||||
|
override: true
|
||||||
|
|
||||||
|
- name: Run cargo audit
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo audit --deny warnings
|
||||||
|
|
||||||
|
- name: Check for secrets
|
||||||
|
run: |
|
||||||
|
# Vérifier les secrets potentiels
|
||||||
|
if grep -r "password\|secret\|key\|token" . --exclude-dir=.git --exclude-dir=target --exclude=*.md; then
|
||||||
|
echo "Potential secrets found. Please review."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Check file permissions
|
||||||
|
run: |
|
||||||
|
# Vérifier les permissions sensibles
|
||||||
|
find . -type f -perm /0111 -name "*.conf" -o -name "*.key" -o -name "*.pem" | while read file; do
|
||||||
|
if [[ $(stat -c %a "$file") != "600" ]]; then
|
||||||
|
echo "Warning: $file has insecure permissions"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Job de build et test Docker
|
||||||
|
docker-build:
|
||||||
|
name: Docker Build & Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
docker:
|
||||||
|
image: docker:24.0.5
|
||||||
|
options: >-
|
||||||
|
--health-cmd "docker info"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 2375:2375
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and test Bitcoin Core
|
||||||
|
run: |
|
||||||
|
docker build -t 4nk-node-bitcoin:test ./bitcoin
|
||||||
|
docker run --rm 4nk-node-bitcoin:test bitcoin-cli --version
|
||||||
|
|
||||||
|
- name: Build and test Blindbit
|
||||||
|
run: |
|
||||||
|
docker build -t 4nk-node-blindbit:test ./blindbit
|
||||||
|
docker run --rm 4nk-node-blindbit:test --version || true
|
||||||
|
|
||||||
|
- name: Build and test SDK Relay
|
||||||
|
run: |
|
||||||
|
docker build -t 4nk-node-sdk-relay:test -f ./sdk_relay/Dockerfile ..
|
||||||
|
docker run --rm 4nk-node-sdk-relay:test --version || true
|
||||||
|
|
||||||
|
- name: Test Docker Compose
|
||||||
|
run: |
|
||||||
|
docker-compose config
|
||||||
|
docker-compose build --no-cache
|
||||||
|
|
||||||
|
# Job de tests de documentation
|
||||||
|
documentation-tests:
|
||||||
|
name: Documentation Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Check markdown links
|
||||||
|
run: |
|
||||||
|
# Vérification basique des liens markdown
|
||||||
|
find . -name "*.md" -exec grep -l "\[.*\](" {} \; | while read file; do
|
||||||
|
echo "Checking links in $file"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Check documentation structure
|
||||||
|
run: |
|
||||||
|
# Vérifier la présence des fichiers de documentation essentiels
|
||||||
|
required_files=(
|
||||||
|
"README.md"
|
||||||
|
"LICENSE"
|
||||||
|
"CONTRIBUTING.md"
|
||||||
|
"CHANGELOG.md"
|
||||||
|
"CODE_OF_CONDUCT.md"
|
||||||
|
"SECURITY.md"
|
||||||
|
"docs/INDEX.md"
|
||||||
|
"docs/INSTALLATION.md"
|
||||||
|
"docs/USAGE.md"
|
||||||
|
)
|
||||||
|
|
||||||
|
for file in "${required_files[@]}"; do
|
||||||
|
if [[ ! -f "$file" ]]; then
|
||||||
|
echo "Missing required documentation file: $file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Validate documentation
|
||||||
|
run: |
|
||||||
|
# Vérifier la cohérence de la documentation
|
||||||
|
if ! grep -q "4NK Node" README.md; then
|
||||||
|
echo "README.md should mention '4NK Node'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Job de release guard (cohérence release)
|
||||||
|
release-guard:
|
||||||
|
name: Release Guard
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [code-quality, unit-tests, documentation-tests]
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Ensure guard scripts are executable
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/release/guard.sh || true
|
||||||
|
chmod +x scripts/checks/version_alignment.sh || true
|
||||||
|
|
||||||
|
- name: Version alignment check
|
||||||
|
run: |
|
||||||
|
if [ -f scripts/checks/version_alignment.sh ]; then
|
||||||
|
./scripts/checks/version_alignment.sh
|
||||||
|
else
|
||||||
|
echo "No version alignment script (ok)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Release guard (CI verify)
|
||||||
|
env:
|
||||||
|
RELEASE_TYPE: ci-verify
|
||||||
|
run: |
|
||||||
|
if [ -f scripts/release/guard.sh ]; then
|
||||||
|
./scripts/release/guard.sh
|
||||||
|
else
|
||||||
|
echo "No guard script (ok)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Job de tests de performance
|
||||||
|
performance-tests:
|
||||||
|
name: Performance Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: ${{ env.RUST_VERSION }}
|
||||||
|
override: true
|
||||||
|
|
||||||
|
- name: Run performance tests
|
||||||
|
run: |
|
||||||
|
cd sdk_relay
|
||||||
|
cargo test --release --test performance_tests || true
|
||||||
|
|
||||||
|
- name: Check memory usage
|
||||||
|
run: |
|
||||||
|
# Tests de base de consommation mémoire
|
||||||
|
echo "Performance tests completed"
|
||||||
|
|
||||||
|
# Job de notification
|
||||||
|
notify:
|
||||||
|
name: Notify
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [code-quality, unit-tests, integration-tests, security-tests, docker-build, documentation-tests]
|
||||||
|
if: always()
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Notify success
|
||||||
|
if: needs.code-quality.result == 'success' && needs.unit-tests.result == 'success' && needs.integration-tests.result == 'success' && needs.security-tests.result == 'success' && needs.docker-build.result == 'success' && needs.documentation-tests.result == 'success'
|
||||||
|
run: |
|
||||||
|
echo "✅ All tests passed successfully!"
|
||||||
|
|
||||||
|
- name: Notify failure
|
||||||
|
if: needs.code-quality.result == 'failure' || needs.unit-tests.result == 'failure' || needs.integration-tests.result == 'failure' || needs.security-tests.result == 'failure' || needs.docker-build.result == 'failure' || needs.documentation-tests.result == 'failure'
|
||||||
|
run: |
|
||||||
|
echo "❌ Some tests failed!"
|
||||||
|
exit 1
|
||||||
|
@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug Report
|
|
||||||
about: Signaler un bug pour nous aider à améliorer 4NK Node
|
|
||||||
title: '[BUG] '
|
|
||||||
labels: ['bug', 'needs-triage']
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
> Ce fichier est un modèle (template). Adaptez les champs à votre projet dérivé.
|
|
||||||
|
|
||||||
## 🐛 Description du Bug
|
|
||||||
|
|
||||||
Description claire et concise du problème.
|
|
||||||
|
|
||||||
## 🔄 Étapes pour Reproduire
|
|
||||||
|
|
||||||
1. Aller à '...'
|
|
||||||
2. Cliquer sur '...'
|
|
||||||
3. Faire défiler jusqu'à '...'
|
|
||||||
4. Voir l'erreur
|
|
||||||
|
|
||||||
## ✅ Comportement Attendu
|
|
||||||
|
|
||||||
Description de ce qui devrait se passer.
|
|
||||||
|
|
||||||
## ❌ Comportement Actuel
|
|
||||||
|
|
||||||
Description de ce qui se passe actuellement.
|
|
||||||
|
|
||||||
## 📸 Capture d'Écran
|
|
||||||
|
|
||||||
Si applicable, ajoutez une capture d'écran pour expliquer votre problème.
|
|
||||||
|
|
||||||
## 💻 Informations Système
|
|
||||||
|
|
||||||
- **OS** : [ex: Ubuntu 20.04, macOS 12.0, Windows 11]
|
|
||||||
- **Docker** : [ex: 20.10.0]
|
|
||||||
- **Docker Compose** : [ex: 2.0.0]
|
|
||||||
- **Version 4NK Node** : [ex: v1.0.0]
|
|
||||||
- **Architecture** : [ex: x86_64, ARM64]
|
|
||||||
|
|
||||||
## 📋 Configuration
|
|
||||||
|
|
||||||
### Services Actifs
|
|
||||||
```bash
|
|
||||||
docker ps
|
|
||||||
```
|
|
||||||
|
|
||||||
### Variables d'Environnement
|
|
||||||
```bash
|
|
||||||
# Bitcoin Core
|
|
||||||
BITCOIN_NETWORK=signet
|
|
||||||
BITCOIN_RPC_PORT=18443
|
|
||||||
|
|
||||||
# Blindbit
|
|
||||||
BLINDBIT_PORT=8000
|
|
||||||
|
|
||||||
# SDK Relay
|
|
||||||
SDK_RELAY_PORTS=8090-8095
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 Logs
|
|
||||||
|
|
||||||
### Logs Pertinents
|
|
||||||
```
|
|
||||||
Logs pertinents ici
|
|
||||||
```
|
|
||||||
|
|
||||||
### Logs d'Erreur
|
|
||||||
```
|
|
||||||
Logs d'erreur ici
|
|
||||||
```
|
|
||||||
|
|
||||||
### Logs de Debug
|
|
||||||
```
|
|
||||||
Logs de debug ici (si RUST_LOG=debug)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 Tentatives de Résolution
|
|
||||||
|
|
||||||
- [ ] Redémarrage des services
|
|
||||||
- [ ] Nettoyage des volumes Docker
|
|
||||||
- [ ] Vérification de la connectivité réseau
|
|
||||||
- [ ] Mise à jour des dépendances
|
|
||||||
- [ ] Vérification de la configuration
|
|
||||||
|
|
||||||
## 📚 Contexte Supplémentaire
|
|
||||||
|
|
||||||
Toute autre information pertinente sur le problème.
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation](docs/)
|
|
||||||
- [Guide de Dépannage](docs/TROUBLESHOOTING.md)
|
|
||||||
- [Issues Similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci de votre contribution !** 🙏
|
|
@ -1,158 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature Request
|
|
||||||
about: Proposer une nouvelle fonctionnalité pour 4NK Node
|
|
||||||
title: '[FEATURE] '
|
|
||||||
labels: ['enhancement', 'needs-triage']
|
|
||||||
assignees: ''
|
|
||||||
---
|
|
||||||
|
|
||||||
> Ce fichier est un modèle (template). Adaptez les champs à votre projet dérivé.
|
|
||||||
|
|
||||||
## 🚀 Résumé
|
|
||||||
|
|
||||||
Description claire et concise de la fonctionnalité souhaitée.
|
|
||||||
|
|
||||||
## 💡 Motivation
|
|
||||||
|
|
||||||
Pourquoi cette fonctionnalité est-elle nécessaire ? Quels problèmes résout-elle ?
|
|
||||||
|
|
||||||
### Problèmes Actuels
|
|
||||||
- Problème 1
|
|
||||||
- Problème 2
|
|
||||||
- Problème 3
|
|
||||||
|
|
||||||
### Avantages de la Solution
|
|
||||||
- Avantage 1
|
|
||||||
- Avantage 2
|
|
||||||
- Avantage 3
|
|
||||||
|
|
||||||
## 🎯 Proposition
|
|
||||||
|
|
||||||
Description détaillée de la fonctionnalité proposée.
|
|
||||||
|
|
||||||
### Fonctionnalités Principales
|
|
||||||
- [ ] Fonctionnalité 1
|
|
||||||
- [ ] Fonctionnalité 2
|
|
||||||
- [ ] Fonctionnalité 3
|
|
||||||
|
|
||||||
### Interface Utilisateur
|
|
||||||
Description de l'interface utilisateur si applicable.
|
|
||||||
|
|
||||||
### API Changes
|
|
||||||
Description des changements d'API si applicable.
|
|
||||||
|
|
||||||
## 🔄 Alternatives Considérées
|
|
||||||
|
|
||||||
Autres solutions envisagées et pourquoi elles n'ont pas été choisies.
|
|
||||||
|
|
||||||
### Alternative 1
|
|
||||||
- **Description** : ...
|
|
||||||
- **Pourquoi rejetée** : ...
|
|
||||||
|
|
||||||
### Alternative 2
|
|
||||||
- **Description** : ...
|
|
||||||
- **Pourquoi rejetée** : ...
|
|
||||||
|
|
||||||
## 📊 Impact
|
|
||||||
|
|
||||||
### Impact sur les Utilisateurs
|
|
||||||
- Impact positif 1
|
|
||||||
- Impact positif 2
|
|
||||||
- Impact négatif potentiel (si applicable)
|
|
||||||
|
|
||||||
### Impact sur l'Architecture
|
|
||||||
- Changements nécessaires
|
|
||||||
- Compatibilité avec l'existant
|
|
||||||
- Performance
|
|
||||||
|
|
||||||
### Impact sur la Maintenance
|
|
||||||
- Complexité ajoutée
|
|
||||||
- Tests nécessaires
|
|
||||||
- Documentation requise
|
|
||||||
|
|
||||||
## 💻 Exemples d'Utilisation
|
|
||||||
|
|
||||||
### Cas d'Usage 1
|
|
||||||
```bash
|
|
||||||
# Exemple de commande ou configuration
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cas d'Usage 2
|
|
||||||
```python
|
|
||||||
# Exemple de code Python
|
|
||||||
```
|
|
||||||
|
|
||||||
### Cas d'Usage 3
|
|
||||||
```javascript
|
|
||||||
// Exemple de code JavaScript
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🧪 Tests
|
|
||||||
|
|
||||||
### Tests Nécessaires
|
|
||||||
- [ ] Tests unitaires
|
|
||||||
- [ ] Tests d'intégration
|
|
||||||
- [ ] Tests de performance
|
|
||||||
- [ ] Tests de sécurité
|
|
||||||
- [ ] Tests de compatibilité
|
|
||||||
|
|
||||||
### Scénarios de Test
|
|
||||||
- Scénario 1
|
|
||||||
- Scénario 2
|
|
||||||
- Scénario 3
|
|
||||||
|
|
||||||
## 📚 Documentation
|
|
||||||
|
|
||||||
### Documentation Requise
|
|
||||||
- [ ] Guide d'utilisation
|
|
||||||
- [ ] Documentation API
|
|
||||||
- [ ] Exemples de code
|
|
||||||
- [ ] Guide de migration
|
|
||||||
- [ ] FAQ
|
|
||||||
|
|
||||||
## 🔧 Implémentation
|
|
||||||
|
|
||||||
### Étapes Proposées
|
|
||||||
1. **Phase 1** : [Description]
|
|
||||||
2. **Phase 2** : [Description]
|
|
||||||
3. **Phase 3** : [Description]
|
|
||||||
|
|
||||||
### Estimation de Temps
|
|
||||||
- **Développement** : X jours/semaines
|
|
||||||
- **Tests** : X jours/semaines
|
|
||||||
- **Documentation** : X jours/semaines
|
|
||||||
- **Total** : X jours/semaines
|
|
||||||
|
|
||||||
### Ressources Nécessaires
|
|
||||||
- Développeur(s)
|
|
||||||
- Testeur(s)
|
|
||||||
- Documentateur(s)
|
|
||||||
- Infrastructure
|
|
||||||
|
|
||||||
## 🎯 Critères de Succès
|
|
||||||
|
|
||||||
Comment mesurer le succès de cette fonctionnalité ?
|
|
||||||
|
|
||||||
- [ ] Critère 1
|
|
||||||
- [ ] Critère 2
|
|
||||||
- [ ] Critère 3
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation existante](docs/)
|
|
||||||
- [Issues similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement)
|
|
||||||
- [Roadmap](https://git.4nkweb.com/4nk/4NK_node/projects)
|
|
||||||
- [Discussions](https://git.4nkweb.com/4nk/4NK_node/issues)
|
|
||||||
|
|
||||||
## 📋 Checklist
|
|
||||||
|
|
||||||
- [ ] J'ai vérifié que cette fonctionnalité n'existe pas déjà
|
|
||||||
- [ ] J'ai lu la documentation existante
|
|
||||||
- [ ] J'ai vérifié les issues similaires
|
|
||||||
- [ ] J'ai fourni des exemples d'utilisation
|
|
||||||
- [ ] J'ai considéré l'impact sur l'existant
|
|
||||||
- [ ] J'ai proposé des tests
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci de votre contribution à l'amélioration de 4NK Node !** 🌟
|
|
@ -1,183 +0,0 @@
|
|||||||
# Pull Request - 4NK Node
|
|
||||||
|
|
||||||
> Ce fichier est un modèle PR. Adaptez les sections à votre projet dérivé.
|
|
||||||
|
|
||||||
## 📋 Description
|
|
||||||
|
|
||||||
Description claire et concise des changements apportés.
|
|
||||||
|
|
||||||
### Type de Changement
|
|
||||||
- [ ] 🐛 Bug fix
|
|
||||||
- [ ] ✨ Nouvelle fonctionnalité
|
|
||||||
- [ ] 📚 Documentation
|
|
||||||
- [ ] 🧪 Tests
|
|
||||||
- [ ] 🔧 Refactoring
|
|
||||||
- [ ] 🚀 Performance
|
|
||||||
- [ ] 🔒 Sécurité
|
|
||||||
- [ ] 🎨 Style/UI
|
|
||||||
- [ ] 🏗️ Architecture
|
|
||||||
- [ ] 📦 Build/CI
|
|
||||||
|
|
||||||
### Composants Affectés
|
|
||||||
- [ ] Bitcoin Core
|
|
||||||
- [ ] Blindbit
|
|
||||||
- [ ] SDK Relay
|
|
||||||
- [ ] Tor
|
|
||||||
- [ ] Docker/Infrastructure
|
|
||||||
- [ ] Tests
|
|
||||||
- [ ] Documentation
|
|
||||||
- [ ] Scripts
|
|
||||||
|
|
||||||
## 🔗 Issue(s) Liée(s)
|
|
||||||
|
|
||||||
Fixes #(issue)
|
|
||||||
Relates to #(issue)
|
|
||||||
|
|
||||||
## 🧪 Tests
|
|
||||||
|
|
||||||
### Tests Exécutés
|
|
||||||
- [ ] Tests unitaires
|
|
||||||
- [ ] Tests d'intégration
|
|
||||||
- [ ] Tests de connectivité
|
|
||||||
- [ ] Tests externes
|
|
||||||
- [ ] Tests de performance
|
|
||||||
- [ ] Release Guard local (`RELEASE_TYPE=ci-verify scripts/release/guard.sh`)
|
|
||||||
|
|
||||||
### Commandes de Test
|
|
||||||
```bash
|
|
||||||
# Tests complets
|
|
||||||
./tests/run_all_tests.sh
|
|
||||||
|
|
||||||
# Tests spécifiques
|
|
||||||
./tests/run_unit_tests.sh
|
|
||||||
./tests/run_integration_tests.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Résultats des Tests
|
|
||||||
```
|
|
||||||
Résultats des tests ici
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📸 Captures d'Écran
|
|
||||||
|
|
||||||
Si applicable, ajoutez des captures d'écran pour les changements visuels.
|
|
||||||
|
|
||||||
## 🔧 Changements Techniques
|
|
||||||
|
|
||||||
### Fichiers Modifiés
|
|
||||||
- `fichier1.rs` - Description des changements
|
|
||||||
- `fichier2.py` - Description des changements
|
|
||||||
- `docker-compose.yml` - Description des changements
|
|
||||||
|
|
||||||
### Nouveaux Fichiers
|
|
||||||
- `nouveau_fichier.rs` - Description
|
|
||||||
- `nouveau_script.sh` - Description
|
|
||||||
|
|
||||||
### Fichiers Supprimés
|
|
||||||
- `ancien_fichier.rs` - Raison de la suppression
|
|
||||||
|
|
||||||
### Changements de Configuration
|
|
||||||
```yaml
|
|
||||||
# Exemple de changement de configuration
|
|
||||||
service:
|
|
||||||
new_option: value
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📚 Documentation
|
|
||||||
|
|
||||||
### Documentation Mise à Jour
|
|
||||||
- [ ] README.md
|
|
||||||
- [ ] docs/INSTALLATION.md
|
|
||||||
- [ ] docs/USAGE.md
|
|
||||||
- [ ] docs/API.md
|
|
||||||
- [ ] docs/ARCHITECTURE.md
|
|
||||||
|
|
||||||
### Nouvelle Documentation
|
|
||||||
- [ ] Nouveau guide créé
|
|
||||||
- [ ] Exemples ajoutés
|
|
||||||
- [ ] API documentée
|
|
||||||
|
|
||||||
## 🔍 Code Review Checklist
|
|
||||||
|
|
||||||
### Code Quality
|
|
||||||
- [ ] Le code suit les standards du projet
|
|
||||||
- [ ] Les noms de variables/fonctions sont clairs
|
|
||||||
- [ ] Les commentaires sont appropriés
|
|
||||||
- [ ] Pas de code mort ou commenté
|
|
||||||
- [ ] Gestion d'erreurs appropriée
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
- [ ] Pas de régression de performance
|
|
||||||
- [ ] Optimisations appliquées si nécessaire
|
|
||||||
- [ ] Tests de performance ajoutés
|
|
||||||
|
|
||||||
### Sécurité
|
|
||||||
- [ ] Pas de vulnérabilités introduites
|
|
||||||
- [ ] Validation des entrées utilisateur
|
|
||||||
- [ ] Gestion sécurisée des secrets
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
- [ ] Couverture de tests suffisante
|
|
||||||
- [ ] Tests pour les cas d'erreur
|
|
||||||
- [ ] Tests d'intégration si nécessaire
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
- [ ] Code auto-documenté
|
|
||||||
- [ ] Documentation mise à jour
|
|
||||||
- [ ] Exemples fournis
|
|
||||||
|
|
||||||
## 🚀 Déploiement
|
|
||||||
|
|
||||||
### Impact sur le Déploiement
|
|
||||||
- [ ] Aucun impact
|
|
||||||
- [ ] Migration de données requise
|
|
||||||
- [ ] Changement de configuration
|
|
||||||
- [ ] Redémarrage des services
|
|
||||||
|
|
||||||
### Étapes de Déploiement
|
|
||||||
```bash
|
|
||||||
# Étapes pour déployer les changements
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 Métriques
|
|
||||||
|
|
||||||
### Impact sur les Performances
|
|
||||||
- Temps de réponse : +/- X%
|
|
||||||
- Utilisation mémoire : +/- X%
|
|
||||||
- Utilisation CPU : +/- X%
|
|
||||||
|
|
||||||
### Impact sur la Stabilité
|
|
||||||
- Taux d'erreur : +/- X%
|
|
||||||
- Disponibilité : +/- X%
|
|
||||||
|
|
||||||
## 🔄 Compatibilité
|
|
||||||
|
|
||||||
### Compatibilité Ascendante
|
|
||||||
- [ ] Compatible avec les versions précédentes
|
|
||||||
- [ ] Migration automatique
|
|
||||||
- [ ] Migration manuelle requise
|
|
||||||
|
|
||||||
### Compatibilité Descendante
|
|
||||||
- [ ] Compatible avec les futures versions
|
|
||||||
- [ ] API stable
|
|
||||||
- [ ] Configuration stable
|
|
||||||
|
|
||||||
## 🎯 Critères de Succès
|
|
||||||
|
|
||||||
- [ ] Critère 1
|
|
||||||
- [ ] Critère 2
|
|
||||||
- [ ] Critère 3
|
|
||||||
|
|
||||||
## 📝 Notes Supplémentaires
|
|
||||||
|
|
||||||
Informations supplémentaires importantes pour les reviewers.
|
|
||||||
|
|
||||||
## 🔗 Liens Utiles
|
|
||||||
|
|
||||||
- [Documentation](docs/)
|
|
||||||
- [Tests](tests/)
|
|
||||||
- [Issues liées](https://git.4nkweb.com/4nk/4NK_node/issues)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Merci pour votre contribution !** 🙏
|
|
@ -1,14 +0,0 @@
|
|||||||
# LOCAL_OVERRIDES.yml — dérogations locales contrôlées (fichier modèle)
|
|
||||||
overrides:
|
|
||||||
- path: ".gitea/workflows/ci.yml"
|
|
||||||
reason: "spécificité d’environnement"
|
|
||||||
owner: "@maintainer_handle"
|
|
||||||
expires: "2025-12-31"
|
|
||||||
- path: "scripts/scripts/auto-ssh-push.sh"
|
|
||||||
reason: "flux particulier temporaire"
|
|
||||||
owner: "@maintainer_handle"
|
|
||||||
expires: "2025-10-01"
|
|
||||||
policy:
|
|
||||||
allow_only_listed_paths: true
|
|
||||||
require_expiry: true
|
|
||||||
audit_in_ci: true
|
|
@ -1,346 +0,0 @@
|
|||||||
# Template CI - 4NK Node (ce fichier est un modèle, adaptez selon votre projet)
|
|
||||||
name: CI - 4NK Node
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main, develop ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main, develop ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
RUST_VERSION: '1.70'
|
|
||||||
DOCKER_COMPOSE_VERSION: '2.20.0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Job de vérification du code
|
|
||||||
code-quality:
|
|
||||||
name: Code Quality
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Cache Rust dependencies
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
|
||||||
target
|
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-cargo-
|
|
||||||
|
|
||||||
- name: Run clippy
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo clippy --all-targets --all-features -- -D warnings
|
|
||||||
|
|
||||||
- name: Run rustfmt
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo fmt --all -- --check
|
|
||||||
|
|
||||||
- name: Check documentation
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo doc --no-deps
|
|
||||||
|
|
||||||
- name: Check for TODO/FIXME
|
|
||||||
run: |
|
|
||||||
if grep -r "TODO\|FIXME" . --exclude-dir=.git --exclude-dir=target; then
|
|
||||||
echo "Found TODO/FIXME comments. Please address them."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de tests unitaires
|
|
||||||
unit-tests:
|
|
||||||
name: Unit Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Cache Rust dependencies
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
|
||||||
target
|
|
||||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-cargo-
|
|
||||||
|
|
||||||
- name: Run unit tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --lib --bins
|
|
||||||
|
|
||||||
- name: Run integration tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --tests
|
|
||||||
|
|
||||||
# Job de tests d'intégration
|
|
||||||
integration-tests:
|
|
||||||
name: Integration Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
services:
|
|
||||||
docker:
|
|
||||||
image: docker:24.0.5
|
|
||||||
options: >-
|
|
||||||
--health-cmd "docker info"
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 5
|
|
||||||
ports:
|
|
||||||
- 2375:2375
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Build Docker images
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-bitcoin ./bitcoin
|
|
||||||
docker build -t 4nk-node-blindbit ./blindbit
|
|
||||||
docker build -t 4nk-node-sdk-relay -f ./sdk_relay/Dockerfile ..
|
|
||||||
|
|
||||||
- name: Run integration tests
|
|
||||||
run: |
|
|
||||||
# Tests de connectivité de base
|
|
||||||
./tests/run_connectivity_tests.sh || true
|
|
||||||
|
|
||||||
# Tests d'intégration
|
|
||||||
./tests/run_integration_tests.sh || true
|
|
||||||
|
|
||||||
- name: Upload test results
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
name: test-results
|
|
||||||
path: |
|
|
||||||
tests/logs/
|
|
||||||
tests/reports/
|
|
||||||
retention-days: 7
|
|
||||||
|
|
||||||
# Job de tests de sécurité
|
|
||||||
security-tests:
|
|
||||||
name: Security Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Run cargo audit
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo audit --deny warnings
|
|
||||||
|
|
||||||
- name: Check for secrets
|
|
||||||
run: |
|
|
||||||
# Vérifier les secrets potentiels
|
|
||||||
if grep -r "password\|secret\|key\|token" . --exclude-dir=.git --exclude-dir=target --exclude=*.md; then
|
|
||||||
echo "Potential secrets found. Please review."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Check file permissions
|
|
||||||
run: |
|
|
||||||
# Vérifier les permissions sensibles
|
|
||||||
find . -type f -perm /0111 -name "*.conf" -o -name "*.key" -o -name "*.pem" | while read file; do
|
|
||||||
if [[ $(stat -c %a "$file") != "600" ]]; then
|
|
||||||
echo "Warning: $file has insecure permissions"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Job de build et test Docker
|
|
||||||
docker-build:
|
|
||||||
name: Docker Build & Test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
services:
|
|
||||||
docker:
|
|
||||||
image: docker:24.0.5
|
|
||||||
options: >-
|
|
||||||
--health-cmd "docker info"
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 5
|
|
||||||
ports:
|
|
||||||
- 2375:2375
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Build and test Bitcoin Core
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-bitcoin:test ./bitcoin
|
|
||||||
docker run --rm 4nk-node-bitcoin:test bitcoin-cli --version
|
|
||||||
|
|
||||||
- name: Build and test Blindbit
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-blindbit:test ./blindbit
|
|
||||||
docker run --rm 4nk-node-blindbit:test --version || true
|
|
||||||
|
|
||||||
- name: Build and test SDK Relay
|
|
||||||
run: |
|
|
||||||
docker build -t 4nk-node-sdk-relay:test -f ./sdk_relay/Dockerfile ..
|
|
||||||
docker run --rm 4nk-node-sdk-relay:test --version || true
|
|
||||||
|
|
||||||
- name: Test Docker Compose
|
|
||||||
run: |
|
|
||||||
docker-compose config
|
|
||||||
docker-compose build --no-cache
|
|
||||||
|
|
||||||
# Job de tests de documentation
|
|
||||||
documentation-tests:
|
|
||||||
name: Documentation Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Check markdown links
|
|
||||||
run: |
|
|
||||||
# Vérification basique des liens markdown
|
|
||||||
find . -name "*.md" -exec grep -l "\[.*\](" {} \; | while read file; do
|
|
||||||
echo "Checking links in $file"
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Check documentation structure
|
|
||||||
run: |
|
|
||||||
# Vérifier la présence des fichiers de documentation essentiels
|
|
||||||
required_files=(
|
|
||||||
"README.md"
|
|
||||||
"LICENSE"
|
|
||||||
"CONTRIBUTING.md"
|
|
||||||
"CHANGELOG.md"
|
|
||||||
"CODE_OF_CONDUCT.md"
|
|
||||||
"SECURITY.md"
|
|
||||||
"docs/INDEX.md"
|
|
||||||
"docs/INSTALLATION.md"
|
|
||||||
"docs/USAGE.md"
|
|
||||||
)
|
|
||||||
|
|
||||||
for file in "${required_files[@]}"; do
|
|
||||||
if [[ ! -f "$file" ]]; then
|
|
||||||
echo "Missing required documentation file: $file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Validate documentation
|
|
||||||
run: |
|
|
||||||
# Vérifier la cohérence de la documentation
|
|
||||||
if ! grep -q "4NK Node" README.md; then
|
|
||||||
echo "README.md should mention '4NK Node'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de release guard (cohérence release)
|
|
||||||
release-guard:
|
|
||||||
name: Release Guard
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [code-quality, unit-tests, documentation-tests]
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Ensure guard scripts are executable
|
|
||||||
run: |
|
|
||||||
chmod +x scripts/release/guard.sh || true
|
|
||||||
chmod +x scripts/checks/version_alignment.sh || true
|
|
||||||
|
|
||||||
- name: Version alignment check
|
|
||||||
run: |
|
|
||||||
if [ -f scripts/checks/version_alignment.sh ]; then
|
|
||||||
./scripts/checks/version_alignment.sh
|
|
||||||
else
|
|
||||||
echo "No version alignment script (ok)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Release guard (CI verify)
|
|
||||||
env:
|
|
||||||
RELEASE_TYPE: ci-verify
|
|
||||||
run: |
|
|
||||||
if [ -f scripts/release/guard.sh ]; then
|
|
||||||
./scripts/release/guard.sh
|
|
||||||
else
|
|
||||||
echo "No guard script (ok)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Job de tests de performance
|
|
||||||
performance-tests:
|
|
||||||
name: Performance Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Run performance tests
|
|
||||||
run: |
|
|
||||||
cd sdk_relay
|
|
||||||
cargo test --release --test performance_tests || true
|
|
||||||
|
|
||||||
- name: Check memory usage
|
|
||||||
run: |
|
|
||||||
# Tests de base de consommation mémoire
|
|
||||||
echo "Performance tests completed"
|
|
||||||
|
|
||||||
# Job de notification
|
|
||||||
notify:
|
|
||||||
name: Notify
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [code-quality, unit-tests, integration-tests, security-tests, docker-build, documentation-tests]
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Notify success
|
|
||||||
if: needs.code-quality.result == 'success' && needs.unit-tests.result == 'success' && needs.integration-tests.result == 'success' && needs.security-tests.result == 'success' && needs.docker-build.result == 'success' && needs.documentation-tests.result == 'success'
|
|
||||||
run: |
|
|
||||||
echo "✅ All tests passed successfully!"
|
|
||||||
|
|
||||||
- name: Notify failure
|
|
||||||
if: needs.code-quality.result == 'failure' || needs.unit-tests.result == 'failure' || needs.integration-tests.result == 'failure' || needs.security-tests.result == 'failure' || needs.docker-build.result == 'failure' || needs.documentation-tests.result == 'failure'
|
|
||||||
run: |
|
|
||||||
echo "❌ Some tests failed!"
|
|
||||||
exit 1
|
|
@ -1,39 +0,0 @@
|
|||||||
# .gitea/workflows/template-sync.yml — synchronisation et contrôles d’intégrité (fichier modèle)
|
|
||||||
name: 4NK Template Sync
|
|
||||||
on:
|
|
||||||
schedule: # planification régulière
|
|
||||||
- cron: "0 4 * * 1" # exécution hebdomadaire (UTC)
|
|
||||||
workflow_dispatch: {} # déclenchement manuel
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-and-sync:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Lire TEMPLATE_VERSION et .4nk-sync.yml
|
|
||||||
# Doit charger ref courant, source_repo et périmètre paths
|
|
||||||
|
|
||||||
- name: Récupérer la version publiée du template/4NK_rules
|
|
||||||
# Doit comparer TEMPLATE_VERSION avec ref amont
|
|
||||||
|
|
||||||
- name: Créer branche de synchronisation si divergence
|
|
||||||
# Doit créer chore/template-sync-<date> et préparer un commit
|
|
||||||
|
|
||||||
- name: Synchroniser les chemins autoritatifs
|
|
||||||
# Doit mettre à jour .cursor/**, .gitea/**, AGENTS.md, scripts/**, docs/SSH_UPDATE.md
|
|
||||||
|
|
||||||
- name: Contrôles post-sync (bloquants)
|
|
||||||
# 1) Vérifier présence et exécutable des scripts/*.sh
|
|
||||||
# 2) Vérifier mise à jour CHANGELOG.md et docs/INDEX.md
|
|
||||||
# 3) Vérifier docs/SSH_UPDATE.md si scripts/** a changé
|
|
||||||
# 4) Vérifier absence de secrets en clair dans scripts/**
|
|
||||||
# 5) Vérifier manifest_checksum si publié
|
|
||||||
|
|
||||||
- name: Tests, lint, sécurité statique
|
|
||||||
# Doit exiger un état vert
|
|
||||||
|
|
||||||
- name: Ouvrir PR de synchronisation
|
|
||||||
# Titre: "[template-sync] chore: aligner .cursor/.gitea/AGENTS.md/scripts"
|
|
||||||
# Doit inclure résumé des fichiers modifiés et la version appliquée
|
|
||||||
|
|
||||||
- name: Mettre à jour TEMPLATE_VERSION (dans PR)
|
|
||||||
# Doit remplacer la valeur par la ref appliquée
|
|
@ -37,3 +37,4 @@ Voir aussi:
|
|||||||
|
|
||||||
- Refactor initial de la logique depuis `main.rs` vers `lib.rs` pour testabilité et séparation des responsabilités.
|
- Refactor initial de la logique depuis `main.rs` vers `lib.rs` pour testabilité et séparation des responsabilités.
|
||||||
- Durées TTL maintenant validées dans le handler, calcul d'expiration converti en `SystemTime` avant l'appel service.
|
- Durées TTL maintenant validées dans le handler, calcul d'expiration converti en `SystemTime` avant l'appel service.
|
||||||
|
|
||||||
|
@ -19,3 +19,4 @@
|
|||||||
- HTTP `/retrieve`: succès, clé invalide, clé absente.
|
- HTTP `/retrieve`: succès, clé invalide, clé absente.
|
||||||
|
|
||||||
Voir `api_json_spec.md` pour les schémas et contraintes détaillés.
|
Voir `api_json_spec.md` pour les schémas et contraintes détaillés.
|
||||||
|
|
||||||
|
@ -111,3 +111,4 @@
|
|||||||
## Codes d'état et messages
|
## Codes d'état et messages
|
||||||
- Les messages d'erreur sont informatifs mais ne divulguent pas d'informations sensibles.
|
- Les messages d'erreur sont informatifs mais ne divulguent pas d'informations sensibles.
|
||||||
- Les champs `message` sont destinés à l'humain; ne pas les parser côté client.
|
- Les champs `message` sont destinés à l'humain; ne pas les parser côté client.
|
||||||
|
|
||||||
|
@ -11,3 +11,4 @@
|
|||||||
- Service `StorageService` (I/O disque, TTL, nettoyage).
|
- Service `StorageService` (I/O disque, TTL, nettoyage).
|
||||||
- Serveur HTTP Tide (routes, état partagé).
|
- Serveur HTTP Tide (routes, état partagé).
|
||||||
- Nettoyage périodique (60s) basé sur fichiers `.meta`.
|
- Nettoyage périodique (60s) basé sur fichiers `.meta`.
|
||||||
|
|
||||||
|
@ -9,3 +9,4 @@ Le workflow `.gitea/workflows/docker.yml` requiert ces secrets:
|
|||||||
Configurer ces secrets dans les paramètres du dépôt (ou de l’organisation) côté Gitea.
|
Configurer ces secrets dans les paramètres du dépôt (ou de l’organisation) côté Gitea.
|
||||||
|
|
||||||
La cible d’image est `DOCKER_REGISTRY/sdk_storage:latest` (et multi-arch si activé).
|
La cible d’image est `DOCKER_REGISTRY/sdk_storage:latest` (et multi-arch si activé).
|
||||||
|
|
||||||
|
@ -6,3 +6,4 @@
|
|||||||
## Variables d'Environnement
|
## Variables d'Environnement
|
||||||
- `RUST_LOG` (optionnel): niveau de logs.
|
- `RUST_LOG` (optionnel): niveau de logs.
|
||||||
- Pour Docker, monter `/app/storage` si persistance souhaitée.
|
- Pour Docker, monter `/app/storage` si persistance souhaitée.
|
||||||
|
|
||||||
|
@ -13,3 +13,4 @@
|
|||||||
## Docker (optionnel)
|
## Docker (optionnel)
|
||||||
- Build: `docker build -t sdk_storage:local .`
|
- Build: `docker build -t sdk_storage:local .`
|
||||||
- Run: `docker run --rm -p 8081:8081 -v $PWD/storage:/app/storage sdk_storage:local`
|
- Run: `docker run --rm -p 8081:8081 -v $PWD/storage:/app/storage sdk_storage:local`
|
||||||
|
|
||||||
|
@ -10,3 +10,4 @@
|
|||||||
|
|
||||||
## Healthchecks
|
## Healthchecks
|
||||||
- Ajouter une route `/health` (évolution possible) ou ping sur `/retrieve` avec clé connue.
|
- Ajouter une route `/health` (évolution possible) ou ping sur `/retrieve` avec clé connue.
|
||||||
|
|
||||||
|
@ -11,3 +11,4 @@
|
|||||||
|
|
||||||
## Modification de la Configuration
|
## Modification de la Configuration
|
||||||
- Mettre à jour `docs/configuration.md` et secrets CI/CD.
|
- Mettre à jour `docs/configuration.md` et secrets CI/CD.
|
||||||
|
|
||||||
|
@ -3,3 +3,4 @@
|
|||||||
- Concepts de base: clés hex 64, valeurs hex, TTL en secondes.
|
- Concepts de base: clés hex 64, valeurs hex, TTL en secondes.
|
||||||
- API: `/store` (POST), `/retrieve/:key` (GET).
|
- API: `/store` (POST), `/retrieve/:key` (GET).
|
||||||
- Persistance: système de fichiers, sous-dossiers par préfixe de clé.
|
- Persistance: système de fichiers, sous-dossiers par préfixe de clé.
|
||||||
|
|
||||||
|
@ -4,3 +4,4 @@
|
|||||||
- TTL: sérialisé dans `*.meta` (UNIX timestamp secondes).
|
- TTL: sérialisé dans `*.meta` (UNIX timestamp secondes).
|
||||||
- Nettoyage: parcours des dossiers, suppression données expirées.
|
- Nettoyage: parcours des dossiers, suppression données expirées.
|
||||||
- Journalisation: sorties standard, intégration possible avec superviseur.
|
- Journalisation: sorties standard, intégration possible avec superviseur.
|
||||||
|
|
||||||
|
@ -3,3 +3,4 @@
|
|||||||
- Tests unitaires recommandés sur `StorageService` via répertoires temporaires.
|
- Tests unitaires recommandés sur `StorageService` via répertoires temporaires.
|
||||||
- Tests d'intégration HTTP optionnels via client HTTP.
|
- Tests d'intégration HTTP optionnels via client HTTP.
|
||||||
- Stratégies: cas TTL min/max, clés invalides, conflits de clé.
|
- Stratégies: cas TTL min/max, clés invalides, conflits de clé.
|
||||||
|
|
||||||
|
@ -7,3 +7,4 @@
|
|||||||
## Optimisations
|
## Optimisations
|
||||||
- Paramétrer la taille des blocs et la stratégie de fsync selon contraintes.
|
- Paramétrer la taille des blocs et la stratégie de fsync selon contraintes.
|
||||||
- Éviter les collisions de clés, supervision du cleanup TTL.
|
- Éviter les collisions de clés, supervision du cleanup TTL.
|
||||||
|
|
||||||
|
@ -19,3 +19,4 @@
|
|||||||
## Post-release
|
## Post-release
|
||||||
- Mettre à jour la documentation si nécessaire.
|
- Mettre à jour la documentation si nécessaire.
|
||||||
- Ouvrir une issue pour les améliorations/retours.
|
- Ouvrir une issue pour les améliorations/retours.
|
||||||
|
|
||||||
|
@ -8,3 +8,4 @@
|
|||||||
|
|
||||||
## Configuration Externe
|
## Configuration Externe
|
||||||
- Ports, sécurité, endpoints à exposer.
|
- Ports, sécurité, endpoints à exposer.
|
||||||
|
|
||||||
|
@ -7,3 +7,4 @@
|
|||||||
- Healthcheck HTTP: endpoint `/health` retourne `{ "message": "ok" }` et code 200.
|
- Healthcheck HTTP: endpoint `/health` retourne `{ "message": "ok" }` et code 200.
|
||||||
- Exposer métriques avec un reverse proxy/sidecar si nécessaire.
|
- Exposer métriques avec un reverse proxy/sidecar si nécessaire.
|
||||||
- Configurer l'orchestrateur pour vérifier périodiquement `/health`.
|
- Configurer l'orchestrateur pour vérifier périodiquement `/health`.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user