3 votes

Exécution de GitLab sur Windows et gestion des %ERRORLEVEL%.

Dans mon fichier .gitlab-ci.yml, j'essaie d'utiliser la commande findstr.

findstr /c:"%SOLUTION_DIR%" gitlab.dif > founded.ref

Cette commande met le %ERRORLEVEL% à 1 s'il n'y a pas de correspondance avec "%SOLUTION_DIR%" dans gitlab.dif.

Il semble que GitLab runner interprète cela comme un échec de travail.

ERROR: Job failed: exit status 1

Existe-t-il une solution de contournement ?

EDIT :

mon fichier .gitlab-ci.yml

stages:
  - check
  - build

check_diff:
  stage: check
  script:
    - git diff --name-only origin/develop...HEAD > _gitlab_diff.txt
    - git diff --name-only HEAD~1 >> _gitlab_diff.txt
  artifacts:
    paths:
    - _gitlab_diff.txt
  only:
    refs:
    - merge_requests
    - develop

.generic_build_job:
  stage: build
  dependencies: 
    - check_diff
  before_script:
    - findstr /c:"%SOLUTION_DIR%" "_gitlab_diff.txt" > _check_%SOLUTION_FILE%.txt
    - for /f %%i in ("_check_%SOLUTION_FILE%.txt") do set size=%%~zi
    - if %size% == 0 exit 0
    - cd %SOLUTION_DIR%
  script:
    - '"%NUGET%" restore "%SOLUTION_FILE%"'
    - '"%MSBUILD%" /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "%SOLUTION_FILE%"'
  only:
    refs:
    - merge_requests
    - develop

MyApp1:
  variables:
    SOLUTION_DIR: "MyApp1/"
    SOLUTION_FILE: "MyApp1.sln"
  extends: .generic_build_job
  only:
    changes:
      - MyApp1/*

MyApp2:
  variables:
    SOLUTION_DIR: "MyApp2/"
    SOLUTION_FILE: "MyApp2.sln"
  extends: .generic_build_job
  only:
    changes:
      - MyApp2/*

1voto

jBravo Points 437

J'ai trouvé une solution de contournement en utilisant un script batch script.

Voici mon skip.bat :

findstr /c:%1 %2 >nul 2>&1
if not %errorlevel% == 0 exit 0

0voto

lampada Points 65

Vous pouvez faire :

  • findstr /c:%1 %2 >nul 2>&1 | exit(0)

Grâce à cette commande, votre travail n'échouera plus jamais

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X