Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
bccdd77
ci: collect coverage from race UT and BVT jobs
XuPeng-SH Jul 25, 2026
30c389b
ci: add coverage integration validation workflow
XuPeng-SH Jul 25, 2026
52c37d5
ci: route compose BVT through proxy
XuPeng-SH Jul 26, 2026
fb16dd3
ci: split BVT coverage into two groups
XuPeng-SH Jul 26, 2026
8a7f71e
ci: add scoped coverage integration harness
XuPeng-SH Jul 26, 2026
b33655c
ci: rebalance BVT groups by observed timing
XuPeng-SH Jul 26, 2026
f1cd130
fix: respect context in qcloud retries
XuPeng-SH Jul 26, 2026
40e358d
fix: bound object storage retries by context
XuPeng-SH Jul 26, 2026
01ca233
ci: validate right-sized coverage runner
XuPeng-SH Jul 26, 2026
dd5849b
ci: rerun coverage runner validation
XuPeng-SH Jul 26, 2026
84f1caf
ci: rebalance BVT case groups
XuPeng-SH Jul 26, 2026
6f2429a
ci: validate coverage observability
XuPeng-SH Jul 26, 2026
cc77cd7
ci: rerun UT timing summary validation
XuPeng-SH Jul 26, 2026
d1b4943
ci: preserve BVT resources and stable entrypoint refs
XuPeng-SH Jul 26, 2026
3c05fb8
ci: validate compacted coverage artifacts
XuPeng-SH Jul 26, 2026
78942a8
fix: bound object storage cleanup and test deadlines
XuPeng-SH Jul 26, 2026
f6bf674
ci: complete parallel coverage rollout
XuPeng-SH Jul 26, 2026
cce0402
ci: remove coverage validation harness
XuPeng-SH Jul 26, 2026
8834b71
ci: make parallel coverage rerun-safe
XuPeng-SH Jul 26, 2026
8964daa
ci: validate parallel coverage integration
XuPeng-SH Jul 26, 2026
61e0490
ci: opt main into parallel BVT
XuPeng-SH Jul 26, 2026
218eedc
ci: isolate parallel coverage callers
XuPeng-SH Jul 26, 2026
16b812a
ci: restrict workflow token permissions
XuPeng-SH Jul 26, 2026
f5fe773
ci: validate coverage against merged workflows
XuPeng-SH Jul 27, 2026
02532a0
ci: remove parallel coverage validation harness
XuPeng-SH Jul 27, 2026
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
71 changes: 64 additions & 7 deletions .github/workflows/entrypoint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ name: MatrixOne ALL CI

on:
pull_request_target:
types: [ opened, synchronize, reopened ]
branches: [ main,'[0-9]+.[0-9]+*' ]
types: [ opened, synchronize, reopened, ready_for_review ]
branches: [ main, 4.2-dev, '[0-9]+.[0-9]+*' ]

concurrency:
group: ${{ github.event.pull_request.head.repo.full_name}}/${{ github.event.pull_request.head.ref }}/${{ github.workflow }}
cancel-in-progress: true

permissions:
contents: read

jobs:
check-pr-valid:
runs-on: ubuntu-latest
Expand All @@ -23,6 +26,35 @@ jobs:
title_for_find_issue: "Which issue(s) this PR fixes:"
title_for_find_content: "What this PR does / why we need it:"

