Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 32 additions & 3 deletions .github/workflows/gradle-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ on:
branches:
- develop
- main
- 2.x
paths-ignore:
- 'helm/**'
- 'docker-compose/**'
Expand Down Expand Up @@ -60,6 +59,36 @@ jobs:
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }}

- name: Setup pnpm for e2e dependencies
if: ${{ steps.gradle_build.outcome == 'success' }}
uses: pnpm/action-setup@v4
with:
version: 10

- name: Setup Node.js for e2e dependencies
if: ${{ steps.gradle_build.outcome == 'success' }}
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
cache-dependency-path: |
structures-js/structures-api/pnpm-lock.yaml
structures-js/structures-cli/pnpm-lock.yaml

- name: Build structures-api (for e2e link)
if: ${{ steps.gradle_build.outcome == 'success' }}
working-directory: structures-js/structures-api
run: |
pnpm install --frozen-lockfile
pnpm build

- name: Build structures-cli (for e2e link)
if: ${{ steps.gradle_build.outcome == 'success' }}
working-directory: structures-js/structures-cli
run: |
pnpm install --frozen-lockfile
pnpm build

- name: Run E2E Tests
id: run_e2e_tests
continue-on-error: true
Expand Down Expand Up @@ -107,7 +136,7 @@ jobs:
description: 'Passed'
state: 'success'
sha: ${{ github.sha }}
target_url: https://kinotic-ai.github.io/kinotic/allure/${{ github.run_number }}
target_url: https://mindsignited.github.io/structures/allure/${{ github.run_number }}

- name: Check If Failure
if: ${{ steps.gradle_build.outcome == 'failure' || steps.run_e2e_tests.outcome == 'failure' }}
Expand All @@ -123,4 +152,4 @@ jobs:
# Optionally mark the job as failed
exit 1

https://kinoitc-ai.github.io/kinotic/webdocs/guide/overview.html
https://mindsignited.github.io/structures/webdocs/guide/overview.html
6 changes: 3 additions & 3 deletions .github/workflows/load-generator-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ jobs:
context: ./structures-js/load-generator
push: true
platforms: linux/amd64,linux/arm64
tags: kinoticai/structures-load-generator:latest
cache-from: type=registry,ref=kinoticai/structures-load-generator:buildcache
cache-to: type=registry,ref=kinoticai/structures-load-generator:buildcache,mode=max
tags: mindsignited/structures-load-generator:latest
cache-from: type=registry,ref=mindsignited/structures-load-generator:buildcache
cache-to: type=registry,ref=mindsignited/structures-load-generator:buildcache,mode=max

- name: Add status to Commit
uses: guibranco/github-status-action-v2@v1.1.13
Expand Down
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Local frontend runtime config overrides (not for source control)
structures-frontend-next/public/app-config.override.json
structures-frontend-next/public/app-config.json.local
structures-frontend-next/public/config/app-config.override.json
structures-frontend-next/public/config/app-config.json.local
structures-frontend/public/app-config.override.json
structures-frontend/public/app-config.json.local
structures-frontend/public/config/app-config.override.json
structures-frontend/public/config/app-config.json.local
# Local service config overrides (not for source control)
structures-server/src/main/resources/application-local.yml

