Gràcies pel teu interès a contribuir a connect-core! Aquest document proporciona les pautes per contribuir al projecte.
- Codi de conducta
- Com contribuir-hi?
- Informar d'errors
- Suggerir millores
- Pull Requests
- Estàndards de codi
- Validació local
- Commit conventions
Ens comprometem a proporcionar un entorn obert i acollidor per a tothom, independentment de:
- Edat, mida corporal, capacitat/discapacitat
- Ètnia, identitat i expressió de gènere
- Nivell d'experiència, educació
- Situació socioeconòmica
Comportaments que contribueixen a crear un entorn positiu:
- ✅ Utilitzar llenguatge inclusiu i acollidor
- ✅ Ser respectuós amb els punts de vista diferents
- ✅ Acceptar crítiques constructives
- ✅ Enfocar-se en el millor per a la comunitat
- ✅ Mostrar empatia cap als altres membres
Comportaments inacceptables:
- ❌ Llenguatge o imatges sexuals
- ❌ Trolling, comentaris insultants o atacs personals
- ❌ Assetjament públic o privat
- ❌ Publicar informació privada sense consentiment
- ❌ Altres conductes inapropiades
- Git instal·lat (
git --version) - Docker & Docker Compose (
docker --version,docker compose version) - Bash 4.0+ (
bash --version) - Compte de GitHub
-
Fes un fork del repositori
# A GitHub, fes clic a "Fork" # Després clona el teu fork git clone https://github.com/[EL_TEU_USUARI]/connect-core.git cd connect-core
-
Crea una branca per a la teva funcionalitat
git checkout -b feature/descripcio-clara # o per a errors: git checkout -b fix/descripcio-de-l-error -
Realitza canvis
- Edita els fitxers necessaris
- Mantén commits atòmics i amb missatges clars
- Valida localment (vegeu Validació local)
-
Puja al teu fork
git push origin feature/descripcio-clara
-
Obre un Pull Request
- Fes clic a "New Pull Request" a GitHub
- Completa la plantilla de PR
- Espera la revisió
- ✅ Verifica que no existeixi un issue similar
- ✅ Actualitza al codi més recent (
git pull origin master) - ✅ Reprodueix l'error amb el codi actual
- ✅ Recull informació de depuració
Obre un issue amb els següents detalls:
## Descripció
Breu descripció de l'error
## Passos per reproduir
1. ...
2. ...
3. ...
## Comportament actual
Què ha passat?
## Comportament esperat
Què hauria de passar?
## Informació del sistema
- OS: [ex: Ubuntu 22.04]
- Docker version: [ex: 24.0.0]
- Profile: [cpu/gpu-nvidia/gpu-amd]
## Logs<logs rellevants aquí>
## Informació addicional
Qualsevol context addicional
- ✅ Llegeix la documentació
- ✅ Busca suggeriments similars
- ✅ Considera l'abast del projecte
## Descripció breu
Una línia descrivint la millora
## Problema que resol
Quin problema d'usuari resol això?
## Solució proposada
Descripció de la millora
## Beneficis
- Benefici 1
- Benefici 2
## Exemples d'implementació
Pseudocodi o exemples si s'aplica
## Alternatives considerades
Altres solucions avaluades- El meu codi segueix els estàndards de codi del projecte
- He actualitzat la documentació
- Els meus commits tenen missatges clars i descriptius
- He validat localment amb
scripts/validate.sh - He fet proves amb
scripts/smoke-test.sh - No conté codi "en construcció" o temporal
- No afegeix dependències innecessàries
-
Validació automàtica (GitHub Actions)
- YAML validation
- Shell linting
- Dockerfile linting
- Docker Compose validation
- Security checks
-
Revisió manual
- Revisió de codi
- Avaluació de canvis
- Sol·licitud de canvis si és necessari
-
Merge
- Aprovació del maintainer
- Squash & merge a master
- CI/CD desplega els canvis
## Descripció
Breve descripció dels canvis
## Relacionat amb
- Closes #123
- Fixes #456
## Tipus de canvi
- [ ] Correcció d'error (Bug fix)
- [ ] Nova funcionalitat (Feature)
- [ ] Canvi de documentació
- [ ] Refactorització
## Canvis realitzats
- Canvi 1
- Canvi 2
- Canvi 3
## Proves realitzades
Descriu com has provat els canvis
## Screenshots (si s'aplica)
Afegeix captures de pantalla si hi ha canvis visuals
## Notes addicionals
Qualsevol informació addicional per als revisors#!/bin/bash
set -e # Surt en cas d'error
# Utilitzar comentaris descriptius
# Variables en MAJÚSCULES
CONFIG_FILE="/path/to/file"
# Funcions amb noms descriptius
print_info() {
echo "ℹ️ $1"
}
# Validació d'entrada
if [ -z "$1" ]; then
echo "Error: Falta paràmetre"
exit 1
fi
# Utilitzar cometes per a les variables
echo "Missatge: $CONFIG_FILE"Eina: shellcheck
shellcheck script.shFROM base-image:version
LABEL maintainer="maintainer@example.com"
LABEL description="Clear description"
# Utilitzar comentaris per a les seccions
USER root
# Combinar RUN quan sigui possible
RUN apt-get update && \
apt-get install -y \
package1 \
package2 && \
rm -rf /var/lib/apt/lists/*
# Exposar ports explícitament
EXPOSE 5678
# Definir volums
VOLUME ["/data"]
# Usuari no-root
USER appuser
ENTRYPOINT ["./entrypoint.sh"]
CMD ["start"]Eina: hadolint
hadolint Dockerfile# Indentació de 2 espais
version: "3.8"
services:
service-name:
image: image:version
# Organització lògica
container_name: service-name
restart: unless-stopped
# Variables d'entorn primer
environment:
- VAR_NAME=value
# Ports
ports:
- "5678:5678"
# Volums
volumes:
- volume-name:/path
# Healthcheck
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5678"]
interval: 30s
timeout: 10s
retries: 3
networks:
network-name:
driver: bridge{
"task-runners": [
{
"runner-type": "python",
"command": "/usr/bin/python3",
"args": ["--flag", "value"],
"health-check-server-port": "5682"
}
]
}Validar amb: python -m json.tool n8n-task-runners.json
- ✅ Títols jeràrquics clars
- ✅ Exemples de codi en blocs
- ✅ Enllaços interns a fitxers
- ✅ Taula de continguts per a documents llargs
- ✅ Notes destacades amb blockquotes
- ✅ Llistes estructurades
# Títol Principal
## Subtítol
### Subsubtítulo
**Text en negreta** i *en cursiva*
> Nota o cita important
### Exemple de codi
\`\`\`bash
# Codi Bash
echo "Hola"
\`\`\`
- Punt 1
- Punt 2
- Subpunt 2a# Executa totes les comprovacions
./scripts/validate.sh
# Sortida esperada:
# ✓ Validacions passades
# ⚠ Avisos (no bloqueja)
# ✗ Errors (bloqueja)# Prova ràpida de l'stack (requereix Docker)
./scripts/smoke-test.sh # Utilitza el perfil CPU
./scripts/smoke-test.sh gpu-nvidia # Utilitza GPU NVIDIA
./scripts/smoke-test.sh gpu-amd # Utilitza GPU AMD
# Comprova:
# - Inici de serveis
# - Health checks
# - Disponibilitat d'APIs# Shell
shellcheck *.sh
# Dockerfiles
hadolint Dockerfile*
# YAML
python3 -c "import yaml; yaml.safe_load(open('docker-compose.yml'))"
# JSON
python3 -m json.tool n8n-task-runners.json
# Markdown
markdownlint *.md# Verificar sintaxi
docker compose config --quiet
# Llistar serveis
docker compose config | grep "^ [a-z]"
# Simular inici (sense pull)
docker compose --profile cpu config --quiet<tipus>(<abast>): <assumpte>
<descripció>
<footer>
feat:Nova funcionalitatfix:Correcció d'errordocs:Canvis de documentacióstyle:Canvis de format (no lògica)refactor:Refactorització sense canvi funcionaltest:Canvis en tests/validacióci:Canvis en CI/CDchore:Canvis de build, dependències, etc.
# Feature
git commit -m "feat(n8n): afegir suport per a runners paral·lels"
# Bug fix
git commit -m "fix(docker-compose): corregir port d'Ollama"
# Documentation
git commit -m "docs: actualitzar guia d'instal·lació"
# Amb descripció
git commit -m "feat(comfyui): afegir suport per a nodes personalitzats
- Instal·la git durant la construcció
- Clona el repositori de nodes personalitzats
- Configura les rutes correctes
Closes #42"- Els canvis a master van a producció
- GitHub Actions valida i construeix imatges
- Les imatges es publiquen a GHCR
- Tags semàntics per a llançaments
NO obris un issue públic. Contacta amb nosaltres privadament:
- Email: [EMAIL_DEL_MANTENIDOR]
- GitHub Security Advisory: Utilitza l'opció "Report a vulnerability"
- Errors crítics: 24-48 hores
- Funcionalitats: 3-7 dies
- Documentació: 1-3 dies
- Depèn de la complexitat i disponibilitat
Sí, però:
- Justifica per què és necessària
- Considera alternatives lleugeres
- Actualitza els Dockerfiles corresponents
- Afegeix a la documentació
Gràcies per contribuir a connect-core! Cada contribució, sense importar la seva mida, ajuda a millorar el projecte.
Si tens preguntes, no dubtis a obrir un issue de discussió o contactar amb els mantenidors.
Esperem la teva contribució! ❤️