| # 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*"([^"]+)"' |