Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improve build instructions #1265

Merged
merged 1 commit into from
Nov 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions tools/zip-sources-files/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
Building Apache KIE

There are two ways to build the KIE projects:

Option 1: Using the Automated Build Script

Run the provided build script (in case of windows you have to use WSL with bash):
- ./build.sh

Option 2: Manual Step-by-Step Build

If you prefer to build manually, follow these steps:

Prerequisites
- Temurin JDK 17.0.11
- Maven 3.9.6
- GraalVM for JDK 17
- Docker 25+
- Python 3.12
- Make 4.3+
- Node 20
- PNPM 9.3.0
- Go 1.21.9
- Helm 3.15.2

Install Python packages:
pip install cekit==4.11.0 docker==7.0.0 docker-squash==1.2.0 ruamel.yaml==0.18.5

Docker Configuration
If using an alternative container runtime:

For Colima:
export DOCKER_HOST=unix://${HOME}/.colima/default/docker.sock

For Rancher:
export DOCKER_HOST=unix://$HOME/.rd/docker.sock

For Podman:
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock

Build Steps

1. Build Drools:
cd incubator-kie-drools
git init .
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

2. Build OptaPlanner:
cd incubator-kie-optaplanner
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

3. Build Kogito Runtimes:
cd incubator-kie-kogito-runtimes
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

4. Build Kogito Apps:
cd incubator-kie-kogito-apps
mvn clean install -DskipTests -Dfull -Donly.reproducible=true -Pjitexecutor-native
cd ..

5. Build Kogito Images:
cd incubator-kie-kogito-images
cekit --descriptor kogito-base-builder-image.yaml build docker --platform linux/amd64
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-data-index-ephemeral
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-data-index-postgresql
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-jit-runner
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-jobs-service-allinone
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-jobs-service-ephemeral
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name=kogito-jobs-service-postgresql
cd ..

6. Build KIE Tools:
cd incubator-kie-tools
git init .
git config user.name "Builder"
git config user.email "[email protected]"
git add . && git commit -m "Initial commit"
pnpm bootstrap
export KIE_TOOLS_BUILD__runTests=false
export KIE_TOOLS_BUILD__buildExamples=true
export KIE_TOOLS_BUILD__buildContainerImages=true
pnpm -r --workspace-concurrency=1 build:prod
cd ..

Note: The KIE Sandbox Quarkus Accelerator does not require building. The source itself is the artifact.
103 changes: 103 additions & 0 deletions tools/zip-sources-files/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#!/bin/bash
# build.sh

# Check required tools
check_requirements() {
local requirements=(
"java:17.0.11"
"mvn:3.9.6"
"docker:25"
"python3:3.12"
"make:4.3"
"node:20"
"pnpm:9.3.0"
"go:1.21.9"
"helm:3.15.2"
)

echo "Checking requirements..."
for req in "${requirements[@]}"; do
IFS=':' read -r cmd version <<< "$req"
if ! command -v "$cmd" &> /dev/null; then
echo "ERROR: $cmd is not installed"
exit 1
fi
done

# Check Python packages
pip3 install cekit==4.11.0 docker==7.0.0 docker-squash==1.2.0 ruamel.yaml==0.18.5
}

# Set Docker host based on container runtime
setup_docker_host() {
if command -v colima &> /dev/null; then
export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"
elif command -v rancher &> /dev/null; then
export DOCKER_HOST="unix://$HOME/.rd/docker.sock"
elif command -v podman &> /dev/null; then
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
fi
}

# Build components
build_components() {
# Build Drools
cd incubator-kie-drools || exit 1
git init .
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

# Build OptaPlanner
cd incubator-kie-optaplanner || exit 1
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

# Build Kogito Runtimes
cd incubator-kie-kogito-runtimes || exit 1
mvn clean install -DskipTests -Dfull -Donly.reproducible=true
cd ..

# Build Kogito Apps
cd incubator-kie-kogito-apps || exit 1
mvn clean install -DskipTests -Dfull -Donly.reproducible=true -Pjitexecutor-native
cd ..

# Build Kogito Images
cd incubator-kie-kogito-images || exit 1
cekit --descriptor kogito-base-builder-image.yaml build docker --platform linux/amd64

local images=(
"kogito-data-index-ephemeral"
"kogito-data-index-postgresql"
"kogito-jit-runner"
"kogito-jobs-service-allinone"
"kogito-jobs-service-ephemeral"
"kogito-jobs-service-postgresql"
)

for image in "${images[@]}"; do
make build-image KOGITO_APPS_TARGET_BRANCH=10.0.0-rc2 ignore_test=true image_name="$image"
done
cd ..

# Build KIE Tools
cd incubator-kie-tools || exit 1
git init .
git config user.name "Builder"
git config user.email "[email protected]"
git add . && git commit -m "Initial commit"
pnpm bootstrap
export KIE_TOOLS_BUILD__runTests=false
export KIE_TOOLS_BUILD__buildExamples=true
export KIE_TOOLS_BUILD__buildContainerImages=true
pnpm -r --workspace-concurrency=1 build:prod
}

# Main execution
main() {
check_requirements
setup_docker_host
build_components
}

main "$@"