Как сделать sh график в Apollo Graph Manager с Travis и docker - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю в Федерации Аполлона. До сих пор я успешно развернул свои сервисы в кластере Google Kubernetes, используя travis.

Единственная оставшаяся проблема - включение сценария apollo service:push --serviceURL=http://auth-cluster-ip-service --serviceName=auth в мой CI / CD. Но я понятия не имею, как ... Это мой первый раз, когда я настраиваю CI / CD.

Мой рабочий файл конфигурации travis без apollo service:push:

sudo: required
services:
  - docker
env:
  global:
    - SHA=$(git rev-parse HEAD)
    - CLOUDSDK_CORE_DISABLE_PROMPTS=1
language: node_js
node_js:
  - 10
before_install:
  - openssl aes-256-cbc -K $encrypted_9f3b5599b056_key -iv $encrypted_9f3b5599b056_iv -in service-account.json.enc -out service-account.json -d
  - curl https://sdk.cloud.google.com | bash > /dev/null;
  - source $HOME/google-cloud-sdk/path.bash.inc
  - gcloud components update kubectl
  - gcloud auth activate-service-account --key-file service-account.json
  - gcloud config set project salading-production
  - gcloud config set compute/zone asia-northeast3-a
  - gcloud container clusters get-credentials salading-cluster
  - echo "$SHA"
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
script:
  - echo "skipping tests"
deploy:
  provider: script
  script: bash ./deploy.sh
  on:
    branch: master

Ниже deploy.sh file:

docker build -t hoffnung8493/salading-auth:latest -t hoffnung8493/salading-auth:$SHA .
docker push hoffnung8493/salading-auth:latest
docker push hoffnung8493/salading-auth:$SHA
kubectl apply -f k8s
kubectl set image deployment/auth-deployment auth=hoffnung8493/salading-auth:$SHA

Я попытался добавить две строки в deploy.sh:

npm i -g apollo
apollo service:push --serviceURL=http://auth-cluster-ip-service --serviceName=auth --endpoint=http://auth-cluster-ip-service

и получил следующие ошибки:

Loading Apollo Project [started]
Loading Apollo Project [completed]
Uploading service to Apollo Graph Manager [started]
Fetching info from federated service
Uploading service to Apollo Graph Manager [failed]
→ request to http://auth-cluster-ip-service/ failed, reason: getaddrinfo ENOTFOUND auth-cluster-ip-service auth-cluster-ip-service:80
FetchError: request to http://auth-cluster-ip-service/ failed, reason: getaddrinfo ENOTFOUND auth-cluster-ip-service auth-cluster-ip-service:80
    at ClientRequest.<anonymous> (~/.nvm/versions/node/v10.19.0/lib/node_modules/apollo/node_modules/node-fetch/lib/index.js:1455:11)

1 Ответ

0 голосов
/ 07 апреля 2020

Хорошо, пока я набирал свой вопрос в stackoverflow, я придумал решение. Поскольку я уже закончил вводить свой вопрос, я решил поделиться решением.

Оказывается, простое решение - просто добавить 5 строк кода в after_deploy в .travis.yml файле. npm run dev &: это запускает сервер узла в фоновом режиме. Впоследствии sleep 3 дает серверу время для включения. Наконец, последний код передает новую схему graphql в Apollo Graph Manager. Обратите внимание, что в настройках вашего travis-ci.com вы должны добавить ENGINE_API_KEY apollo в качестве переменной окружения. Также обратите внимание, что ваш сервер узла может распечатать некоторые ошибки подключения. В моем случае я не предоставил, redis и mongodb переменные, связанные с подключением. Но пока сам сервер работает на самоанализ, apollo service:push будет работать нормально.

sudo: required
services:
  - docker
env:
  global:
    - SHA=$(git rev-parse HEAD)
    - CLOUDSDK_CORE_DISABLE_PROMPTS=1
language: node_js
node_js:
  - 10
before_install:
  - openssl aes-256-cbc -K $encrypted_9f3b5599b056_key -iv $encrypted_9f3b5599b056_iv -in service-account.json.enc -out service-account.json -d
  - curl https://sdk.cloud.google.com | bash > /dev/null;
  - source $HOME/google-cloud-sdk/path.bash.inc
  - gcloud components update kubectl
  - gcloud auth activate-service-account --key-file service-account.json
  - gcloud config set project salading-production
  - gcloud config set compute/zone asia-northeast3-a
  - gcloud container clusters get-credentials salading-cluster
  - echo "$SHA"
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
script:
  - echo "skipping tests"
deploy:
  provider: script
  script: bash ./deploy.sh
  on:
    branch: master
after_deploy:
  - npm install
  - npm i -g apollo
  - npm run dev &
  - sleep 3
  - apollo service:push --serviceURL=http://auth-cluster-ip-service --serviceName=auth --endpoint=http://localhost:3051
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...