Gitlab CI / CD — как узнать, когда процесс завершен

#angular #continuous-integration #gitlab #devops

# #угловатый #непрерывная интеграция #gitlab #devops

Вопрос:

Я пытаюсь запустить тест после компиляции Angular-проекта. Проблема в том, что когда проект окончательно скомпилирован, процесс все еще активен ( ng serve ), поэтому тест не запускается. (Я использую кипарис для тестирования!) Лучшее, что я сделал, — это выполнил обе работы одновременно на одном этапе, и одно руководство приостановилось, ожидая завершения другого, но моя конечная цель — каким-то образом сделать это автоматическим.

Это и есть код:

     image: node:12.20
    
    cache:
      paths:
        - node_modules/
        
    stages:
      - test
    
    job-prepare:
      stage: test
      script:
        - node -v
        - npm -v
        - npm i
        - npm install -g @angular/cli@9.0.6
        - ng version
        - npm run serve:windows
     
    job-test:
      stage: test
      script:
        - npm run e2e
      when: manual
      allow_failure: false
 

Спасибо

Комментарии:

1. serve команда, используемая для запуска сервера, но не для тестирования. для тестирования используйте angular.io/guide/testing

2. Я использую cypress для тестирования, поэтому мне нужно, чтобы проект был запущен, в качестве временного решения, которое я использовал: when: delayed start_in: (average compile time)

Ответ №1:

Почему бы не использовать только одно задание с before_script script помощью компиляции before_script и тестирования внутри script ?

https://docs.gitlab.com/12.10/ee/ci/yaml/#before_script-and-after_script

Комментарии:

1. Поскольку процесс компиляции должен быть включен (никогда не завершается), поэтому задание также не завершается и никогда не переходит к следующему заданию (тестирование)

2. Использование before_script и after_script будет только одним заданием. Тогда почему бы не запустить вашу компиляцию в фоновом режиме с amp; помощью?