React App + Node Gitlab cicd pipe для GAE (Построение и Развертывание) - PullRequest
2 голосов
/ 09 марта 2020

Как создать 2 этапа 1 для создания приложения реагирования, а затем один для развертывания файлов в GAE?

Мой текущий YML выглядит следующим образом:

image: 'google/cloud-sdk:slim'
build-stage:
    stage: build
    image: 'node:latest'
    script:
        - 'npm install'
        - 'npm install --prefix ./client'
        - 'npm run build --prefix ./client'
    only:
        - master
deployment-stage:
    stage: deploy
    script:
        - 'gcloud auth activate-service-account --key-file $GOOGLE_SERVICE_ACCOUNT_FILE'
        - 'gcloud app deploy app.yaml --project $GOOGLE_PROJECT_ID --set-env-vars **redacted**'
    only:
        - master

Google App Engine не показывает каких-либо сборок, происходящих на вкладке сборок. Я создал служебную учетную запись с этими разрешениями: Здесь

Я также установил свои переменные CICD в Gitlab, здесь вывод всех заданий.

Сборка Этап:

 $ npm run build --prefix ./client
 > client@0.1.0 build /builds/**redacted**/client
 > react-scripts build
 Creating an optimized production build...
 Compiled successfully.
 File sizes after gzip:
   276.17 KB  build/static/js/2.63b40945.chunk.js
   59.19 KB   build/static/css/2.2e872fcd.chunk.css
   4.3 KB     build/static/js/main.7cffe524.chunk.js
   923 B      build/static/css/main.433538f4.chunk.css
   772 B      build/static/js/runtime-main.ef76e641.js
 The project was built assuming it is hosted at /.
 You can control this with the homepage field in your package.json.
 The build folder is ready to be deployed.
 You may serve it with a static server:
   npm install -g serve
   serve -s build
 Find out more about deployment here:
   bit.ly/CRA-deploy
 Job succeeded

Этап развертывания:

 Fetching changes with git depth set to 50...
 Initialized empty Git repository in /builds/**redacted**/.git/
 Created fresh repository.
 From https://gitlab.com/**redacted**
  * [new ref]         refs/pipelines/124363587 -> refs/pipelines/124363587
  * [new branch]      master                   -> origin/master
 Checking out f2026f12 as master...
 Skipping Git submodules setup
$ gcloud auth activate-service-account --key-file $GOOGLE_SERVICE_ACCOUNT_FILE
00:02
 Activated service account credentials for: [**redacted**]
 $ gcloud app deploy app.yaml --project $GOOGLE_PROJECT_ID --set-env-vars **redacted**
 Job succeeded

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

Я пытался запустить все это за один шаг сценария, но google / cloud-sdk: slim не содержит npm для сборки или установки.

Спасибо!

1 Ответ

0 голосов
/ 09 марта 2020

Понял это с некоторыми пробами и ошибками ...

image: python:2.7

before_script:
  - echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
  - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
  - apt-get update
  - apt-get -qq -y install google-cloud-sdk
  - apt-get -qq -y install npm
  - npm install
  - npm install --prefix ./client
  - npm run build --prefix ./client

deploy:
  stage: deploy
  environment: Production
  only:
    - master
  script:
    - gcloud auth activate-service-account --key-file $GOOGLE_SERVICE_ACCOUNT_FILE
    - gcloud app deploy app.yaml --project $GOOGLE_PROJECT_ID

Переместил set-env-vars в app.yaml, так как их нельзя установить как флаг в развертывании приложения gloud согласно документы: https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#environment_variables

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...