bvt-group-plan:
name: Plan complementary BVT groups
needs: check-pr-valid
if: ${{ needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
runs-on: ubuntu-latest
outputs:
compose_group: ${{ steps.plan.outputs.compose_group }}
launch_group: ${{ steps.plan.outputs.launch_group }}
generation: ${{ steps.plan.outputs.generation }}
steps:
- id: plan
name: Assign both BVT groups
run: |
set -euo pipefail
compose_group=$(( (${{ github.run_id }} + ${{ github.run_attempt }}) % 2 ))
launch_group=$((1 - compose_group))
generation='${{ github.run_id }}-${{ github.run_attempt }}'
{
echo "compose_group=${compose_group}"
echo "launch_group=${launch_group}"
echo "generation=${generation}"
} >> "$GITHUB_OUTPUT"
{
echo '### BVT group plan'
echo "- Compose + Proxy: group ${compose_group}"
echo "- Launch + Pessimistic: group ${launch_group}"
echo "- Generation: ${generation}"
} >> "$GITHUB_STEP_SUMMARY"

# ============ 非 3.0-dev 分支使用 @main ============
matrixone-ci:
name: Matrixone CI
Expand All @@ -31,6 +63,15 @@ jobs:
uses: matrixorigin/CI/.github/workflows/ci.yaml@main
secrets: inherit

matrixone-ut-coverage:
name: Matrixone UT Coverage
needs: [check-pr-valid, bvt-group-plan]
if: ${{ needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
uses: matrixorigin/CI/.github/workflows/coverage-ut.yaml@main
with:
bvt_generation: ${{ needs.bvt-group-plan.outputs.generation }}
secrets: inherit

matrixone-upgrade-ci:
name: Matrixone Upgrade CI
needs: check-pr-valid
Expand All @@ -40,23 +81,39 @@ jobs:

matrixone-compose-ci:
name: Matrixone Compose CI
needs: check-pr-valid
needs: [check-pr-valid, bvt-group-plan]
if: ${{ needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
uses: matrixorigin/CI/.github/workflows/e2e-compose.yaml@main
uses: matrixorigin/CI/.github/workflows/e2e-compose-parallel.yaml@main
with:
bvt_group: ${{ needs.bvt-group-plan.outputs.compose_group }}
bvt_generation: ${{ needs.bvt-group-plan.outputs.generation }}
secrets: inherit

matrixone-standalone-ci:
name: Matrixone Standlone CI
needs: check-pr-valid
needs: [check-pr-valid, bvt-group-plan]
if: ${{ needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
uses: matrixorigin/CI/.github/workflows/e2e-standalone.yaml@main
uses: matrixorigin/CI/.github/workflows/e2e-standalone-parallel.yaml@main
with:
bvt_group: ${{ needs.bvt-group-plan.outputs.launch_group }}
bvt_generation: ${{ needs.bvt-group-plan.outputs.generation }}
secrets: inherit

matrixone-utils-ci:
name: Matrixone Utils CI
needs: check-pr-valid
if: ${{ needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
uses: matrixorigin/CI/.github/workflows/utils.yaml@main
uses: matrixorigin/CI/.github/workflows/utils-parallel.yaml@main
secrets: inherit

matrixone-coverage-merge:
name: Matrixone Utils CI
needs: [check-pr-valid, bvt-group-plan, matrixone-ut-coverage, matrixone-compose-ci, matrixone-standalone-ci]
if: ${{ always() && needs.check-pr-valid.outputs.pr_valid == 'true' && github.base_ref != '3.0-dev' }}
uses: matrixorigin/CI/.github/workflows/coverage-merge.yaml@main
with:
prerequisites_ready: ${{ needs.bvt-group-plan.result == 'success' && needs.matrixone-ut-coverage.result == 'success' && needs.matrixone-ut-coverage.outputs.coverage_ready == 'true' && needs.matrixone-compose-ci.result == 'success' && needs.matrixone-standalone-ci.result == 'success' }}
expected_bvt_generation: ${{ needs.bvt-group-plan.outputs.generation }}
secrets: inherit

# ============ 3.0-dev 分支使用 @release/3.0-dev ============
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/iceberg-connector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ name: Iceberg Connector E2E

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- '.github/workflows/entrypoint.yaml'
- '.github/workflows/iceberg-connector.yml'
- 'Makefile'
- 'optools/iceberg_ci.bash'
Expand Down
13 changes: 7 additions & 6 deletions etc/launch-tae-compose/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ docker compose -f etc/launch-tae-compose/compose.yaml --profile launch-multi-cn
# cn-1
docker compose -f etc/launch-tae-compose/compose.yaml --profile launch-multi-cn logs cn-1

# proxy
docker compose -f etc/launch-tae-compose/compose.yaml --profile launch-multi-cn logs proxy

# tn
docker compose -f etc/launch-tae-compose/compose.yaml --profile launch-multi-cn logs tn

Expand All @@ -47,17 +50,15 @@ docker compose -f etc/launch-tae-compose/compose.yaml --profile launch-multi-cn
username: minio
password: minio123

## connect service
## connect service through proxy

cn-0
```shell
mysql -h 127.0.0.1 -P 6001 -udump -p111
```

cn-1:
```shell
mysql -h 127.0.0.1 -P 7001 -udump -p111
```
Port `6001` is the Proxy entrypoint. CN SQL ports are intentionally not
published to the host; clients should enter through Proxy so that both CNs are
eligible backends.

## down

Expand Down
42 changes: 36 additions & 6 deletions etc/launch-tae-compose/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ x-mo-common: &mo-common
# Typecheck: enable type checking for ToSliceNoTypeCheck and ToSliceNoTypeCheck2
# Default: 0 (disabled), set to 1 to enable
TYPECHECK: ${TYPECHECK:-0}
GOBUILD_OPT: ${GOBUILD_OPT:-}
image: matrixorigin/matrixone:latest
volumes:
- ../../etc/launch-tae-compose/config:/config
- ../../test:/test
- ../../docker-compose-log:/log
- ../../coverage:/coverage
restart: on-failure
tty: true

Expand All @@ -23,20 +25,22 @@ services:
cn-0:
container_name: cn-0
<<: *mo-common
entrypoint: ["/bin/bash","-c","set -euo pipefail; /mo-service -debug-http :12345 -cfg /config/cn-0.toml | tee -a /log/cn-0.log"]
# exec makes mo-service PID 1, so docker compose down delivers SIGTERM to
# the instrumented process and lets it flush GOCOVERDIR before shutdown.
entrypoint: ["/bin/bash","-c","set -euo pipefail; exec /mo-service -debug-http :12345 -cfg /config/cn-0.toml > >(tee -a /log/cn-0.log) 2>&1"]
profiles:
- launch
- launch-multi-cn
depends_on:
- tn
ports:
- "6001:6001"
- "6002"
- "12345:12345"
environment:
- AWS_ACCESS_KEY_ID=minio
- AWS_SECRET_ACCESS_KEY=minio123
- mo_reuse_enable_checker=true
- GOCOVERDIR=/coverage
networks:
monet:
aliases:
Expand All @@ -45,11 +49,10 @@ services:
cn-1:
container_name: cn-1
<<: *mo-common
entrypoint: ["/bin/bash","-c","set -euo pipefail; /mo-service -debug-http :12345 -cfg /config/cn-1.toml | tee -a /log/cn-1.log"]
entrypoint: ["/bin/bash","-c","set -euo pipefail; exec /mo-service -debug-http :12345 -cfg /config/cn-1.toml > >(tee -a /log/cn-1.log) 2>&1"]
depends_on:
- tn
ports:
- "7001:6001"
- "6002"
- "22345:12345"
profiles:
Expand All @@ -59,15 +62,40 @@ services:
- AWS_ACCESS_KEY_ID=minio
- AWS_SECRET_ACCESS_KEY=minio123
- mo_reuse_enable_checker=true
- GOCOVERDIR=/coverage
networks:
monet:
aliases:
- "cn1"

proxy:
container_name: proxy
<<: *mo-common
entrypoint: ["/bin/bash","-c","set -euo pipefail; exec /mo-service -debug-http :12345 -cfg /config/proxy.toml > >(tee -a /log/proxy.log) 2>&1"]
profiles:
- launch
- launch-multi-cn
depends_on:
- logservice
- cn-0
- cn-1
ports:
- "6001:6009"
- "32346:12345"
environment:
- AWS_ACCESS_KEY_ID=minio
- AWS_SECRET_ACCESS_KEY=minio123
- mo_reuse_enable_checker=true
- GOCOVERDIR=/coverage
networks:
monet:
aliases:
- "proxy"

tn:
container_name: tn
<<: *mo-common
entrypoint: ["/bin/bash","-c","set -euo pipefail; /mo-service -debug-http :12345 -cfg /config/tn.toml | tee -a /log/tn.log"]
entrypoint: ["/bin/bash","-c","set -euo pipefail; exec /mo-service -debug-http :12345 -cfg /config/tn.toml > >(tee -a /log/tn.log) 2>&1"]
profiles:
- launch
- launch-multi-cn
Expand All @@ -80,6 +108,7 @@ services:
- AWS_ACCESS_KEY_ID=minio
- AWS_SECRET_ACCESS_KEY=minio123
- mo_reuse_enable_checker=true
- GOCOVERDIR=/coverage
networks:
monet:
aliases:
Expand All @@ -91,7 +120,7 @@ services:
profiles:
- launch
- launch-multi-cn
entrypoint: ["/bin/bash","-c","set -euo pipefail; /mo-service -debug-http :12345 -cfg /config/log.toml | tee -a /log/logservice.log"]
entrypoint: ["/bin/bash","-c","set -euo pipefail; exec /mo-service -debug-http :12345 -cfg /config/log.toml > >(tee -a /log/logservice.log) 2>&1"]
depends_on:
- createbuckets
ports:
Expand All @@ -103,6 +132,7 @@ services:
- AWS_ACCESS_KEY_ID=minio
- AWS_SECRET_ACCESS_KEY=minio123
- mo_reuse_enable_checker=true
- GOCOVERDIR=/coverage
networks:
monet:
aliases:
Expand Down
1 change: 1 addition & 0 deletions etc/launch-tae-compose/config/cn-0.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type = "distributed-tae"

[cn.frontend]
port = 6001
proxy-enabled = true

[cn.frontend.iceberg]
enable = true
Expand Down
1 change: 1 addition & 0 deletions etc/launch-tae-compose/config/cn-1.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type = "distributed-tae"

[cn.frontend]
port = 6001
proxy-enabled = true

[cn.frontend.iceberg]
enable = true
Expand Down
43 changes: 43 additions & 0 deletions etc/launch-tae-compose/config/proxy.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
service-type = "PROXY"
data-dir = "/var/lib/matrixone/data"

[log]
level = "info"
format = "console"
max-size = 512

[hakeeper-client]
service-addresses = ["logservice:32001"]

[[fileservice]]
backend = "DISK-V2"
data-dir = "/var/lib/matrixone/data"
name = "LOCAL"

[[fileservice]]
backend = "MINIO"
name = "SHARED"

[fileservice.s3]
bucket = "mo-test"
endpoint = "http://minio:9000"
key-prefix = "server/data"
cert-files = ["/etc/ssl/cert.pem"]

[fileservice.cache]
memory-capacity = "512MB"
disk-capacity = "1GB"
disk-path = "mo-data/file-service-cache"

[[fileservice]]
backend = "MINIO"
name = "ETL"

[fileservice.s3]
bucket = "mo-test"
endpoint = "http://minio:9000"
key-prefix = "server/etl"

[proxy]
uuid = "rd1dccb4-4d3c-41f8-b482-5251dc7a41bf"
listen-address = "0.0.0.0:6009"
10 changes: 6 additions & 4 deletions optools/images/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ RUN go env -w GOPROXY=${GOPROXY}
# Typecheck: enable type checking for ToSliceNoTypeCheck and ToSliceNoTypeCheck2
# Default: 0 (disabled), set to 1 to enable
ARG TYPECHECK=0
ARG GOBUILD_OPT=""

RUN mkdir -p /go/src/github.com/matrixorigin/matrixone

Expand All @@ -28,9 +29,9 @@ RUN module_files="$(sha256sum go.mod go.sum)" && \
COPY . .

RUN if [ "$TYPECHECK" = "1" ]; then \
make clean && make build TYPECHECK=1; \
make clean && make build TYPECHECK=1 GOBUILD_OPT="${GOBUILD_OPT}"; \
else \
make clean && make build; \
make clean && make build GOBUILD_OPT="${GOBUILD_OPT}"; \
fi

FROM matrixorigin/ubuntu:22.04
Expand All @@ -42,8 +43,9 @@ COPY --from=builder /go/src/github.com/matrixorigin/matrixone/cgo/*.so /usr/loca
COPY --from=builder /go/src/github.com/matrixorigin/matrixone/pkg/monlp/tokenizer/dict /usr/local/share/jieba
ENV MO_JIEBA_DICT_DIR=/usr/local/share/jieba

# ldconfig and run mo-service to check if the shared library is found
RUN ldconfig && /mo-service -h
# ldconfig and run mo-service to check if the shared library is found. A
# coverage-instrumented binary requires a writable GOCOVERDIR even for -h.
RUN mkdir -p /tmp/coverage && ldconfig && GOCOVERDIR=/tmp/coverage /mo-service -h

WORKDIR /

Expand Down
Loading
Loading