CircleCi связываются между рабочими контейнерами - PullRequest
0 голосов
/ 06 июля 2019

У меня есть 2 задания в моем CI:

  • build - проверка базы кода Frontend и ее локальное развертывание, проверка базы кода Backend и локальное ее развертывание
  • test - checkbase Automation codebase (puppeteer) и запустить тесты снова, кодовая база, которая была проверена в задании на сборку

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

Другой запросУ меня есть даже если я найду способ сохранить образ контейнера сборки для тестового задания, как я могу общаться между ними?Документы CircleCi утверждают, что первичные контейнеры могут обращаться к вторичным контейнерам в одном и том же задании , но ничего не говорится о том, как получить доступ к контейнерам из разных заданий (если это вообще возможно).

Вот моя конфигурация circleci (игнорироватьдвойной // Я только что подверг цензуре некоторые части):

version: 2.1

orbs:
  aws-s3: circleci/aws-s3@1.0.11

jobs:
  build:
    working_directory: ~/FE
    environment:
      NODE_ENV: test
      STAGE: test
    docker:
      - image: circleci/python:latest-node
    steps:
      - checkout
      - run:
          name: Update npm
          command: sudo npm install -g npm@latest
      - restore_cache:
          key: v1-fe-dependency-cache-{{ checksum "package.json" }}
      - run:
          name: Install Dependencies
          command: npm install
      - save_cache:
          key: v1-fe-dependency-cache-{{ checksum "package.json" }}
          paths:
            - ./node_modules
      - run:
          name: Run Frontend server
          command: npm run start
          background: true
      - add_ssh_keys:
          fingerprints:
            - "xx:xx:xx"
      - run:
          name: Clone Backend
          command: git clone git@github.com:<user_name>/BE.git ~/BE
      - restore_cache:
          key: v1-be-dependency-cache-{{ checksum "~/BE//requirements.txt" }}
      - run:
          name: Run Backend Server
          command: |
            cd ~/BE
            source ./ci-deploy.sh
      - save_cache:
          key: v1-be-dependency-cache-{{ checksum "~/BE//requirements.txt" }}
          paths:
            - ~/BE//venv
  test:
    working_directory: ~/Automation
    environment:
      NODE_ENV: test
    docker:
      - image: circleci/node:latest-browsers
    steps:
      - run:
          name: Add Github RSA Key To Known Hosts
          command: |
            mkdir ~/.ssh
            touch ~/.ssh/known_hosts
            ssh-keyscan -H github.com >> ~/.ssh/known_hosts
      - add_ssh_keys:
          fingerprints:
            - "xx:xx:xx"
      - run:
          name: Clone Automation
          command: git clone git@github.com:<user_name>/Automation.git ~/Automation
      - restore_cache:
          key: v1-automation-dependency-cache-{{ checksum "package.json" }}
      - run:
          name: Install Dependencies
          command: npm install
      - save_cache:
          key: v1-automation-dependency-cache-{{ checksum "package.json" }}
          paths:
            - ./node_modules
      - run:
          name: Test
          command: npm test
  deploy:
    working_directory: ~/FE
    docker:
      - image: circleci/node:latest
    environment:
      S3_BUCKET_NAME: walty-presentation
    steps:
      - checkout
      - run:
          name: Install Dependencies
          command: npm install
      - run:
          name: Build
          command: npm run build
      - aws-s3/sync:
          from: build
          to: 's3://${S3_BUCKET_NAME}'
          aws-access-key-id: AWS_ACCESS_KEY_ID
          aws-secret-access-key: AWS_SECRET_ACCESS_KEY
          aws-region: AWS_REGION
          overwrite: true

workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - test:
          requires:
            - build
      - deploy:
          requires:
            - test
          filters:
            branches:
              only:
                - master
                - develop
  nightly:
    triggers:
      - schedule:
          cron: "0 0 * * *"
          filters:
            branches:
              only:
                - master
                - develop
    jobs:
      - test
...