No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
10 Hrs
26 Min
36 Seg

Automatizacion con GitLab Cl

24/53
Recursos

Aportes 37

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Mi .gitlab-ci.yml

image: node:11.1.0

stages:
  - install
  - test

install-dependencies:
  stage: install
  script:
    - npm install
  artifacts:
    expire_in: 1hr
    paths:
      - node_modules/
    cache:
      paths:
        - node_modules/

test-apps:
  stage: test
  dependencies:
    - install-dependencies
  before_script:
    - apt-get update && apt-get install -y apt-transport-https
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
    - sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/stable main" >> /etc/app/sources.list.d/google.list'
    - apt get update && apt-get install -y google-chrome-stable
  script:
    - npm run test:ci

En el siguiente enlace se puede ver la configuración completa del .gitlab-ci.yml, realizada por el profesor David

https://gitlab.com/platzi-gitlab-live/platzi-devops/blob/master/.gitlab-ci.yml

Precisamente son los temas que aburren con la elaboración de contenidos de cursos, de repente en medio de un curso aparece contenido como éste que por ejemplo en mi caso me deja completamente perdido. Igual pasa en otros cursos.

Hola a todos,

A continuacion le paso las indicaciones para tener el mismo proyecto que se utiliza en el curso:

1. Descarga Node.js preferentemente la version estable. **Link **-> https://nodejs.org/es/. La version que se publica el comentario es la version 10.15.3 LTS.

2. Para verificar si tiene instalado Node.js, ejecute este comando en su terminal node -v y para confirmar que tiene npm instalado, puede ejecutar este comando en su terminal: npm -v

3. Descargar Angular, ejecute este comando en su terminal npm install -g @angular/cli. La version que se descarga desde que se publica el comentario es la version 7.3.8.

4. Crear el proyecto Angular, ejecute este comando en su terminal ng new ProyectoGitlabCurso. Cabe aclara que el nombre del proyecto (ProyectoGitlabCurso) pueden cambiarlo a su gusto.

5. Abrir el proyecto con un editor de codigo a su gusto y modificar el archivo karma.conf.js (ubicado en la carpeta /src) la siguiente porcion de codigo:

customLaunchers:{ ChromeHeadlessNoSandbox:{ base: 'ChromeHeadless', flags: ['--no-sandbox'] } },

6. Crear el archivo .gitlab-ci.yml en el raiz del proyecto para que GitLab lo detecte. El codigo del archivo es el siguiente:

`image: node:11.1.0
stages:

  • install
  • test
    install-dependencies:
    stage: install
    script:
    - npm install
    artifacts:
    expire_in: 1hr
    paths:
    - node_modules/
    cache:
    paths:
    - node_modules/
    test-apps:
    stage: test
    variables:
    CHROME_BIN: google-chrome
    dependencies:
    - install-dependencies
    before_script:
    - apt-get update && apt-get install -y apt-transport-https
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
    - sh -c ‘echo “deb https://dl.google.com/linux/chrome/deb/ stable main” >> /etc/apt/sources.list.d/google.list’
    - apt-get update && apt-get install -y google-chrome-stable
    script:
    - npm run test:ci`
    7. Verificar el codigo del archivo .gitlab-ci.yml en la siguiente Link https://gitlab.com/<Usuario>/<Proyecto>/-/ci/lint . Cabe aclarar que <Usuario> debera ser reemplazo por el usuario logueado y <Proyecto> en el cual se esta trabajando.

8. Subir los cambios a GitLab ejectando este comando en su terminal:
git status git add -A git commit -m "Subiendo el archivo .gitlab-ci.yml" git push

**9. ** Ingresar al Proyecto GitLab a la opcion CI/CD -> Pipelines verificando que se corra la configuracion realizada.

David, tengo una duda, cuando generas el archivo .gitlab-ci.yml y lo inicializas con la etiqueta image. Eso quiere decir literal que gitlab ci generará una imagen de docker?

Así me funcionó en el 2022

image: node:17.9.0-slim
stages:
  - install
  - test

