Gitlab CI

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 61

Gitlab CI

Lección 1 - Introducción a Git 1


Integración Continua ( Continuous Integration CI)

Es la práctica de automatizar la integración de cambios de código de múltiples


colaboradores en un solo proyecto de software.

Es una práctica recomendada principal de DevOps, que permite a los


desarrolladores fusionar cambios de código con frecuencia en un repositorio
central donde luego se ejecutan las compilaciones y las pruebas.

Se utilizan herramientas automatizadas para afirmar la corrección del nuevo código


antes de la integración.

Lección 1 - Introducción a Git 2


Integración Continua ( Continuous Integration CI)

Lección 1 - Introducción a Git 3


Requisitos para CI

● El equipo debe crear pruebas automatizadas para detectar


inconsistencias en los nuevos desarrollos.
● Necesitará un servidor de integración continuo que permita el
monitoreo y la ejecución de las pruebas de forma automática para
cada nueva confirmación que se logre.
● Los desarrolladores deben fusionar los cambios de forma rápida y
continua, por lo menos una vez por día.

Lección 1 - Introducción a Git 4


Beneficios de CI

● No existen tantos errores y se evita que estos se envíen a producción.


Las pruebas automáticas captan las regresiones muy rápido.
● Desarrollar las versiones es más fácil. Los problemas que ocurren en la
integración se solucionan mucho más rápido.
● Las pruebas ya no son un gran costo para el equipo, pues el CI
permite realizar muchas pruebas en cuestión de segundos.
● El control de calidad es mucho mejor.

Lección 1 - Introducción a Git 5


¿Qué ofrece Gitlab para CI?

Lección 1 - Introducción a Git 6


Integración Continua ( Continuous Integration CI)

Lección 1 - Introducción a Git 7


Integración Continua ( Continuous Integration CI)

Lección 1 - Introducción a Git 8


Gitlab pipelines

Los pipelines son el componente de nivel superior de la integración, entrega e


implementación continuas.

Los pipelines comprenden:

jobs, que definen qué hacer. Por ejemplo, trabajos que compilan o prueban código.

stages, que definen cuándo ejecutar los trabajos. Por ejemplo, etapas que ejecutan
pruebas después de etapas que compilan el código.

Lección 1 - Introducción a Git 9


Gitlab pipelines - Jobs

La configuración del pipeline comienza con los jobs. Los jobs son el elemento más
fundamental de un archivo .gitlab-ci.yml.

Los jobs son:

● Definido con restricciones que indican bajo qué condiciones deben ejecutarse.
● Elementos de nivel superior con un nombre arbitrario y deben contener al menos la
cláusula del script.
● No está limitado en cuántos se pueden definir.

Lección 1 - Introducción a Git 10


Gitlab pipelines - Jobs
.gitlab-ci.yml

image: centos:7

test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 11


Gitlab pipelines - Jobs

image: centos:7

test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 12


Gitlab pipelines - Jobs

image: centos:7

test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 13


Gitlab pipelines - Jobs

image: centos:7

test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 14


Gitlab pipelines - Jobs

image: centos:7

test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 15


1. Crear el archivo .gitlab-ci.yml en la rama develop
Práctica 14 desde Gitlab
image: centos:7
image: centos:7

Creación de test:
test:
script:
script:
pipeline - echo "Hello, $GITLAB_USER_LOGIN!"
- echo "Hello, $GITLAB_USER_LOGIN!"

2. Revisar el pipeline.
5 minutos
3. Revisar la salida de la consola.

Lección 3 - Proyecto 16
Gitlab pipelines - ¿Cómo funciona gitlab runner?

Lección 1 - Introducción a Git 17


Gitlab pipelines - ¿Cuales son los gitlab runners que
tenemos?

Settings -> CI/CD -> Runners

Lección 1 - Introducción a Git 18


Gitlab pipelines - ¿Nuestra laptop puede ser gitlab runner?

Lección 1 - Introducción a Git 19


Gitlab pipelines - ¿Nuestra laptop puede ser gitlab runner?

Settings -> CI/CD -> Runners

Lección 1 - Introducción a Git 20


Docker

21
¿Qué es Docker?

Docker es una plataforma de software que permite crear, probar e implementar


aplicaciones rápidamente.

Docker empaqueta software en unidades estandarizadas llamadas contenedores


