Se entiende como el proceso de automatizar la construcción y pruebas del código cada vez que un miembro del equipo realizar cambios sobre el control de versiones. CI alienta a los desarrolladores a compartir su código y pruebas unitarias haciendo un "merge" sobre sus cambios en un repositorio compartido de control de versiones.
CI es una de las mejores practicas ya que los desarrolladores de software suelen trabajar de forma solitaria y necesitas integrar sus cambios con el código base del resto del equipo.
https://docs.microsoft.com/en-us/devops/develop/what-is-continuous-integration
Para poder crear el proceso automatizado en github es necesario crear los directorios .github, workflows y el archivo node.js.yml → .github\\workflows\\node.js.yml
name: Node.js CI
on:
push:
#Rama en la que se correrá el proceso build y test con cada push
branches: [ main ]
pull_request:
#Rama en la que se correrá el proceso build y test con cada pull request
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
# See supported Node.js release schedule at <https://nodejs.org/en/about/releases/>
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
image: node:14-alpine
stages:
- test
unit_test:
script:
- npm install
- npm test
image: node:14-alpine
stages:
- test
services:
- postgres:latest
unit_test:
services:
- postgres:9.6
variables:
NODE_ENV: test
POSTGRES_HOST: postgres
POSTGRES_DB: test
POSTGRES_USER: test
POSTGRES_PASSWORD: passw@rd
script:
- npm install
- npx sequelize-cli db:migrate
- npm test
Más ejemplos con github actions:
https://dev.to/chathula/how-to-set-up-a-ci-cd-pipeline-for-a-node-js-app-with-github-actions-32h0