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 2.18+
- Java 8
- Docker Community Edition
- Docker Buildx
- (Optional) NodeJS and NPM (Node 16 or greater)
git clone https://github.com/walmartlabs/concord.git
cd concord
./mvnw clean install -DskipTests
Available Maven profiles:
docker
- build Docker images;debian
- build Debian-based Docker images instead of the default CentOS base;it
- run integration tests;jdk11
,jdk17
,jdk8-aarch64
,jdk17-aarch64
- use a different JDK version for building artifacts and Docker images.
Profiles can be combined, e.g.
./mvnw clean install -Pdocker -Pdebian -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 usingpip install requests
or the system package manager;- Java must be available in
$PATH
asjava
; - 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 the regular Maven release:
$ ./mvnw release:prepare release:perform
- push the tags:
$ git push --tags
- 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.