Skip to content

Docker container for CICD builds that has openjdk, node, npm, sonar runner. PhantomJS or Chrome headless

License

Notifications You must be signed in to change notification settings

DatasiteLabs/docker-cicd-node

Repository files navigation

docker-cicd-node

Docker container for CI/CD builds that has:

  • JFrog CLI
  • Chromium
  • Node
  • NPM/Yarn
  • Support for Cypress/Mongo In-Memory
  • JQ
  • Python

Docker GitHub release (latest SemVer)

This image was originally based off https://github.com/justinribeiro/dockerfiles/tree/master/chrome-headless of and is now heavily based off of https://github.com/cypress-io/cypress-docker-images.

Chrome headless

Example build command

docker build --pull -t merrillcorporation/docker-cicd-node/chrome-headless:1 ./chrome-headless

Run the following in your code workspace.

docker run \
    -d -it --rm -p 3000:3000 \
    -p 49152:49152 \
    -p 4200:4200 \
    -v $(pwd):/home/node/test \
    --name cicd-node-chrome \
    merrillcorporation/docker-cicd-node/chrome-headless:1

Execute against container

docker exec -it cicd-node-chrome bash

Application Requirements

e2e with protractor

Add the following to protractor config

capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: [ "--headless", "--disable-gpu", "--window-size=1024,768", "--no-sandbox" ]
    }
  },

Run example code. replace {appName} with your angular app

cd ~/test
npm run e2e -- --app {appname}

The test app

This app uses a couple of generated tests to excercise the dependencies.

Updating Cypress

  • Update package.json engines if changing.
  • Update any Dockerfile depenencies that can be updated
rm -rf test/cypress
npm rm --save-dev cypress
npm i --save-dev cypress
npx cypress open

After opening the Cypress app it will prompt you with options.

  • If there is a config migration, execute that.
  • Generate example tests

Mongo test app

See README for the mongo test suite on base tests

Local Testing

To use the build scripts, use docker buildx with multiplatform.

Create a builder

docker buildx create \
  --name container \
  --driver=docker-container

Setup a local registry

./local_registry.sh

Run the scripts

The localdomain can't be localhost, 0.0.0.0, 127.0.0.1 or others on the insecure repository list, port is 5001.

Use: 'host.docker.internal'

Run docker info to see list.

# ./build.sh <platforms> <localdomain:port>
./build.sh linux/arm64 host.docker.internal:5001 # to pass in a local domain, edit hostsfile

About

Docker container for CICD builds that has openjdk, node, npm, sonar runner. PhantomJS or Chrome headless

Resources

License

Stars

Watchers

Forks

Packages

No packages published