У меня есть 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