Ошибка приложения Svelte / Sapper 500 при развертывании Google App Engine через Gitlab CI

Мое приложение Sapper развертывается нормально, если я сначала построю его, а затем разверну с моего локального компьютера с помощью приложения gcloud deploy.

В моем app.yaml есть только: runtime:nodejs10 для развертывания в стандартной среде.

Теперь я не могу добиться того же, когда пытаюсь использовать Gitlab CI для развертывания на git push. В моем файле .gitlab-ci.yml у меня есть 2 задания: 1 для установки npm и для запуска команды сборки, а второе - для развертывания в gcloud.

2 задания выполнены, но когда я проверяю версию, появляется ошибка 500, а в журналах написано: Error: Cannot find module '/srv/__sapper__/build'.

Так что это заставляет меня ходить по кругу. Я пробовал переместить svelte и sapper из dev deps в зависимости в package.json, но это не помогло, я смотрел на добавление обработчиков в свой app.yaml, но меня смущает, как, я видел проблему с упоминанием sapper github что-то связанное со стройным make-файлом и проблемой, связанной с его созданием, чтобы образ докера мог его использовать, но четкого решения не предлагается ...

Мой .gitlab-ci.yml выглядит так:

production-build:
  stage: build-for-prod
  image: node:10
  script:
    - npm install
    - npm run build
  only:
    - master 

prod-deploy:
    stage: production
    only:
      - master
    needs: ["production-build"]
    image: google/cloud-sdk:alpine
    environment: PROD
    script:
    - echo $SERVICE_ACCOUNT_KEY > /tmp/$CI_PIPELINE_ID.json
    - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
    - gcloud --quiet --project sapper1-test app deploy app.yaml --verbosity debug --no-promote
    after_script:
    - rm /tmp/$CI_PIPELINE_ID.json

person martinval    schedule 26.01.2020    source источник


Ответы (1)


Поправьте меня, если я ошибаюсь, но мне кажется, что вы неправильно его сконфигурировали. Задания выполняются в отдельных контейнерах, и развертывание не имеет доступа к результатам сборки, поэтому в нем отсутствуют зависимости.

Артефакты могут помочь в передаче встроенных библиотек. Но я бы просто создал собственный образ, содержащий как Nodejs, так и Cloud SDK, и объединил бы два задания поверх этого образа.

person Emil Gi    schedule 28.01.2020