Appearance
GitLab
El presente documento consiste en una referencia ágil para introducirse a GibLab remitiéndonos a los comandos necesarios para su instalación con Docker y algo de DevOps (pipeline).
GitLab bajo Linux Debian/Ubuntu
Aunque se puede crear una cuenta gratuita en el sitio oficial, es posible usar GitLab localmente o en un servidor administrado por ti. Para Linux Debian o Ubuntu, se puede instalar ejecutando los siguientes comandos:
bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates perl
sudo apt install -y postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.mydomain.com" apt install gitlab-cepostfix es el servicio para enviar emails (SMTP), usado para notificaciones. Suele requerir un dominio (o subdominio) si se publica como sitio de Internet. De hecho, al instalarlo se solicita el modo de configuración, y se puede indicar 2 para sitio de Internet o 5 para uso local.
En caso de requerir reconfigurar el dominio (o subdominio) para GitLab, podría editarse la configuración ejecutando sudo vim /etc/gitlab/gitlab.rb para la variable external_url. Luego se necesitaría ejecutar sudo gitlab-ctl reconfigure.
En caso de no indicar una contraseña en el proceso de instalación de GitLab, ésta se puede encontrar en el archivo /etc/gitlab/initial_root_password (durante las próximas 24 horas).
GitLab bajo Docker
También es posible usar GitLab localmente con la imagen para Docker. Con el siguiente comando descargamos y ejecutamos GitLab CE (Community Edition)
bash
docker run gitlab/gitlab-ceGitLab con cuenta en la Nube
Podemos usar directamente GitLab a través de Internet con su servicio aplicando, por ejemplo, a una cuenta gratuita. Para ello nos dirigimos al sitio: https://about.gitlab.com
Configurando clave SSH
bash
ssh-keygen -t rsa -b 2048 -C "GitLab access"Este comando puede preguntar por el nombre del archivo y una palabra de paso. Suponiendo que el archivo lo llamemos
gitlabobtenemos otro archivo con la llave pública que debemos reportar en la plataforma de GitLib. El contenido lo podemos ver con el siguiente comando:
bash
cat gitlab.pubGitLab desde el Navegador
Accedemos desde un navegador a GitLab y creamos un repositorio. Luego podemos abrir la línea de comandos ubiándonos en un directorio para el ejemplo, y suponiendo que obtenemos la URL del repositorio hacemos lo siguiente:
bash
git clone https://gitlab.com/user/test.git
echo "Hi there!" > index.html
git add .
git commit -m "Initial stage"
git pushEn el ejemplo, el repositorio corresponde a
usercon nombretest.
Se clona el repositorio, se agrega el archivoindex.htmly se confirman los cambios. Finalmente, se hacepushal repositorio para actualizar nuestro proyecto de ejemplo.
Conexion con SSH
En términos generales, se genera localmente una clave SSH que deberá ser reportada en el perfil de la plataforma de GitLab. Para generar la clave localmente se puede ejecutar:
bash
ssh-keygen -t rsa -b 2048 -C "[email protected]"Este comando solicita el nombre del archivo y genera tanto un archivo para la llave privada y otro público (extensión
.pub). La opción-Cse refiere a un comentario y se suele colocar un email.
El archivo publico se puede visualizar ejecutando algo como lo siguiente:
bash
cat mykey.pub
mykey.pubse refere al nombre obtenido para el archivo público y debe sustiturise respectivamente.
Una vez se pega la llave pública en el perfil de la plataforma, para clonar se sigue el siguiente formato de comando:
bash
git clone [email protected]:myrepo.gitIntegración Continua con GitLab
El ejemplo en ejecución
Ahora podemos elaborar una imágen de Docker para el entorno de ejecución del proyecto de ejemplo. Para ello podemos crear un archivo Dockerfile con el siguiente contenido:
Dockerfile
FROM debian:buster-slim
WORKDIR /var/www/html
COPY index.html /var/www/html
RUN apt update && apt install -y git-core curl zip unzip
RUN apt install -y nginx
EXPOSE 80
CMD ["service", "nginx", "start"]Se guarda y se ejecutan las siguientes sentencias:
shell
docker build -t test .
docker run -it -p 8100:80 --name webapp testY ejecutamos dentro del contenedor el siguiente comando:
bash
service nginx startEste ejercicio nos aporta una prueba de concepto. Si se usa
exitse detiene el contenedor y el servicio.
Configuración de Pipeline
yaml
stages:
- init
- deploy
hello:
stage: init
script:
- echo "Hi there!"
deploy:
stage: deploy
script:
- cd /var/www/html
- git pull https://gitlab.com/user/test.gitConfiguración de Runner
bash
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod 777 /usr/local/bin/gitlab-runner
gitlab-runner register
gitlab-runner run