Skip to content

Concord - workflow orchestration and continuous deployment management

License

Notifications You must be signed in to change notification settings

walmartlabs/concord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concord

Concord is a workflow server. It is the orchestration engine that connects different systems together using scenarios and plugins created by users.

Building

Dependencies:

git clone https://github.com/walmartlabs/concord.git
cd concord
./mvnw clean install -DskipTests

Available Maven profiles:

  • docker - build Docker images;
  • it - run integration tests;
  • jdk17-aarch64 - use a different JDK version for building artifacts and Docker images.

Profiles can be combined, e.g.

./mvnw clean install -Pdocker -Pit -Pjdk17-aarch64

Console

See the console2/README.md file.

cd ./console2
npm ci # Install dependencies

Start the console in dev mode by running:

npm run start

Integration tests

Prerequisites

Prerequisites:

  • Git 2.3+
  • Docker, listening on tcp://127.0.0.1:2375;
  • Ansible 2.6.0+ must be installed and available in $PATH. See the official documentation;
  • requests python module is required. It can be installed by using pip install requests or the system package manager;
  • Java must be available in $PATH as java;
  • Chrome WebDriver available in $PATH.

Running tests

Integration tests are disabled by default. Use the it profile to enable them:

./mvnw verify -Pit

This will run ITs agains the locally running server and the agent. To automatically start and stop the server and the agent using docker, use the docker profile:

./mvnw verify -Pit -Pdocker

To run UI ITs in an IDE using the UI's dev mode:

  • start the UI's dev mode with cd console2 && npm start;
  • set up IT_CONSOLE_BASE_URL=http://localhost:3000 environment variable before running any UI tests.

Examples

See the examples directory.

How To Release New Versions

  • perform a regular Maven release:
    $ ./mvnw release:prepare release:perform
    
  • push the new tag:
    $ git push origin RELEASE_TAG
    
  • sync to Central;
  • build and push the Docker images:
    $ git checkout RELEASE_TAG
    $ ./mvnw -f docker-images clean package -Pdocker
    $ ./docker-images/push.sh RELEASE_TAG
    

Development Notes

See NOTES.md.