que incluyen todo lo necesario para que el software se ejecute, incluidas
bibliotecas, herramientas de sistema, código y tiempo de ejecución. Con Docker,
puede implementar y ajustar la escala de aplicaciones rápidamente en cualquier
entorno con la certeza de saber que su código se ejecutará

Lección 1 - Introducción a Docker 22


¿Cómo funciona?

Docker de manera similar a cómo una


máquina virtual virtualiza (elimina la
necesidad de administrar directamente) el
hardware del servidor, los contenedores
virtualizan el sistema operativo de un servidor.
Docker se instala en cada servidor y
proporciona comandos sencillos que puede
utilizar para crear, iniciar o detener
contenedores.

Lección 1 - Introducción a Docker 23


Dockerhub

Lección 1 - Introducción a Docker 24


Gitlab pipelines - ¿Cómo funciona gitlab runner?

Lección 1 - Introducción a Git 25


Gitlab pipelines - Pipeline
.gitlab-ci.yml

image: centos:7 image docker from docker registry

test: nombre del job


script: script a ejecutar
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 26


Gitlab pipelines - rules

Usa rules para incluir o excluir jobs del pipeline de acuerdo al evente

Lección 1 - Introducción a Git 27


Gitlab pipelines - Pipeline
.gitlab-ci.yml
Regla para no ejecutar el
pipeline cuándo se realiza
image: centos:7
un Merge Request.
test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
- when: on_success

Lección 1 - Introducción a Git 28


1. Hacer un merge request de develop a master
2. Validar que se ejecuta el pipeline
Práctica 15 3. Modificar el archivo .gitlab-ci.yml en la rama
develop desde Gitlab
Creación de image: centos:7
image: centos:7
test:
pipeline con test: script:
script: - echo "Hello, $GITLAB_USER_LOGIN!"
regla - echorules:
"Hello, $GITLAB_USER_LOGIN!"
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
5 minutos - when: on_success

4. Generar nuevamente un Merge Reques


5. No se deberá ejecutar el pipeline
Lección 3 - Proyecto 29
Gitlab pipelines - Pipeline
.gitlab-ci.yml
Regla para ejecutar el
pipeline cuándo se realiza
image: centos:7
un push a la rama develop.
test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
when: always

Lección 1 - Introducción a Git 30


1. Modificar el archivo .gitlab-ci.yml en la rama
develop desde Gitlab
Práctica 16 image:image:
centos:7
centos:7

test: test:
Creación de script: script:
- echo -"Hello, $GITLAB_USER_LOGIN!"
echo "Hello, $GITLAB_USER_LOGIN!"
pipeline con rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
regla when: always

5 minutos 2. Generar un cambio en develop y validar que el


pipeline se ejecuta.
3. Crear una rama de develop y hacer cambio para
validar que el pipeline no se ejecuta
Lección 3 - Proyecto 31
Gitlab pipelines - Pipeline para pruebas con python
.gitlab-ci.yml

image: centos:7 image docker from docker registry

test: nombre del job


script: script a ejecutar
- echo "Hello, $GITLAB_USER_LOGIN!"
- yum update -y
- yum install -y python3
- python3 test_calculator.py

Lección 1 - Introducción a Git 32


Gitlab pipelines - Pipeline para pruebas con python

image: centos:7
test:
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- yum update -y
- yum install -y python3
- python3 test_calculator.py

Lección 1 - Introducción a Git 33


1. Crear el archivo .gitlab-ci.yml en la rama develop
Práctica 14 desde Gitlab
image:image:
centos:7
centos:7
Creación de test: test:
script: script:
pipeline - echo-"Hello, $GITLAB_USER_LOGIN!"
echo "Hello, $GITLAB_USER_LOGIN!"
- yum update -y
- yum install -y python3
- python3 test_calculator.py

5 minutos
2. Revisar el pipeline.
3. Revisar la salida de la consola.

Lección 3 - Proyecto 34
Gitlab pipelines - Pipeline para pruebas con python
.gitlab-ci.yml .gitlab-ci.yml

image: centos:7 image: python:3

test: test:
script: script:
- echo "Hello, $GITLAB_USER_LOGIN!" - echo "Hello, $GITLAB_USER_LOGIN!"
- yum update -y - python3 test_calculator.py
- yum install -y python3
- python3 test_calculator.py

