es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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"
Tags:  , ,

Answer

  1. Avatar for 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í:

    image: docker:dind
    
    stages:
      - test
    
    test:
      stage: test
      script:
        - cp -r ./ /golang_app/
        - cd /golang_app/
        - chmod +x ./run-tests.sh ./scripts/test_in_docker.sh
        - cd ./scripts/
        - /bin/sh ./test_in_docker.sh
      tags:
        - docker
    

    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.

Comments are closed.