blob: 36376d34c623a4be7b88362f594edeb0fd54ebac [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
components:
# ── Rust crates (crates.io) ────────────────────────────────────────────────
rust-sdk:
tag_pattern: "^iggy-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: crates
package: iggy
version_file: "core/sdk/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
rust-cli:
tag_pattern: "^cli-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: crates
package: iggy-cli
version_file: "core/cli/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
rust-binary-protocol:
tag_pattern: "^binary-protocol-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: crates
package: iggy_binary_protocol
version_file: "core/binary_protocol/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
rust-common:
tag_pattern: "^common-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: crates
package: iggy_common
version_file: "core/common/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
# ── DockerHub images ───────────────────────────────────────────────────────
rust-server:
tag_pattern: "^server-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: dockerhub
image: apache/iggy
dockerfile: core/server/Dockerfile
platforms: ["linux/amd64", "linux/arm64"]
version_file: "core/server/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
# :edge refresh gate (scripts/ci/edge-affected-images.sh). Ships server + CLI
# with the web UI embedded at compile time, so web-only changes must rebuild
# it. crates: matched against `cargo rail plan`; paths: extra git pathspecs
# (the dockerfile: above is gated automatically).
gate:
crates: [server, iggy-cli]
paths: [web]
rust-mcp:
tag_pattern: "^mcp-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: dockerhub
image: apache/iggy-mcp
dockerfile: core/ai/mcp/Dockerfile
platforms: ["linux/amd64", "linux/arm64"]
version_file: "core/ai/mcp/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
gate:
crates: [iggy-mcp]
rust-bench-dashboard:
tag_pattern: "^bench-dashboard-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: dockerhub
image: apache/iggy-bench-dashboard
dockerfile: core/bench/dashboard/server/Dockerfile
platforms: ["linux/amd64", "linux/arm64"]
version_file: "core/bench/dashboard/server/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
# Image bundles the server binary plus the built WASM frontend.
gate:
crates: [iggy-bench-dashboard-server, bench-dashboard-frontend]
paths:
- core/bench/dashboard/server/docker-entrypoint.sh
rust-connectors:
tag_pattern: "^connectors-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: dockerhub
image: apache/iggy-connect
dockerfile: core/connectors/runtime/Dockerfile
platforms: ["linux/amd64", "linux/arm64"]
version_file: "core/connectors/runtime/Cargo.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
# Image ships only the runtime binary; plugin .so files are not bundled.
gate:
crates: [iggy-connectors]
web-ui:
tag_pattern: "^web-ui-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: dockerhub
image: apache/iggy-web-ui
dockerfile: web/Dockerfile
platforms: ["linux/amd64", "linux/arm64"]
version_file: "web/package.json"
version_regex: '"version"\s*:\s*"([^"]+)"'
# Not a cargo crate: path-gated only. The Dockerfile also COPYs two
# license scripts from scripts/ci/ into the build.
gate:
paths:
- web
- scripts/ci/third-party-licenses.sh
- scripts/ci/render-node-licenses.mjs
# ── Other SDKs ─────────────────────────────────────────────────────────────
sdk-python:
tag_pattern: "^python-sdk-([0-9]+\\.[0-9]+\\.[0-9]+(?:[.-][0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: pypi
version_file: "foreign/python/pyproject.toml"
version_regex: '(?m)^\s*version\s*=\s*"([^"]+)"'
sdk-node:
tag_pattern: "^node-sdk-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: npm
version_file: "foreign/node/package.json"
version_regex: '"version"\s*:\s*"([^"]+)"'
sdk-java:
tag_pattern: "^java-sdk-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: maven
version_file: "foreign/java/gradle.properties"
version_regex: '(?m)^\s*version\s*=\s*([^\s]+)'
sdk-csharp:
tag_pattern: "^csharp-sdk-([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: nuget
version_file: "foreign/csharp/Iggy_SDK/Iggy_SDK.csproj"
version_regex: '(?ms)<(?:PackageVersion|Version)>\s*([^<]+)\s*</(?:PackageVersion|Version)>'
# ── Go (tag only, no registry publish) ─────────────────────────────────────
sdk-go:
tag_pattern: "^foreign/go/v([0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?)$"
registry: none
version_file: "foreign/go/contracts/version.go"
version_regex: 'const\s+Version\s*=\s*"([^"]+)"'