Quan configurem workflows de CI/CD amb GitHub Actions, és habitual haver d’afegir claus, tokens o altres secrets que el nostre projecte necessita per funcionar. Però aquests secrets han de mantenir-se segurs i no exposar-los al codi ni als logs públics.
1. Què són els secrets d’entorn?
Són variables que contenen informació sensible (com ara tokens d’API, claus SSH, contrasenyes) que es configuren al repositori GitHub i es poden utilitzar dins dels workflows sense que es mostrin o filtrin.
2. On afegir els secrets a GitHub?
Al repositori de GitHub, a Settings > Secrets and variables > Actions pots crear secrets amb un nom i el seu valor. Per exemple:
DEPLOY_SSH_KEYAPI_TOKENDB_PASSWORD
3. Com utilitzar els secrets als workflows?
En el fitxer YAML del workflow, pots accedir als secrets amb la sintaxi ${{ secrets.NOM_SECRET }}. Ex:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Usar secret d’API
run: echo "El token és ${{ secrets.API_TOKEN }}"
Important: no mostris mai els secrets directament en logs ni prints. Evita fer echo directe d’un secret.
4. Exemple segur: ús d’una clau SSH per desplegar
Suposem que tens la clau privada SSH com a secret DEPLOY_SSH_KEY. Pots fer això per preparar l’accés SSH al servidor:
- name: Configura SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H example.com >> ~/.ssh/known_hosts
Aquest pas crea la clau privada en local dins del runner i afegeix el servidor a la llista de hosts confiables.
5. Consells per mantenir la seguretat dels secrets
- No comparteixis els secrets fora del repositori ni amb persones que no siguin de confiança.
- Revisa els permisos dels runners i limita l’accés als secrets.
- Si creus que un secret s’ha compromès, canvia’l immediatament i actualitza el secret a GitHub.
- No incloguis secrets directament al codi o fitxers públics.
6. Bonus: Variables d’entorn per a diferents entorns
Pots crear secrets específics per a entorns (staging, producció) i usar condicions a GitHub Actions per canviar variables segons la branca o l’entorn. Exemple simplificat:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Establir entorn
run: echo "ENTORN=staging" >> $GITHUB_ENV
- name: Usar secret segons entorn
run: |
if [ "$ENTORN" = "staging" ]; then
echo "Usant token staging"
export TOKEN="${{ secrets.STAGING_API_TOKEN }}"
else
echo "Usant token producció"
export TOKEN="${{ secrets.PROD_API_TOKEN }}"
fi
Conclusió
Els secrets d’entorn són claus per protegir informació sensible quan fem servir CI/CD amb GitHub Actions. Configurar-los correctament i evitar exposar-los en el codi o logs és fonamental per mantenir la seguretat dels teus projectes Laravel o qualsevol altre.
Si vols aprofundir més, aquí tens un exemple complet i pràctic que faig servir habitualment.