Lección 1 - Introducción a Git 35


Gitlab pipelines - Pipeline para pruebas con python
image: python:3

before_script:
- pip install flake8

stages:
.gitlab-ci.yml - linter
- test

linter:
stage: linter
script:
- flake8 calculator.py

test:
stage: test
script:
- python3 test_calculator.py

Lección 1 - Introducción a Git 36


Gitlab pipelines - Pipeline para pruebas con python

Lección 1 - Introducción a Git 37


1. Crear el archivo .gitlab-ci.yml en la rama develop
desde Gitlab image: python:3

Práctica 15 image: centos:7 before_script:


- pip install flake8

test: stages:
Creación de script: - linter
- test
- echo "Hello, $GITLAB_USER_LOGIN!"
pipeline 2 linter:
stage: linter
script:
- flake8 calculator.py

test:
stage: test
script:
5 minutos - python3 test_calculator.py

2. Revisar el pipeline.
3. Revisar la salida de la consola.
Lección 3 - Proyecto 38
Gitlab pipelines - Pipeline para pruebas con python
Ejecución paralelo image: python:3

before_script:
- pip install flake8

stages:
- linter
.gitlab-ci.yml - test

linter:
stage: linter
script:
- flake8 calculator.py

test:
stage: test
script:
- python3 test_calculator.py

message:
stage: test
script:
- echo "Hello, $GITLAB_USER_LOGIN!"

Lección 1 - Introducción a Git 39


Gitlab pipelines - Pipeline para pruebas con python
Ejecución paralelo

Lección 1 - Introducción a Git 40


1. Crear el archivo .gitlab-ci.yml en la rama develop
desde Gitlab image: python:3

Práctica 17 image: centos:7


before_script:
- pip install flake8

stages:
test: - linter

Creación de script: - test

- echo "Hello, $GITLAB_USER_LOGIN!"


linter:

pipeline
stage: linter
script:
- flake8 calculator.py

paralelo test:
stage: test
script:
- python3 test_calculator.py

5 minutos message:
stage: test
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
2. Revisar el pipeline.
3. Revisar la salida de la consola.
Lección 3 - Proyecto 41
Job artifacts

Los jobs pueden generar un archivo de archivos y directorios.

Esta salida se conoce como artefacto de trabajo.

Lección 1 - Introducción a Docker 42


Gitlab pipelines - Pipeline para pruebas con python
Ejecución con artefactos image: python:3

before_script:
- pip install flake8
- pip install pytest pytest-html

stages:
.gitlab-ci.yml - linter
- test

linter:
stage: linter
script:
- flake8 calculator.py

test:
stage: test
script:
- pytest --html=report.html
artifacts:
paths:
- report.html
- assets/

Lección 1 - Introducción a Git 43


Gitlab pipelines - Pipeline para pruebas con python
Ejecución con artefactos

Lección 1 - Introducción a Git 44


1. Crear el archivo .gitlab-ci.yml en la rama develop
desde Gitlab image: python:3

Práctica 18 image: centos:7


before_script:
- pip install flake8
- pip install pytest pytest-html

stages:
test:
Creación de script:
- linter
- test

- echo "Hello, $GITLAB_USER_LOGIN!"


linter:

pipeline con stage: linter


script:
- flake8 calculator.py

artefactos test:
stage: test
script:
- pytest --html=report.html
artifacts:
5 minutos paths:
- report.html
- assets/

2. Revisar el pipeline.
3. Descargar los archivos del pipeline
Lección 3 - Proyecto 45
Variables de pipelines

Las variables CI/CD son un tipo de variable de entorno. Puedes usarlos para:

● Controlar el comportamiento de los trabajos y las canalizaciones.


● Almacene los valores que desea reutilizar.
● Evitar codificar valores en su archivo .gitlab-ci.yml.

Lección 1 - Introducción a Docker 46


Variables de pipelines

La creación de variables en Gitlab se realiza en Settings -> CI/CD -> Variables

Lección 1 - Introducción a Docker 47


Variables de pipelines

La creación de variables en Gitlab se realiza en Settings -> CI/CD -> Variables

Lección 1 - Introducción a Docker 48


Variables de pipelines enmascaradas

La creación de variables en Gitlab se realiza en Settings -> CI/CD -> Variables

Lección 1 - Introducción a Docker 49


