This guide contains the following main sections:
-
Building Locally:
Step-by-step instructions to buildfluxnova-bpm-platformon your local machine. -
Building with GitHub Actions on FINOS:
Details on how the project is built, tested, and deployed automatically using GitHub Actions, including workflow triggers and package management. -
Running Fluxnova BPM Platform:
Instructions for running Fluxnova in Tomcat and Spring Boot modes after building.
- Building Fluxnova BPM Platform Locally
- Building with GitHub Actions on FINOS
- Running Fluxnova BPM Platform
Please follow the relevant section based on your build environment.
- Java 21+
- Maven 3.8+
- Git
All Fluxnova dependencies are now public and published to Maven Central.
-
Clone and Build
fluxnova-bpm-platformRepositorygit clone https://github.com/finos/fluxnova-bpm-platform cd fluxnova-bpm-platform mvn clean install- To skip tests:
mvn clean install -DskipTests -DskipITs
- To run all tests:
mvn clean install
- To skip tests:
- All dependencies are resolved from Maven Central.
- Artifacts from each build will be stored in your local Maven repository and used by subsequent builds.
The fluxnova-bpm-platform project uses GitHub Actions for automated CI/CD on FINOS. This workflow builds, tests, and deploys the project.
- Automatic Triggers:
The workflow runs automatically on every push to themainbranch and on every pull request. - Manual Trigger:
You can manually trigger the workflow from the GitHub Actions tab using the "Run workflow" button.
When using this manual trigger (workflow_dispatch), you can select which branch to build.
- Checkout Repository:
Checks out the latest code from the selected branch. - Java Setup:
Sets up the required Java version. - Git Configuration:
Configures Git for the workflow environment. - Set Project Version:
Sets the Maven project version. - Download Dependencies:
Resolves and downloads all Maven dependencies and plugins. - Build and Deploy:
Builds the project and deploys artifacts to GitHub Packages. - Run Tests:
Runs unit and integration tests in separate jobs.
The deployment of artifacts to GitHub Packages is configured in the root pom.xml using the <distributionManagement> and <repositories> tags.
-
<distributionManagement>:
Specifies where Maven should deploy release and snapshot artifacts. For this project, both releases and snapshots are deployed to GitHub Packages. -
<repositories>:
Lists the Maven repositories (including GitHub Packages for all Fluxnova dependencies) from which dependencies are resolved during the build.
Example configuration in the root pom.xml:
<repositories>
<repository>
<id>fluxnova-bpm-platform</id>
<url>https://maven.pkg.github.com/finos/fluxnova-bpm-platform</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>fluxnova-feel-scala</id>
<url>https://maven.pkg.github.com/finos/fluxnova-feel-scala</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>fluxnova-bpm-release-parent</id>
<url>https://maven.pkg.github.com/finos/fluxnova-bpm-release-parent</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>fluxnova-release-parent</id>
<url>https://maven.pkg.github.com/finos/fluxnova-release-parent</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>fluxnova-bpm-platform</id>
<name>GitHub Fluxnova Maven Packages</name>
<url>https://maven.pkg.github.com/finos/fluxnova-bpm-platform</url>
</repository>
<snapshotRepository>
<id>fluxnova-bpm-platform</id>
<name>GitHub Fluxnova Maven Packages</name>
<url>https://maven.pkg.github.com/finos/fluxnova-bpm-platform</url>
</snapshotRepository>
</distributionManagement>This setup ensures that all builds and deployments use GitHub Packages for both publishing and resolving dependencies. The workflow uses the GH_TOKEN for authentication.
When building on GitHub Actions, you do not need to build dependent projects locally. All dependencies are already
built and published to GitHub Packages from their respective repositories. The workflow uses the GH_TOKEN (a GitHub Personal Access Token)
to access these packages securely.
- Go to the Packages section of the repository on GitHub to view published artifacts.
- These packages can be used as dependencies in other projects via GitHub Packages.
You can run Fluxnova in two modes: Tomcat and Spring Boot.
- After a successful build, extract the Tomcat distribution archive:
unzip distro/tomcat/distro/target/fluxnova-bpm-tomcat-0.0.1-SNAPSHOT.zip
- Navigate to the extracted folder:
cd fluxnova-bpm-tomcat-0.0.1-SNAPSHOT - Start the Fluxnova Tomcat server:
sh start-fluxnova.sh
- Access the Fluxnova Monitoring interface at http://localhost:8080/fluxnova/app/monitoring/default/#/dashboard
- After a successful build, extract the Spring Boot distribution archive:
unzip distro/run/distro/target/fluxnova-bpm-run-0.0.1-SNAPSHOT.zip
- Navigate to the extracted folder:
cd fluxnova-bpm-run-0.0.1-SNAPSHOT - Start the Spring Boot server:
sh start.sh
- Access the Fluxnova Monitoring interface at http://localhost:8080/fluxnova/app/monitoring/default/#/dashboard
You can run the Fluxnova BPM Platform using the official Docker image. By default, the image uses an embedded H2 database. You can customize it to use PostgreSQL or MySQL by providing the required JDBC driver version and database connection details.
docker pull ghcr.io/finos/fluxnova-bpm-platform:1.1.0docker run -p 8080:8080 ghcr.io/finos/fluxnova-bpm-platform:1.1.0To use PostgreSQL or MySQL, pass the driver version as a build argument and provide DB connection variables as environment variables:
docker run -p 8080:8080 \
-e DB_DRIVER_CLASS_NAME=org.postgresql.Driver \
-e DB_URL=jdbc:postgresql://<host>:<port>/<db> \
-e DB_USERNAME=<username> \
-e DB_PASSWORD=<password> \
ghcr.io/finos/fluxnova-bpm-platform:1.1.0Replace the values as needed for MySQL. Any other Spring Boot configuration can be passed as environment variables.
-
The Docker container runs the Spring Boot version of the application and does not include additional dependencies like connectors or script engines.
-
If you need a Docker image with these dependencies, use the image from the examples repo:
docker pull ghcr.io/finos/fluxnova-examples:1.0.0-snapshot