En este artículo, decidí describir mi experiencia con la configuración de gitlab CI y alquilé VPS.Antecedentes
En el trabajo, uv. DevOps me configuró una implementación de proyectos en kubernetes ( trabajo como desarrollador de Go ). Tengo mi propio proyecto favorito, y quería automatizarlo, pero no tenía muchas ganas de criar mi gitlab (de todos modos, el VPS no es de goma).Datos iniciales
Crear repositorio
Creamos el repositorio que queremos automatizar.Decidí realizar pruebas para subir docker con nginx y reenviarlo a la página html.Estructura del repositorio:DockerfileFROM nginx:latest
COPY html /var/www/html
COPY nginx.conf /etc/nginx/nginx.conf
nginx.confevents {}
http {
server {
listen 80;
location / {
root /var/www/html;
}
}
}
- html
index.html<html>
<h1>Hello, Runner!</h1>
</html>
.gitlab-ci.yml
image: docker:19.03.8
before_script:
- docker info
build:
stage: build
script:
- docker build -t hellorunner .
deploy:
stage: deploy
script:
- docker ps --filter name=hellorunner --quiet | xargs --no-run-if-empty docker stop | xargs --no-run-if-empty docker rm
- docker run -d --restart=always --name hellorunner -p 8090:80 hellorunner
after_script:
- docker system prune -f
Configuración del repositorio
Configuración abierta -> CI
Luego, haga clic en Corredores, expanda
Primero, apague los corredores propuestos - Deshabilite los corredores compartidos
Luego, nos interesa: “Configurar un corredor específico manualmente”
Copiamos el token, en el futuro lo necesitaremos.Preparación VPS
Instalar docker .Instalar gitlab-runner .Registra un nuevo corredor.! En el campo ejecutor, especifique la versión de Docker, como en el Dockerfile.
En el campo de token, especifique el token que se recordó de gitlab
gitlab-runner register
Ahora, debe realizar pequeños cambios en la configuración del corredor.nano /etc/gitlab-runner/config.toml
campovolumes = ["/cache"]
cambiar avolumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
Reiniciando el demoniogitlab-runner restart
Volver a gitlab / settings / CI / Runners nuevamente.Debería aparecer un corredor activo.
Edite el corredor, presionando.
Permitir realizar tareas sin etiquetas.
Ahora ejecute las confirmaciones de inserción y siga los trabajos.
Y finalmente, abra el navegador.
Enlace al repositorio dePS: encontré un problema: tenía una imagen ensamblada desde el interior que no tenía acceso a una red externa, la solución es cree el archivo /etc/docker/daemon.json :{
"dns": ["8.8.4.4", "8.8.8.8"]
}
service docker restart