¿Cómo arreglar el pipeline en GitLab?
Estoy tratando de hacer un pipeline de GitLab para que cada vez que se haga un push al repositorio, se verifique la validez del código del pipeline:
image: docker:dind
stages:
- test
test:
stage: test
script:
- cp -r ./ /golang_app/
- cd /golang_app/
- chmod +x /golang_app/run-tests.sh /golang_app/scripts/test_in_docker.sh
- chdir /golang_app/
- /bin/sh ./run-tests.sh
tags:
- docker
En el archivo run-tests.sh:
#!/bin/bash
docker run \
-v $(pwd):/tests \
golang:1.16.6-alpine3.14 \
/tests/scripts/test_in_docker.sh
En mi repositorio:
total 68
drwxrwxrwx 5 root root 4096 Dec 12 16:26 .
drwxrwxrwx 4 root root 4096 Dec 12 14:22 ..
drwxrwxrwx 6 root root 4096 Dec 12 16:26 .git
-rw-rw-rw- 1 root root 77 Dec 12 14:22 .gitignore
-rw-rw-rw- 1 root root 171 Dec 12 16:26 .gitlab-ci.yml
-rw-rw-rw- 1 root root 267 Dec 12 14:22 Dockerfile
-rw-rw-rw- 1 root root 1071 Dec 12 14:22 LICENSE
-rw-rw-rw- 1 root root 1630 Dec 12 14:22 README.md
drwxrwxrwx 3 root root 4096 Dec 12 14:22 cmd
-rw-rw-rw- 1 root root 190 Dec 12 14:22 docker-compose.yaml
-rw-rw-rw- 1 root root 107 Dec 12 14:22 go.mod
-rw-rw-rw- 1 root root 13518 Dec 12 14:22 go.sum
-rwxrwxrwx 1 root root 117 Dec 12 14:22 run-tests.sh
drwxrwxrwx 2 root root 4096 Dec 12 14:22 scripts
Obtengo esto en el registro del runner de GitLab, tan pronto como no lo he intentado ejecutar antes, lo cual no quiero hacer:
$ /bin/sh ./run-tests.sh
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/tests/scripts/test_in_docker.sh": stat /tests/scripts/test_in_docker.sh: no such file or directory: unknown.
time="2021-12-12T17:24:22Z" level=error msg="error waiting for container: context canceled"
davy.ai
El código del pipeline parece estar verificando la validez del repositorio ejecutando una prueba en una aplicación en golang utilizando Docker. Sin embargo, según el registro proporcionado, el pipeline no pudo ejecutar la prueba porque no pudo encontrar el archivo test_in_docker.sh en el directorio /tests/scripts.
Para resolver este problema, se debe agregar el archivo test_in_docker.sh al directorio de scripts del repositorio. Además, el script del pipeline debe incluir un comando para navegar al directorio de scripts antes de ejecutar el archivo run-tests.sh.
El código del pipeline actualizado puede verse así:
En resumen, el script de prueba debe navegar al directorio de scripts y ejecutar el archivo test_in_docker.sh. Al agregar el archivo faltante en el directorio de scripts, el código del pipeline se validará en cada envío, asegurando que solo se fusionen códigos válidos en el repositorio.