ci() add npm install before integration tests and samples

ci() add npm install before integration tests and sampels

ci() add machine option to integraiton tests

ci() setup remote docker for integration tests

ci() add unit tests mixin function

ci() add unit tests mixin function

ci() fix working directory for integration tests

ci() rename unit tests function

ci() use reusable run-unit-tests config

ci() update naming, add coveralls

ci() add alias for unit tests

ci() add aliases (circleci)

ci() remove run command from aliases

ci() fix aliases

ci(): fix restore cache alias

ci() add list containers step to integration tests

integration() bind urls and hosts to 0.0.0.0

ci() add waiting for mysql task

ci() hotfix, move tasks order (integration)

ci() wait for mysql - change hostname, increase sleep time

ci() add sleep after docker-compose up (integration)

ci() add sleep after docker-compose up fix (seconds)

ci() switch to machine mode (integration tests)

ci() use nvm to switch default node version

ci() hotfix, wrong indentation (integration tests)

ci() add ls-remove (nvm) and node version check

ci() fix install npm task

ci() wip use nvm to run integration tests

ci() remove NPM upgrade task
This commit is contained in:
Kamil Myśliwiec
2019-08-26 15:01:51 +02:00
parent 09c84e2086
commit 48fc6473bd
9 changed files with 106 additions and 25 deletions

View File

@@ -1,4 +1,31 @@
version: 2
aliases:
- &restore-cache
restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- &install-deps
run:
name: Install dependencies
command: npm ci
- &build-packages
run:
name: Build
command: npm run build
- &run-unit-tests
run:
name: Test
command: npm run test
unit-tests-template: &unit-tests-template
working_directory: ~/nest
steps:
- checkout
- *restore-cache
- *install-deps
- *build-packages
- *run-unit-tests
jobs:
build:
working_directory: ~/nest
@@ -22,27 +49,31 @@ jobs:
name: Build
command: npm run build
test:
test_node_12:
working_directory: ~/nest
docker:
- image: circleci/node:12
steps:
- checkout
- restore_cache:
name: Restore node_modules cache
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: npm ci
- run:
name: Build (dev)
command: npm run build
- run:
name: Test
command: npm run test
- *restore-cache
- *install-deps
- *build-packages
- *run-unit-tests
- run:
name: Collect coverage
command: npm run coverage
- store_artifacts:
path: coverage
test_node_10:
<<: *unit-tests-template
docker:
- image: circleci/node:10
test_node_8:
<<: *unit-tests-template
docker:
- image: circleci/node:8
lint:
working_directory: ~/nest
@@ -50,25 +81,40 @@ jobs:
- image: circleci/node:12
steps:
- checkout
- restore_cache:
name: Restore node_modules cache
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: npm ci
- *restore-cache
- *install-deps
- run:
name: Lint
command: npm run lint
integration_tests:
working_directory: ~/nest
docker:
- image: circleci/node:12
machine: true
steps:
- checkout
- run:
name: Upgrade Node.js
command: |
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
echo ' [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV
nvm install v12
node -v
nvm alias default v12
- run:
name: Install Docker Compose
command: |
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
chmod +x ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
- *install-deps
- run:
name: Prepare tests
command: bash ./scripts/prepare.sh
command: |
bash ./scripts/prepare.sh
sleep 10
- run:
name: List containers
command: docker ps
- run:
name: Integration tests
command: npm run integration-test
@@ -79,6 +125,8 @@ jobs:
- image: circleci/node:12
steps:
- checkout
- *restore-cache
- *install-deps
- run:
name: Build all samples
command: npm run build:samples
@@ -88,7 +136,13 @@ workflows:
build-and-test:
jobs:
- build
- test:
- test_node_12:
requires:
- build
- test_node_10:
requires:
- build
- test_node_8:
requires:
- build
- lint:

View File

@@ -18,9 +18,15 @@ describe('MQTT transport', () => {
app.connectMicroservice({
transport: Transport.MQTT,
options: {
host: '0.0.0.0',
},
});
app.connectMicroservice({
transport: Transport.MQTT,
options: {
host: '0.0.0.0',
},
});
await app.startAllMicroservicesAsync();
await app.init();

View File

@@ -18,9 +18,15 @@ describe('NATS transport', () => {
app.connectMicroservice({
transport: Transport.NATS,
options: {
url: 'nats://0.0.0.0:4222',
},
});
app.connectMicroservice({
transport: Transport.NATS,
options: {
url: 'nats://0.0.0.0:4222',
},
});
await app.startAllMicroservicesAsync();
await app.init();

View File

@@ -18,9 +18,15 @@ describe('REDIS transport', () => {
app.connectMicroservice({
transport: Transport.REDIS,
options: {
url: 'redis://0.0.0.0:6379',
},
});
app.connectMicroservice({
transport: Transport.REDIS,
options: {
url: 'redis://0.0.0.0:6379',
},
});
await app.startAllMicroservicesAsync();
await app.init();

View File

@@ -19,6 +19,9 @@ describe('MQTT transport', () => {
app.connectMicroservice({
transport: Transport.MQTT,
options: {
url: 'mqtt://0.0.0.0:1883',
},
});
await app.startAllMicroservicesAsync();
await app.init();

View File

@@ -20,7 +20,7 @@ describe('NATS transport', () => {
app.connectMicroservice({
transport: Transport.NATS,
options: {
url: 'nats://localhost:4222',
url: 'nats://0.0.0.0:4222',
},
});
await app.startAllMicroservicesAsync();

View File

@@ -19,6 +19,9 @@ describe('REDIS transport', () => {
app.connectMicroservice({
transport: Transport.REDIS,
options: {
url: 'redis://0.0.0.0:6379',
},
});
await app.startAllMicroservicesAsync();
await app.init();

View File

@@ -20,7 +20,7 @@ describe('RabbitMQ transport', () => {
app.connectMicroservice({
transport: Transport.RMQ,
options: {
urls: [`amqp://localhost:5672`],
urls: [`amqp://0.0.0.0:5672`],
queue: 'test',
queueOptions: { durable: false },
socketOptions: { noDelay: true },

View File

@@ -20,6 +20,9 @@ describe('RPC transport', () => {
app.connectMicroservice({
transport: Transport.TCP,
options: {
host: '0.0.0.0',
},
});
await app.startAllMicroservicesAsync();
await app.init();