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

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

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

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

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

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

Мой .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

1 Ответ

0 голосов
/ 28 января 2020

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

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

...