install-dependencies:
  stage: install
  script:
    - npm install
  artifacts:
    expire_in: 1hr
    paths:
      - node_modules/
  cache:
    paths:
      - node_modules/
  
test-apps:
  stage: test
  variables:
    CHROME_BIN: google-chrome
  dependencies:
    - install-dependencies
  before_script:
    - apt-get update && apt-get install -y apt-transport-https wget gnupg
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
    - sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
    - apt-get update && apt-get install -y google-chrome-stable
  script:
    - npm run test:ci

como sería si deseo hacer deploy en azure teniendo mi repo en gitlab

¿Por que ya no se puede expandir la pantalla?, estaba mejor antes con esa opción para ver el video

Para validar el archivo .gitlab-ci.yml puedes hacerlo de dos formas

  1. usando GitLab

    • Navega a CI/CD > Pipelines o CI/CD > Jobs en tu proyecto
    • Despues has click en CI lint
    • Pega tu codigo en el editor
    • preciona el boton Validate
  2. usando la extension de GitLab en vscode

    • Instala la extension gitlab.gitlab-workflow
    • Abre el command palette (ctrl + shift + p o cmd + shift + p)
    • ejecuta el comando GitLab: Validate GitLab CI config

Mi aporte a la comunidad.
Así quedó y funcionó mi .gitlab-ci.yml para ésta clase.

image: node:14.13.1
stages:
  - install
  - test

install-dependencies:
  stage: install
  script:
    - npm install
  artifacts:
    expire_in: 1hr
    paths:
      - node_modules/
  cache:
    paths:
      - node_modules/

test-apps:
  stage: test
  variables:
    CHROME_BIN: google-chrome
  dependencies:
    - install-dependencies
  before_script:
    - apt-get update && apt-get install -y apt-transport-https
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
    - sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
    - apt-get update && apt-get install -y google-chrome-stable
  script:
    - npm run test:ci```

Ejemplos del archivo .gitlab-ci.yml
https://docs.gitlab.com/ee/ci/examples/README.html

Bueno, me enredo un poco jaj pero trataré de hacer un resumen de lo que entendí:

en Karma.conf.js que es para hacer test en JavaScript:

en package.json es un formato ligero de intercambio de datos:

  • se agrega la “opción” test:ci que ejecute ng test y el resto no lo entiendo muy bien.

en .gitlab-ci.yml archivo para CI de GitLab:

  • que vamos a trabajar con node.11.1.0
  • Hay dos etapas: install y test
  • Para install ejecute “npm install” e incluya node_moudles/
  • Para test instale dependencias, por consola instale Chrome
  • y ejecute la opción test:ci que hicimos en package.json

Entiendo que esta configuración es propia para node, pero donde ´puedo encontrar la documentación para proyectos Java?

Qué diferencias habría en un proyecto de react con jest?

Si a la fecha no encuentras karma.conf.js es debido a que actualmente no existe de forma predeterminada y debes hacer un downgrade de Angular y reiniciar lo ya hecho… Actualmente estoy usando [email protected] y parece funcionar bien


Adjunto referencias

https://stackoverflow.com/questions/43344600/how-to-install-a-specific-version-of-angular-with-angular-cli
Proyecto de otro alumno (Angular version on README)
https://gitlab.com/platzi-gitlab25/platzi-devops


Citando otro alumno en otra clase (Nelson David)

Para el año 2023, les cuento que me enfrente a una incompatibildiad entre la ultima version de nodejs y la que descargaba de angular npm, por tanto me toco bajarme de version en nodejs para pasar rapido el ejerrciio. Por tanto en el momento que lo vayan a a hacer validen que la version de NodeJS y la version de NPM sea compatible con la version de Angular que se esta descargando. Al final trabaje con estas versiones:

Angular CLI: 15.2.6
Node: 14.21.3
Package Manager: npm 6.14.18
OS: win32 x64

y por ultimo importante validar donde queda instalado ng.cmd en mi caso quedo instalado en un subdirectorio .\node_modules.bin y me toco adicionarlo en la variabled e ambiente PATH para que me reconociera el comando ng sin inconvenientes

— Edite algunos detalles para mejor comprensión

Para la configuración del archivo package.json
"test:ci": "ng test --watch=false --browsers=ChromeHeadlessNoSandbox"

Para la configuracion del archivo Karma.js
browsers: ['ChromeHeadlessNoSandbox'], customLaunchers: { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox'] } },

Buen curso, hasta el momento esta es la peor clase, porque entendí muy poco… falto aclarar cada fila del archivo de configuración

En mi caso fue bastante confuso el tema debido a que se deben tener conocimientos previos sobre Cubernets, TDD y Herramientas según el lenguaje que cada uno maneje. comparto ejercicio practico de pruebas automatizadas con PHPUnit:

Ejemplo de .gitlab-ci.yml

<# Select image from https://hub.docker.com/_/php/
#image: php:latest
image: php:7.3

# Select what we should cache between builds
cache:
  paths:
  - vendor/

before_script:
  # Install git, the php image doesn't have installed
  - apt-get update
  - apt-get install curl
  # Install composer
  - curl -s https://getcomposer.org/installer | php
  - mv composer.phar /usr/local/bin/composer
  # Install all project dependencies
  - composer install
  - composer require --dev phpunit/phpunit
  - apt-get update
  - composer dump-autoload

# We test PHP7 with MySQL, but we allow it to fail
test:
  image: php:7.3
  script:
    #RUN ONLY test/UserTest.php
    - echo "Testing test/UserTest.php..."
    - php ./vendor/phpunit/phpunit/phpunit test/UserTest.php --color 
    #RUN ALL TESTs IN TEST DIRECTORY
    - echo "Testing All Test in /test/ folder..."
    - php ./vendor/phpunit/phpunit/phpunit test --color
  allow_failure: true
>

A los que les salga error, reemplazar “–no-sandbox” por “–disable-extensions” en la parte de flags, me ayudó.

Hola a todos,
si quiero realizar las pruebas con selenium, como debiese ser la configuración?

gracias.

Saludos

En las versiones más recientes de Angular, específicamente a partir de la versión 15, el archivo `karma.conf.js` ya no se genera por defecto al crear un nuevo proyecto. Esto se debe a que Angular CLI ahora construye la configuración completa de Karma en memoria, basándose en las opciones especificadas en el archivo `angular.json`. [Angular](https://angular.dev/guide/testing/) Para personalizar la configuración de Karma, puedes generar manualmente el archivo `karma.conf.js` ejecutando el siguiente comando en la raíz de tu proyecto: \>ng generate config karma
.gitlab-ci.yml para projectos .Net ```js image: mcr.microsoft.com/dotnet/sdk:8.0 stages: - build - test variables: test: "ProjectName.Test" before_script: - "dotnet restore" build: stage: build script: - "dotnet build" test: stage: test script: - "cd $test" - "dotnet test" ```image: mcr.microsoft.com/dotnet/sdk:8.0stages:     - build    - test variables:    test: "ProjectName.Test" before\_script:    - "dotnet restore" build:    stage: build    script:        - "dotnet build" test:    stage: test    script:        - "cd $test"        - "dotnet test"
mi gitlab-ci.yml escrito con gptstages:  - install  - test  - deploy variables:  *# Usar la última versión de Python 3*  PYTHON\_VERSION: "3.10" *# Capa base para todas las etapas, usando una imagen de Python*image: python:${PYTHON\_VERSION} *# Cache para que las dependencias no se instalen en cada ejecución del pipeline*cache:  paths:    - .venv/    - .cache/pip *# Etapa de instalación*install:  stage: install  script:    - python -m venv .venv  *# Crear entorno virtual*    - source .venv/bin/activate  *# Activar entorno virtual*    - pip install -r requirements.txt  *# Instalar dependencias* *# Etapa de pruebas*test:  stage: test  script:    - source .venv/bin/activate  *# Activar entorno virtual*    - pytest --maxfail=1 --disable-warnings -v  *# Ejecutar pruebas unitarias*  artifacts:    when: always    reports:      junit: pytest.xml    paths:      - pytest.xml    expire\_in: 1 week *# Etapa de despliegue*deploy:  stage: deploy  only:    - main  *# Solo desplegar desde la rama principal*  script:    - source .venv/bin/activate  *# Activar entorno virtual*    - pip install -r requirements.txt  *# Asegurar que las dependencias están instaladas*    - nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 &  *# Desplegar FastAPI en segundo plano* ```js stages: - install - test - deploy variables: # Usar la última versión de Python 3 PYTHON_VERSION: "3.10" # Capa base para todas las etapas, usando una imagen de Python image: python:${PYTHON_VERSION} # Cache para que las dependencias no se instalen en cada ejecución del pipeline cache: paths: - .venv/ - .cache/pip # Etapa de instalación install: stage: install script: - python -m venv .venv # Crear entorno virtual - source .venv/bin/activate # Activar entorno virtual - pip install -r requirements.txt # Instalar dependencias # Etapa de pruebas test: stage: test script: - source .venv/bin/activate # Activar entorno virtual - pytest --maxfail=1 --disable-warnings -v # Ejecutar pruebas unitarias artifacts: when: always reports: junit: pytest.xml paths: - pytest.xml expire_in: 1 week # Etapa de despliegue deploy: stage: deploy only: - main # Solo desplegar desde la rama principal script: - source .venv/bin/activate # Activar entorno virtual - pip install -r requirements.txt # Asegurar que las dependencias están instaladas - nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 & # Desplegar FastAPI en segundo plano ```
Para los que están utilizando angular en su última versión en 2024. Sólo deben crear el archivo **karma.config.js** en la carpeta *src*, después copiar el siguiente código (El mismo que el profesor tiene): "test:ci": "ng test --watch=false --browsers=ChromeHeadlessNoSandbox",```js // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), require('karma-coverage-istanbul-reporter'), require('@angular-devkit/build-angular/plugins/karma') ], client: { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { dir: require('path').join(__dirname, '../coverage'), reports: ['html', 'lcovonly'], fixWebpackSourcePaths: true }, reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['ChromeHeadless'], customLaunchers: { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox'] } }, singleRun: false }); }; ```Posteriormente en el **package.json** agregar la línea: ```js "test:ci": "ng test --watch=false --browsers=ChromeHeadlessNoSandbox", ``` Y finalmente correr el comando: `npm run test:ci`