Expand Down
21 changes: 11 additions & 10 deletions .run/StructuresServerApplication.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@
<configuration default="false" name="StructuresServerApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
<option name="ACTIVE_PROFILES" value="development" />
<option name="ENABLE_JMX_AGENT" value="false" />
<envs>
<env name="JAVA_TOOL_OPTIONS" value="-javaagent:$PROJECT_DIR$/structures-server/src/main/resources/opentelemetry-javaagent.jar --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED" />
<env name="OTEL_EXPORTER_OTLP_ENDPOINT" value="http://127.0.0.1:4317" />
<env name="OTEL_EXPORTER_OTLP_PROTOCOL" value="grpc" />
<env name="OTEL_LOGS_EXPORTER" value="otlp" />
<env name="OTEL_METRICS_EXPORTER" value="otlp" />
<env name="OTEL_TRACES_EXPORTER" value="otlp" />
<env name="OTEL_SERVICE_NAME" value="structures-server" />
</envs>
<module name="kinotic.structures-server.main" />
<option name="SPRING_BOOT_MAIN_CLASS" value="org.kinotic.structuresserver.StructuresServerApplication" />
<option name="VM_PARAMETERS" value="-XX:MaxDirectMemorySize=1g -Xmx4096m -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC" />
<option name="VM_PARAMETERS" value="-XX:MaxDirectMemorySize=1g -Xmx4096m -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED" />
<extension name="net.ashald.envfile">
<option name="IS_ENABLED" value="false" />
<option name="IS_SUBST" value="false" />
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
<option name="IS_IGNORE_MISSING_FILES" value="false" />
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
<ENTRIES>
<ENTRY IS_ENABLED="true" PARSER="runconfig" IS_EXECUTABLE="false" />
</ENTRIES>
</extension>
<extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
<option name="credential" />
<option name="region" />
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Structures consists of several key components:
- **[structures-server](structures-server/README.md)**: REST API and web interface
- **[structures-auth](structures-auth/README.md)**: Authentication with OIDC support
- **[structures-cli](https://www.npmjs.com/package/@kinotic/structures-cli)**: Command-line tools
- **[structures-frontend-next](structures-frontend-next/README.md)**: Modern Vue 3 GUI
- **[structures-frontend-next](structures-frontend/README.md)**: Modern Vue 3 GUI

## 📚 Documentation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,28 +36,18 @@ dependencies {
// https://paketo.io/docs/reference/java-reference/
bootBuildImage {
network = "host"
publish = System.getenv("GITHUB_ACTIONS") == "true"
imageName = "kinoticai/${project.name}:${project.version}"
publish = true
imageName = "mindsignited/${project.name}:${project.version}"
tags = (!version.endsWith('SNAPSHOT') ?
[
"kinoticai/${project.name}:latest"
"mindsignited/${project.name}:latest"
]
: [])
environment = [
"BP_HEALTH_CHECKER_ENABLED": "true",
"THC_PATH": "/health", // Health check path for https://github.com/dmikusa/tiny-health-checker#usageor which is provided by the health-checker buildpack
"BPE_DELIM_JAVA_TOOL_OPTIONS" : " ",
"BPE_APPEND_JAVA_TOOL_OPTIONS": "-XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED",
"BPE_DELIM_JAVA_TOOL_OPTIONS" : " ",
"BPE_APPEND_JAVA_TOOL_OPTIONS": "-XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED"
]
buildpacks = [
"urn:cnb:builder:paketo-buildpacks/java",
"docker.io/paketobuildpacks/health-checker" // https://github.com/paketo-buildpacks/health-checker/tree/main
]
// builder = "paketobuildpacks/ubuntu-noble-builder"
docker {
// Use standard Docker socket to avoid API version issues
// host = System.getenv("DOCKER_HOST") ?: "unix:///var/run/docker.sock"

publishRegistry {
username = System.getenv("DOCKER_HUB_USERNAME")
password = System.getenv("DOCKER_HUB_PASSWORD")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ publishing {
}

pom {
name = 'Kinotic'
description = 'Rapid development platform for AI powered applications'
url = 'https://kinotic.ai'
name = 'Structures Framework'
description = 'Framework for data storage and retrieval, supporting schema evolution!'
url = 'https://github.com/MindsIgnited/structures'

licenses {
license {
Expand All @@ -47,14 +47,14 @@ publishing {
}
developers {
developer {
name = 'Kinotic AI Development Team'
email = 'develop@kinotic.ai'
name = 'Minds Ignited Developers'
email = 'develop@mindsignited.com'
}
}
scm {
connection = 'scm:git:https://github.com/kinotic-ai/kinotic.git'
developerConnection = 'scm:git:https://github.com/kinotic-ai/kinotic.git'
url = 'https://github.com/kinotic-ai/kinotic'
connection = 'scm:git:https://github.com/MindsIgnited/structures.git'
developerConnection = 'scm:git:https://github.com/MindsIgnited/structures.git'
url = 'https://github.com/MindsIgnited/structures'
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions dev-tools/kind/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ Build structures-server Docker image using Gradle's `bootBuildImage` task with S
1. Runs `./gradlew :structures-server:bootBuildImage`
2. Uses Paketo Buildpacks for optimized Java images
3. Includes health checker buildpack
4. Tags image as `kinoticai/structures-server:<version>` from gradle.properties
4. Tags image as `mindsignited/structures-server:<version>` from gradle.properties
5. Optionally loads into cluster if `--load` flag provided

**Time:** 2-5 minutes (first build), < 1 minute (subsequent builds with cache)
Expand All @@ -249,7 +249,7 @@ Load a locally built Docker image into KinD cluster nodes.
./kind-cluster.sh load

# Load specific image
./kind-cluster.sh load --image kinoticai/structures-server:0.5.0
./kind-cluster.sh load --image mindsignited/structures-server:3.5.3

# Load into specific cluster
./kind-cluster.sh load --name test-cluster
Expand Down Expand Up @@ -654,7 +654,7 @@ kubectl describe pod <pod-name>

# Common fixes:
# 1. If ImagePullBackOff on locally built image:
./kind-cluster.sh load --image kinoticai/structures-server:<version>
./kind-cluster.sh load --image mindsignited/structures-server:<version>

# 2. If resource constraints:
# Edit config/structures-server/values.yaml to reduce resource requests
Expand Down
12 changes: 6 additions & 6 deletions dev-tools/kind/config/structures-server/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# ./gradlew :structures-server:bootBuildImage
#
# 2. Load into KinD cluster:
# kind load docker-image kinoticai/structures-server:3.5.1-SNAPSHOT --name structures-cluster
# kind load docker-image mindsignited/structures-server:3.5.3-SNAPSHOT --name structures-cluster
#
# OR use the helper script:
# ./dev-tools/kind/kind-cluster.sh build --load
Expand All @@ -31,9 +31,9 @@ nameOverride: ""
# Image configuration
image:
# Repository matches bootBuildImage output
repository: kinoticai/structures-server
# Tag from gradle.properties version (structuresVersion=3.5.1-SNAPSHOT)
tag: 3.5.2
repository: mindsignited/structures-server
# Tag from gradle.properties version (structuresVersion=3.5.3-SNAPSHOT)
tag: 3.5.3
# Never pull - use images loaded into KinD cluster
pullPolicy: Never
sha: ""
Expand All @@ -45,8 +45,8 @@ migration:
backoffLimit: 3
activeDeadlineSeconds: 300
image:
repository: kinoticai/structures-migration
tag: 3.5.2
repository: mindsignited/structures-migration
tag: 3.5.3
# Never pull - use images loaded into KinD cluster
pullPolicy: Never
sha: ""
Expand Down
2 changes: 1 addition & 1 deletion dev-tools/kind/kind-cluster.sh
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ Examples:
$(basename "$0") load

# Load specific image
$(basename "$0") load --image kinoticai/structures-server:0.5.0
$(basename "$0") load --image mindsignited/structures-server:3.5.3

# Load into specific cluster
$(basename "$0") load --name test-cluster
Expand Down
10 changes: 5 additions & 5 deletions dev-tools/kind/lib/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ get_coredns_template_path() {
#
# Read version from gradle.properties
# Returns:
# Version string (e.g., "0.5.0-SNAPSHOT")
# Version string (e.g., "3.5.3-SNAPSHOT")
# Example:
# version=$(get_structures_version)
#
Expand All @@ -267,30 +267,30 @@ get_structures_version() {
#
# Get image name for structures-server
# Returns:
# Full image name (e.g., "kinoticai/structures-server:0.5.0-SNAPSHOT")
# Full image name (e.g., "mindsignited/structures-server:3.5.3-SNAPSHOT")
# Example:
# image=$(get_image_name)
#
get_image_name() {
local version
version=$(get_structures_version) || return 1

local image_name="${IMAGE_NAME:-kinoticai/structures-server}"
local image_name="${IMAGE_NAME:-mindsignited/structures-server}"
echo "${image_name}:${version}"
}

#
# Get image name for structures-migration
# Returns:
# Full image name (e.g., "kinoticai/structures-migration:0.5.0-SNAPSHOT")
# Full image name (e.g., "mindsignited/structures-migration:3.5.3-SNAPSHOT")
# Example:
# migration_image=$(get_migration_image_name)
#
get_migration_image_name() {
local version
version=$(get_structures_version) || return 1

echo "kinoticai/structures-migration:${version}"
echo "mindsignited/structures-migration:${version}"
}

#
Expand Down
10 changes: 5 additions & 5 deletions dev-tools/kind/lib/images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,11 @@ build_image() {
#
# Check if Docker image exists locally
# Args:
# $1: Image name (e.g., "kinoticai/structures-server:0.5.0-SNAPSHOT")
# $1: Image name (e.g., "mindsignited/structures-server:3.5.3-SNAPSHOT")
# Returns:
# 0 if exists, 1 otherwise
# Example:
# image_exists "kinoticai/structures-server:0.5.0-SNAPSHOT"
# image_exists "mindsignited/structures-server:3.5.3-SNAPSHOT"
#
image_exists() {
local image_name="$1"
Expand All @@ -102,7 +102,7 @@ image_exists() {
# Args:
# $1: Image name
# Example:
# get_image_info "kinoticai/structures-server:0.5.0-SNAPSHOT"
# get_image_info "mindsignited/structures-server:3.5.3-SNAPSHOT"
#
get_image_info() {
local image_name="$1"
Expand Down Expand Up @@ -154,7 +154,7 @@ get_image_info() {
# Returns:
# 0 on success, 1 on failure
# Example:
# load_image_into_cluster "structures-cluster" "kinoticai/structures-server:0.5.0-SNAPSHOT"
# load_image_into_cluster "structures-cluster" "mindsignited/structures-server:3.5.3-SNAPSHOT"
#
load_image_into_cluster() {
local cluster_name="$1"
Expand Down Expand Up @@ -212,7 +212,7 @@ load_image_into_cluster() {
# Args:
# $1: Image name
# Example:
# display_deployment_instructions "kinoticai/structures-server:0.5.0-SNAPSHOT"
# display_deployment_instructions "mindsignited/structures-server:3.5.3-SNAPSHOT"
#
display_deployment_instructions() {
local image_name="$1"
Expand Down
4 changes: 2 additions & 2 deletions docker-compose/compose.ek-stack.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
structures-elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.18.1
image: docker.elastic.co/elasticsearch/elasticsearch:8.19.13
container_name: structures-elasticsearch
environment:
- discovery.type=single-node
Expand All @@ -25,7 +25,7 @@ services:
volumes:
- ~/structures/elastic-data:/usr/share/elasticsearch/data
structures-kibana:
image: docker.elastic.co/kibana/kibana:8.18.1
image: docker.elastic.co/kibana/kibana:8.19.13
container_name: structures-kibana
depends_on:
structures-elasticsearch:
Expand Down
2 changes: 1 addition & 1 deletion docker-compose/compose.gen-schemas.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
load-generator:
image: kinoticai/structures-load-generator:latest
image: mindsignited/structures-load-generator:latest
pull_policy: always
container_name: structures-gen-schemas
environment:
Expand Down
4 changes: 2 additions & 2 deletions docker-compose/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ services:
structures-migration:
container_name: structures-migration
pull_policy: always
image: kinoticai/structures-migration:${structuresVersion:-3.5.2}
image: mindsignited/structures-migration:${structuresVersion:-3.5.3}
depends_on:
structures-elasticsearch:
condition: service_healthy
Expand All @@ -17,7 +17,7 @@ services:
structures-server:
container_name: structures-server
pull_policy: always
image: kinoticai/structures-server:${structuresVersion:-3.5.2}
image: mindsignited/structures-server:${structuresVersion:-3.5.3}
depends_on:
structures-elasticsearch:
condition: service_healthy
Expand Down
Loading
Loading