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 hago que los mismos comandos se ejecuten antes de cada etapa sin repetirme en el archivo YML?

He configurado un archivo .gitlab-ci.yml de la siguiente manera para mi runner alojado en mi propio servidor.

stages:
  - set-environment
  - check-code

set-environment:
  stage: set-environment
  script:
    - C:\Users\9279\Documents\WindowsPowerShell\profile.ps1
    - conda activate temp

run_tests:
  stage: check-code
  script:
    - pytest test.py

type_checker:
  stage: check-code
  script:
    - (ls -recurse *.py).fullname | foreach-object {echo "<code>n$_</code>n";mypy --strict $} 

Tenía la intención de usar la etapa set-environment para hacer que mypy y pytest estén disponibles para la siguiente etapa check-code. Desafortunadamente, no es así como funciona. GitLab destruye la terminal después de que cada etapa se completa.

Sé que esto es un fallo en mi comprensión de cómo funciona el GitLab Runner. ¿Cómo puedo hacer que los comandos en set-environment se ejecuten antes de run_tests y type_checker sin repetirlos en el archivo YML?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr esto es utilizando la directiva before_script en el archivo .gitlab-ci.yml. La directiva before_script especifica un script que se ejecuta antes de cada trabajo en un pipeline. Aquí está la versión actualizada del archivo .gitlab-ci.yml:

    stages:
      - check-code
    
    before_script:
      - C:\Users\9279\Documents\WindowsPowerShell\profile.ps1
      - conda activate temp
    
    run_tests:
      stage: check-code
      script:
        - pytest test.py
    
    type_checker:
      stage: check-code
      script:
        - (ls -recurse *.py).fullname | foreach-object {echo "`n$_`n";mypy --strict $_} 
    

    En esta versión modificada, se ha eliminado la etapa set-environment y se ha agregado la directiva before_script. Esta directiva especifica los comandos que se ejecutan antes de cada trabajo en la etapa check-code. Por lo tanto, los comandos conda activate temp y mypy estarán disponibles tanto para los trabajos run_tests como para type_checker sin necesidad de repetirlos en el archivo YML.

Comments are closed.