image: python:3

before_script:
- pip install flake8
- pip install pytest pytest-html

stages:
- linter
- test Gitlab pipelines - Ejecución con variables
linter:
stage: linter
script:
.gitlab-ci.yml
- flake8 calculator.py

test:
stage: test
script:
- pytest --html=report.html
artifacts:
paths:
- report.html
- assets/

message:
stage: test
script:
- echo "PRE, $PASSWORD_PRE! and $URL_PRE"

Lección 1 - Introducción a Git 50


1. Click Settings -> CI/CD -> Variables
2. Crear las variables:
Práctica 19 URL_PRE asignar www.localhostpre.com

Creación de PASSWORD_PRE asignar Password123


(Masked)
pipeline con 3. Modificar el archivo .gitlab-ci.yml en la rama
artefactos develop desde Gitlab message:
script:
image: centos:7 - echo "PRE, $PASSWORD_PRE! and $URL_PRE"
5 minutos
test:
script:
4. Revisar el pipeline.

Lección 3 - Proyecto 51
Gitlab pipelines - Docker images

image: python:3

before_script:
- pip install flake8
- pip install pytest pytest-html

message:
stage: test
script:
- echo "PRE, $PASSWORD_PRE! and $URL_PRE"

Lección 1 - Introducción a Docker 52


Gitlab pipelines - Docker images creadas por usuario

Packages & Registries -> Container Registry

Lección 1 - Introducción a Docker 53


Gitlab pipelines - Docker images

image: python:3

before_script:
- pip install flake8
- pip install pytest pytest-html

message:
stage: test
script:
- echo "PRE, $PASSWORD_PRE! and $URL_PRE"

Lección 1 - Introducción a Docker 54


Gitlab pipelines .NET Core
Usando la herramienta dotnet se
puede hacer build, test, publish, etc.
.gitlab-ci.yml

image: mcr.microsoft.com/dotnet/sdk:latest

message:
stage: test
script:
- echo "Version dotnet installed"
- dotnet --version

Lección 1 - Introducción a Docker 55


Gitlab pipelines .NET Core más detallado

.gitlab-ci.yml

image: mcr.microsoft.com/dotnet/sdk:latest Usando la herramienta dotnet


before_script: se puede hacer build, test,
- dotnet restore
build: publish, etc.
stage: build
script:
- 'dotnet build --no-restore'

tests:
stage: test
script:
- 'dotnet test --no-restore'

Lección 1 - Introducción a Docker 56


1. Modificar el archivo .gitlab-ci.yml

Práctica 20 image: mcr.microsoft.com/dotnet/sdk:latest

message:
stage: test
Pipeline con script:
- echo "Version dotnet installed"
docker image - dotnet --version

dotnet 2. Validar que el pipeline usando la imagen de


5 minutos dotnet de docker tiene dicho comando instalado
y muestra la versión.

Lección 3 - Proyecto 57
Gitlab pipelines Node js
Usando la herramienta npm se
.gitlab-ci.yml puede hacer build, test, publish, etc.

image: node:latest

message:
stage: test
script:
- echo "Version nodjs installed"
- node -v
- npm -v

Lección 1 - Introducción a Docker 58


Gitlab pipelines Node js más detallado

.gitlab-ci.yml

image: node:latest Usando la herramienta npm se


build: puede hacer build, test, publish,
stage: build
script: etc.
- npm install
tests:
stage: test
script:
- npm test

Lección 1 - Introducción a Docker 59


1. Modificar el archivo .gitlab-ci.yml

Práctica 21 image: node:latest

message:
stage: test
Pipeline con script:
- echo "Version nodjs installed"
docker image - node -v
- npm -v

nodejs 2. Validar que el pipeline usando la imagen de


30 minutos dotnet de docker tiene dicho comando instalado
y muestra la versión.

Lección 3 - Proyecto 60
1. Realizar un proyecto usando otro lenguaje de
programación que no sea python. No se requiere
Práctica 20 la interfaz gráfica, puede realizar la funcionalidad

Creación de de la calculadora u otra cualquiera.


2. Crear un nuevo repositorio en Gitlab y versionar
pipeline con
sus cambios.
otro lenguaje 3. Agregar el pipeline que haga el build y el test de
30 minutos su proyecto.

Lección 3 - Proyecto 61

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy