Introducci贸n

1

Lo que aprender谩s sobre DevOps con GitLab

2

驴Qu茅 es Devops?

3

El ciclo de vida del Devops

4

Introducci贸n a Gitlab

5

Gitlab vs Github

Administraci贸n

6

Autenticaci贸n

7

Grupos

8

Autorizaci贸n

9

Auditor铆a

10

Proyectos

Planificaci贸n

11

Tipos de desarrollo

12

Planificaci贸n en Gitlab-Issues

13

Planificaci贸n en Gitlab-Etiquetas

14

Planificaci贸n en Gitlab-Pesos

15

Planificaci贸n en Gitlab-Milestones

16

Planificaci贸n en Gitlab-Boards

17

Planificaci贸n en Gitlab-Service Desk

18

Planificaci贸n en Gitlab-Quick actions

Verificaci贸n

19

Inicializaci贸n del repositorio

20

Merge requests

21

Profundizando en Merge requests

22

Continuous Integration-CI

23

Gitlab CI

24

Automatizacion con GitLab Cl

25

Validacion de la configuracion con GitLab Cl

26

gitlab-ci.yml

27

Gitlab pages

28

Implementando Gitlab pages

29

驴Qu茅 es el Desarrollo 脕gil?

30

Gitlab autodevops

31

Implementando GitLab autodevops

32

Habilitando autodevops

Empaquetaci贸n

33

Gitlab container registry

34

Introducci贸n a contenedores

Seguridad

35

Introducci贸n a DevSecOps

36

Firmas de seguridad

37

Pruebas est谩ticas de seguridad

38

Escaneo de contenedores

39

Escaneo de dependencias

40

Pruebas din谩micas de seguridad

41

Gitlab security dashboard

Distribuci贸n

42

Continuous Delivery (CD)

43

Ambientes

44

Review apps

45

Estrategias de Distribuci贸n

46

Feature Flags

47

Rollback

Monitoreo

48

驴Por qu茅 monitorear?

49

M茅tricas de desempe帽o (performance metrics)

50

M茅tricas de salud (health metrics)

51

Metricas de equipo

52

Rastreo de errores

Conclusiones

53

驴Por qu茅 desarrollar con Gitlab?

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
3H
54M
29S

Automatizacion con GitLab Cl

24/53
Recursos

Aportes 31

Preguntas 11

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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

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 鈥榚cho 鈥渄eb 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.

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.

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

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

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 鈥渙pci贸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 鈥渘pm 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?

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 鈥溾搉o-sandbox鈥 por 鈥溾揹isable-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

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