diff --git a/.gitea/ISSUE_TEMPLATE/bug_report.md b/.gitea/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..da4e36d8 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,97 @@ +--- +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 !** 🙏 diff --git a/.gitea/ISSUE_TEMPLATE/feature_request.md b/.gitea/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..6041f4ab --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,156 @@ +--- +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 !** 🌟 diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..621d01af --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,180 @@ +# 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 !** 🙏 diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 00000000..3f529e5d --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,313 @@ +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 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 diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1f4d9ed2..da4e36d8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -90,7 +90,7 @@ Toute autre information pertinente sur le problème. - [Documentation](docs/) - [Guide de Dépannage](docs/TROUBLESHOOTING.md) -- [Issues Similaires](../../issues?q=is%3Aissue+is%3Aopen+label%3Abug) +- [Issues Similaires](https://git.4nkweb.com/4nk/4NK_node/issues?q=is%3Aissue+is%3Aopen+label%3Abug) --- diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 19044728..6041f4ab 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -138,9 +138,9 @@ Comment mesurer le succès de cette fonctionnalité ? ## 🔗 Liens Utiles - [Documentation existante](docs/) -- [Issues similaires](../../issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement) -- [Roadmap](../../projects) -- [Discussions](../../discussions) +- [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 diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index bf51687a..621d01af 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -173,7 +173,7 @@ Informations supplémentaires importantes pour les reviewers. - [Documentation](docs/) - [Tests](tests/) -- [Issues liées](../../issues) +- [Issues liées](https://git.4nkweb.com/4nk/4NK_node/issues) --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2dea5cdf..3ae89b87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,17 @@ name: CI - 4NK Node -on: - push: - branches: [ main, develop ] - pull_request: - branches: [ main, develop ] +# Note: Ce workflow est configuré pour GitHub Actions +# Pour Gitea, utilisez Gitea Actions ou configurez un runner CI/CD externe +# +# Configuration Gitea Actions (si disponible): +# on: +# push: +# branches: [ main, develop ] +# pull_request: +# branches: [ main, develop ] + +# Configuration pour runner externe (Jenkins, GitLab CI, etc.) +# Décommentez et adaptez selon votre infrastructure CI/CD env: RUST_VERSION: '1.70' @@ -15,17 +22,17 @@ jobs: code-quality: name: Code Quality runs-on: ubuntu-latest - + steps: - name: Checkout code uses: actions/checkout@v4 - + - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_VERSION }} override: true - + - name: Cache Rust dependencies uses: actions/cache@v3 with: @@ -36,22 +43,22 @@ jobs: 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 @@ -63,17 +70,17 @@ jobs: unit-tests: name: Unit Tests runs-on: ubuntu-latest - + steps: - name: Checkout code uses: actions/checkout@v4 - + - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_VERSION }} override: true - + - name: Cache Rust dependencies uses: actions/cache@v3 with: @@ -84,12 +91,12 @@ jobs: 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 @@ -99,7 +106,7 @@ jobs: integration-tests: name: Integration Tests runs-on: ubuntu-latest - + services: docker: image: docker:24.0.5 @@ -110,28 +117,28 @@ jobs: --health-retries 5 ports: - 2375:2375 - + steps: - name: Checkout code uses: actions/checkout@v4 - + - 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() @@ -146,22 +153,22 @@ jobs: security-tests: name: Security Tests runs-on: ubuntu-latest - + steps: - name: Checkout code uses: actions/checkout@v4 - + - 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 @@ -169,7 +176,7 @@ jobs: echo "Potential secrets found. Please review." exit 1 fi - + - name: Check file permissions run: | # Vérifier les permissions sensibles @@ -183,7 +190,7 @@ jobs: docker-build: name: Docker Build & Test runs-on: ubuntu-latest - + services: docker: image: docker:24.0.5 @@ -194,35 +201,35 @@ jobs: --health-retries 5 ports: - 2375:2375 - + steps: - name: Checkout code uses: actions/checkout@v4 - + - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 - + - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - + - 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 @@ -232,17 +239,17 @@ jobs: documentation-tests: name: Documentation Tests runs-on: ubuntu-latest - + steps: - name: Checkout code uses: actions/checkout@v4 - + - name: Check markdown links uses: gaurav-nelson/github-action-markdown-link-check@v1 with: use-verbose-mode: 'yes' use-quiet-mode: 'yes' - + - name: Check documentation structure run: | # Vérifier la présence des fichiers de documentation essentiels @@ -257,14 +264,14 @@ jobs: "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 @@ -277,22 +284,22 @@ jobs: performance-tests: name: Performance Tests runs-on: ubuntu-latest - + steps: - name: Checkout code uses: actions/checkout@v4 - + - 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 @@ -304,35 +311,30 @@ jobs: runs-on: ubuntu-latest needs: [code-quality, unit-tests, integration-tests, security-tests, docker-build, documentation-tests] if: github.ref == 'refs/heads/main' && github.event_name == 'push' - + steps: - name: Checkout code uses: actions/checkout@v4 - - - name: Create release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: v${{ github.run_number }} - release_name: Release v${{ github.run_number }} - body: | - Automated release from CI/CD pipeline - - Changes in this release: - - See CHANGELOG.md for details - draft: false - prerelease: false - - - name: Upload release artifacts - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./archive/4NK_node_v${{ github.run_number }}.tar.gz - asset_name: 4NK_node_v${{ github.run_number }}.tar.gz - asset_content_type: application/gzip + + # Note: Pour Gitea, utilisez l'API Gitea ou créez les releases manuellement + # - name: Create release + # run: | + # # Script pour créer une release via l'API Gitea + # curl -X POST "https://git.4nkweb.com/api/v1/repos/4nk/4NK_node/releases" \ + # -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + # -H "Content-Type: application/json" \ + # -d '{ + # "tag_name": "v${{ github.run_number }}", + # "name": "Release v${{ github.run_number }}", + # "body": "Automated release from CI/CD pipeline\\n\\nChanges in this release:\\n- See CHANGELOG.md for details", + # "draft": false, + # "prerelease": false + # }' + + # - name: Upload release artifacts + # run: | + # # Script pour uploader les artefacts via l'API Gitea + # # Implémentez selon votre infrastructure # Job de notification notify: @@ -340,13 +342,13 @@ jobs: runs-on: ubuntu-latest needs: [deploy] if: always() - + steps: - name: Notify success if: needs.deploy.result == 'success' run: | echo "✅ All tests passed and deployment successful!" - + - name: Notify failure if: needs.deploy.result == 'failure' run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 158ca709..ee635924 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -222,5 +222,5 @@ Pour contribuer au changelog, suivez le format existant et ajoutez vos changemen - [Documentation](docs/) - [Guide de Contribution](CONTRIBUTING.md) -- [Issues](../../issues) -- [Releases](../../releases) +- [Issues](https://git.4nkweb.com/4nk/4NK_node/issues) +- [Releases](https://git.4nkweb.com/4nk/4NK_node/releases) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 95a740ef..752128d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,13 +49,13 @@ Nous accueillons différents types de contributions : ### Fork et Clone ```bash -# 1. Fork le repository sur GitHub/GitLab +# 1. Fork le repository sur Gitea # 2. Clone votre fork -git clone https://github.com/votre-username/4NK_node.git +git clone https://git.4nkweb.com/votre-username/4NK_node.git cd 4NK_node # 3. Ajouter le repository original comme upstream -git remote add upstream https://github.com/4nk/4NK_node.git +git remote add upstream https://git.4nkweb.com/4nk/4NK_node.git ``` ### Branches @@ -73,7 +73,7 @@ git checkout -b fix/nom-du-bug ```bash # 1. Cloner le repository -git clone https://github.com/4nk/4NK_node.git +git clone https://git.4nkweb.com/4nk/4NK_node.git cd 4NK_node # 2. Démarrer l'infrastructure @@ -339,9 +339,9 @@ Utilisez le [Semantic Versioning](https://semver.org/) : ### Communication - **Issues** - Pour les bugs et fonctionnalités -- **Discussions** - Pour les questions générales +- **Discussions** - Pour les questions générales (via les issues) - **Pull Requests** - Pour les contributions -- **Wiki** - Pour la documentation collaborative +- **Wiki** - Pour la documentation collaborative (si activé sur Gitea) ### Code de Conduite @@ -359,8 +359,8 @@ Utilisez le [Semantic Versioning](https://semver.org/) : ## 🆘 Besoin d'Aide ? - Consultez la [documentation](docs/) -- Vérifiez les [issues existantes](../../issues) -- Posez une question dans les [discussions](../../discussions) +- Vérifiez les [issues existantes](https://git.4nkweb.com/4nk/4NK_node/issues) +- Posez une question via les [issues](https://git.4nkweb.com/4nk/4NK_node/issues/new) - Contactez l'équipe de maintenance ## 📄 Licence diff --git a/docs/GITEA_SETUP.md b/docs/GITEA_SETUP.md new file mode 100644 index 00000000..20b7340b --- /dev/null +++ b/docs/GITEA_SETUP.md @@ -0,0 +1,279 @@ +# Configuration Gitea - 4NK Node + +Ce guide explique comment configurer le projet 4NK Node spécifiquement pour Gitea (git.4nkweb.com). + +## 🎯 Configuration Gitea + +### Repository Configuration + +Le projet est hébergé sur : **https://git.4nkweb.com/4nk/4NK_node** + +### Branches Principales + +- **`main`** - Branche principale, code stable +- **`develop`** - Branche de développement (optionnelle) +- **`feature/*`** - Branches de fonctionnalités +- **`fix/*`** - Branches de corrections + +### Protection des Branches + +Configurez les protections suivantes sur Gitea : + +1. **Branche `main`** : + - ✅ Require pull request reviews before merging + - ✅ Require status checks to pass before merging + - ✅ Require branches to be up to date before merging + - ✅ Restrict pushes that create files + - ✅ Restrict pushes that delete files + +2. **Branche `develop`** (si utilisée) : + - ✅ Require pull request reviews before merging + - ✅ Require status checks to pass before merging + +## 🔧 Configuration CI/CD + +### Option 1 : Gitea Actions (Recommandé) + +Si votre instance Gitea supporte Gitea Actions : + +```yaml +# .gitea/workflows/ci.yml +name: CI - 4NK Node + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main, develop ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - name: Run tests + run: | + cd sdk_relay + cargo test +``` + +### Option 2 : Runner Externe + +Configurez un runner CI/CD externe (Jenkins, GitLab CI, etc.) : + +```bash +# Exemple avec Jenkins +pipeline { + agent any + stages { + stage('Checkout') { + steps { + checkout scm + } + } + stage('Test') { + steps { + sh 'cd sdk_relay && cargo test' + } + } + stage('Build') { + steps { + sh 'docker-compose build' + } + } + } +} +``` + +### Option 3 : GitHub Actions (Migration) + +Si vous souhaitez utiliser GitHub Actions avec un miroir : + +1. Créez un repository miroir sur GitHub +2. Configurez un webhook pour synchroniser automatiquement +3. Utilisez le workflow GitHub Actions existant + +## 📋 Templates Gitea + +### Issues Templates + +Les templates d'issues sont stockés dans `.gitea/ISSUE_TEMPLATE/` : + +- `bug_report.md` - Pour signaler des bugs +- `feature_request.md` - Pour proposer des fonctionnalités + +### Pull Request Template + +Le template de PR est dans `.gitea/PULL_REQUEST_TEMPLATE.md` + +## 🔗 Intégrations Gitea + +### Webhooks + +Configurez des webhooks pour : + +1. **Notifications** - Slack, Discord, Email +2. **CI/CD** - Déclenchement automatique des builds +3. **Deployment** - Déploiement automatique + +### API Gitea + +Utilisez l'API Gitea pour l'automatisation : + +```bash +# Exemple : Créer une release +curl -X POST "https://git.4nkweb.com/api/v1/repos/4nk/4NK_node/releases" \ + -H "Authorization: token YOUR_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "tag_name": "v1.0.0", + "name": "Release v1.0.0", + "body": "Description de la release" + }' +``` + +## 🏷️ Labels et Milestones + +### Labels Recommandés + +- **bug** - Problèmes et bugs +- **enhancement** - Nouvelles fonctionnalités +- **documentation** - Amélioration de la documentation +- **good first issue** - Pour les nouveaux contributeurs +- **help wanted** - Besoin d'aide +- **priority: high** - Priorité élevée +- **priority: low** - Priorité basse +- **status: blocked** - Bloqué +- **status: in progress** - En cours +- **status: ready for review** - Prêt pour review + +### Milestones + +- **v1.0.0** - Version stable initiale +- **v1.1.0** - Améliorations et corrections +- **v2.0.0** - Nouvelles fonctionnalités majeures + +## 🔐 Sécurité Gitea + +### Permissions + +1. **Repository** : + - Public pour l'open source + - Issues et PR activés + - Wiki activé (optionnel) + +2. **Collaborateurs** : + - Maintainers : Write access + - Contributors : Read access + - Public : Read access + +### Secrets + +Stockez les secrets sensibles dans les variables d'environnement Gitea : + +- `DOCKER_USERNAME` +- `DOCKER_PASSWORD` +- `GITEA_TOKEN` +- `SLACK_WEBHOOK_URL` + +## 📊 Monitoring et Analytics + +### Gitea Analytics + +- **Traffic** - Vues du repository +- **Contributors** - Contributeurs actifs +- **Issues** - Statistiques des issues +- **Pull Requests** - Statistiques des PR + +### Intégrations Externes + +- **Codecov** - Couverture de code +- **SonarCloud** - Qualité du code +- **Dependabot** - Mise à jour des dépendances + +## 🚀 Workflow de Contribution + +### 1. Fork et Clone + +```bash +# Fork sur Gitea +# Puis clone +git clone https://git.4nkweb.com/votre-username/4NK_node.git +cd 4NK_node + +# Ajouter l'upstream +git remote add upstream https://git.4nkweb.com/4nk/4NK_node.git +``` + +### 2. Développement + +```bash +# Créer une branche +git checkout -b feature/nouvelle-fonctionnalite + +# Développer +# ... + +# Commiter +git commit -m "feat: ajouter nouvelle fonctionnalité" + +# Pousser +git push origin feature/nouvelle-fonctionnalite +``` + +### 3. Pull Request + +1. Créer une PR sur Gitea +2. Remplir le template +3. Attendre les reviews +4. Merge après approbation + +## 🔧 Configuration Avancée + +### Gitea Configuration + +```ini +# gitea.ini +[repository] +DEFAULT_BRANCH = main +PUSH_CREATE_DELETE_PROTECTED_BRANCH = true + +[repository.pull-request] +ENABLE_WHITELIST = true +WHITELIST_USERS = admin,maintainer +``` + +### Webhooks Configuration + +```yaml +# webhook.yml +url: "https://your-ci-server.com/webhook" +content_type: "application/json" +secret: "your-secret" +events: + - push + - pull_request + - issues +``` + +## 📚 Ressources + +### Documentation Gitea + +- [Gitea Documentation](https://docs.gitea.io/) +- [Gitea API](https://docs.gitea.io/en-us/api-usage/) +- [Gitea Actions](https://docs.gitea.io/en-us/actions/) + +### Outils Utiles + +- **Gitea CLI** - Interface en ligne de commande +- **Gitea SDK** - SDK pour l'automatisation +- **Gitea Runner** - Runner pour les actions + +--- + +**Configuration Gitea terminée ! Le projet est prêt pour l'open source sur git.4nkweb.com** 🚀 diff --git a/docs/INDEX.md b/docs/INDEX.md index 03ccccc4..e9aa98c2 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -67,6 +67,15 @@ Guide de sécurité et bonnes pratiques. - **Audit et monitoring de sécurité** - **Bonnes pratiques** +### 🐙 [Configuration Gitea](GITEA_SETUP.md) +Guide de configuration spécifique pour Gitea. +- **Configuration du repository Gitea** +- **Templates d'issues et pull requests** +- **Configuration CI/CD avec Gitea Actions** +- **Intégrations et webhooks** +- **Workflow de contribution** +- **Sécurité et permissions** + ### 📈 [Performance](PERFORMANCE.md) Guide d'optimisation et monitoring des performances. - **Optimisation des ressources**