concord
concord copied to clipboard
Concord - workflow orchestration and continuous deployment management
Concord
- Website: https://concord.walmartlabs.com
- Installation guide
- Core Plugins
- Community Plugins
Concord is a workflow server. It is the orchestration engine that connects different systems together using scenarios and plugins created by users.
- Building
- Console
- Integration tests
- Prerequisites
- Running tests
- Examples
- How To Release New Versions
Building
Dependencies:
- Git 2.18+
- Java 8
- Docker Community Edition
- (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; requestspython module is required. It can be installed by usingpip install requestsor the system package manager;- Java must be available in
$PATHasjava; - 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:3000environment 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