Yo:

after_script invalida comandos que son ejecutados después de un job
before_script invalida comandos que son ejecutados antes de un job

Sabiendo que la imagen de node 11.1.0 esta basada en debian 9, me sirvieron estos comandos:

  before_script:
    - apt-get update -y && apt install wget -y
    - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    - apt install -y ./google-chrome-stable_current_amd64.deb

Como siempre la mejor forma de probar los dockerfiles es corriendo uno, y probando los comandos manualmente, asi vas a la fija:

docker run --rm -it node:11.1.0 /bin/sh

Automatizacion de CI con GitLab-YML

Descarga las ramas creadas en el repositorio
git remote update origin --prune

Una vez se descargan las referencias nos cambiamos
git checkout 1-generar-integracion-con-gitlab-ci

En GitLab:

  • un pipeline tiene uno o muchos stages (satges corren en orden)
  • un satage tiene uno o mas Jobs o scripts (los jobs corren en paralelo)

La configuración que hace David, es solo para un proyecto de angular o sirve para cualquier tipo de proyecto? yo estoy usando una proyecto en React y no tengo el archivo karma para poder setear el browser

Me perdi cuando llegamos de nuevo al código 😦

ese karma.conf.js supongo que es parte/generado por ser una app angular o toy perdido?

Alguien sabe donde podria aprender mas sobre los runners y la configuracion de los pipelines? Quiero hacer un pipeline para desplegar una app de .Net Core en staging

Me gustaria recomendar esta extension de vscode para checar la ortografia, se llama code spell checker:
https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker