La integració contínua (CI) és una pràctica de desenvolupament de programari on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia. Cada integració és verificada per una construcció automàtica (incloent proves) per detectar errors tan aviat com sigui possible. En aquest tema, aprendrem com implementar CI per a un projecte GraphQL.
Objectius del tema
- Entendre els conceptes bàsics de la integració contínua.
- Configurar un pipeline de CI per a un projecte GraphQL.
- Automatitzar proves i desplegaments.
Conceptes bàsics de la integració contínua
Beneficis de la integració contínua
- Detecció primerenca d'errors: Les proves automàtiques ajuden a identificar errors immediatament després de cada integració.
- Millora de la qualitat del codi: La integració contínua fomenta la pràctica de proves freqüents, millorant la qualitat del codi.
- Desplegament més ràpid: Amb un pipeline de CI ben configurat, el codi es pot desplegar de manera més ràpida i segura.
Components clau de la integració contínua
- Repositori de codi: Un sistema de control de versions (com Git) on es guarda el codi.
- Servidor de CI: Una eina que automatitza la construcció i les proves del codi (com Jenkins, Travis CI, CircleCI).
- Scripts de construcció i proves: Scripts que defineixen com construir i provar el projecte.
Configuració d'un pipeline de CI per a un projecte GraphQL
Pas 1: Configuració del repositori de codi
Assegura't que el teu projecte GraphQL estigui en un repositori de codi, com GitHub, GitLab o Bitbucket.
Pas 2: Elecció d'una eina de CI
Hi ha diverses eines de CI disponibles. En aquest exemple, utilitzarem GitHub Actions per la seva integració directa amb GitHub.
Pas 3: Creació del workflow de GitHub Actions
Crea un fitxer .github/workflows/ci.yml
al teu repositori amb el següent contingut:
name: CI Pipeline on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test
Explicació del workflow
- on: Defineix quan s'executarà el workflow (en aquest cas, en cada push o pull request a la branca
main
). - jobs: Defineix els treballs que es realitzaran.
- build: El nom del treball.
- runs-on: Defineix el sistema operatiu en el qual s'executarà el treball (en aquest cas,
ubuntu-latest
). - steps: Defineix els passos del treball.
- Checkout code: Utilitza l'acció
actions/checkout
per obtenir el codi del repositori. - Set up Node.js: Configura Node.js a la versió especificada.
- Install dependencies: Instal·la les dependències del projecte.
- Run tests: Executa les proves definides en el projecte.
- Checkout code: Utilitza l'acció
- runs-on: Defineix el sistema operatiu en el qual s'executarà el treball (en aquest cas,
- build: El nom del treball.
Automatització de proves i desplegaments
Proves automàtiques
Les proves automàtiques són essencials per a la integració contínua. Assegura't de tenir un bon conjunt de proves unitàries i d'integració per al teu projecte GraphQL.
Desplegament automàtic
Després de passar totes les proves, pots configurar el pipeline de CI per desplegar automàticament el teu servidor GraphQL. Aquí tens un exemple de com afegir un pas de desplegament al workflow de GitHub Actions:
- name: Deploy to Heroku env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} run: | git remote add heroku https://git.heroku.com/<your-app-name>.git git push heroku main
Explicació del pas de desplegament
- Deploy to Heroku: El nom del pas.
- env: Defineix les variables d'entorn necessàries per al desplegament (en aquest cas, la clau API de Heroku).
- run: Defineix els comandos per desplegar l'aplicació a Heroku.
Exercici pràctic
Objectiu
Configurar un pipeline de CI per a un projecte GraphQL utilitzant GitHub Actions.
Passos
- Crea un repositori de codi per al teu projecte GraphQL.
- Configura el workflow de GitHub Actions seguint els passos descrits anteriorment.
- Afegeix proves unitàries al teu projecte.
- Configura el desplegament automàtic a una plataforma com Heroku.
Solució
La solució a aquest exercici es troba en el codi del workflow de GitHub Actions proporcionat anteriorment. Assegura't de substituir <your-app-name>
pel nom de la teva aplicació a Heroku.
Resum
En aquest tema, hem après els conceptes bàsics de la integració contínua i com configurar un pipeline de CI per a un projecte GraphQL utilitzant GitHub Actions. Hem vist com automatitzar proves i desplegaments per millorar la qualitat del codi i accelerar el procés de desenvolupament. Amb aquests coneixements, estàs preparat per implementar CI en els teus projectes GraphQL i beneficiar-te dels seus avantatges.
Curs de GraphQL
Mòdul 1: Introducció a GraphQL
- Què és GraphQL?
- GraphQL vs REST
- Configuració d'un servidor GraphQL
- Conceptes bàsics de l'esquema de GraphQL
Mòdul 2: Conceptes bàsics
Mòdul 3: Disseny avançat d'esquemes
Mòdul 4: Treballant amb dades
- Connexió a una base de dades
- Estratègies de recuperació de dades
- Agrupació i emmagatzematge en memòria cau
- Gestió d'errors
Mòdul 5: Rendiment i seguretat
Mòdul 6: Eines i ecosistema
Mòdul 7: Proves i desplegament
- Proves unitàries de resolvers
- Proves d'integració
- Integració contínua
- Desplegament de servidors GraphQL