[gateway] Add binary distribution and container release flow - #4098
Conversation
| gateway.rest.header-read-timeout: 10s | ||
|
|
||
| # Server-side deadline for one REST write request. | ||
| gateway.rest.write.request-timeout: 30s |
There was a problem hiding this comment.
gateway.rest.request-timeout
gateway.rest.metadata.max-concurrent-requests
gateway.cluster.default.connection.security.protocol
6d84c55 to
9e7ce56
Compare
| "${SCRIPT_DIR}/prepare_build.sh" | ||
|
|
||
| image_version="${FLUSS_VERSION:-${gateway_version}}" | ||
| image_revision="${VCS_REF:-$(git -C "${REPOSITORY_ROOT}" rev-parse HEAD)}" |
There was a problem hiding this comment.
The documented just image path should also work from the official source tarball, which intentionally excludes .git. When VCS_REF is unset, git rev-parse HEAD may causes the build to fail; please fall back to unknown when Git metadata is unavailable.
There was a problem hiding this comment.
It looks like this status section may be outdated now that the DDL and write PRs have been merged. Could we update the supported API list accordingly?
| ```bash | ||
| docker buildx imagetools create apache/fluss:${RELEASE_VERSION}-rc${RC_NUM} --tag apache/fluss:${RELEASE_VERSION} | ||
|
|
||
| docker buildx imagetools create apache/fluss-gateway:${RELEASE_VERSION}-rc${RC_NUM} --tag apache/fluss-gateway:${RELEASE_VERSION} |
There was a problem hiding this comment.
Since the final release reuses the RC manifest, this may leave the final image with an -rcN version label. Could we use ${RELEASE_VERSION} for FLUSS_VERSION and keep the RC suffix only in the image tag?
|
|
||
|
|
||
| def indent(text: str) -> str: | ||
| return "\n".join("| " + line for line in text.rstrip().splitlines()) |
There was a problem hiding this comment.
It seems the generated LICENSE-bin contains trailing spaces on empty quoted lines, which makes git diff --check fail. Could we emit | for empty lines and regenerate the file?
| never builds the `fluss-rust` workspace. The container job builds the Gateway | ||
| against the in-tree client on native `amd64` and `arm64` runners, packages the | ||
| binary distribution, assembles the image from that distribution, and exercises | ||
| startup, health, readiness, non-root execution, configuration errors, and |
There was a problem hiding this comment.
The README mentions that configuration errors are covered by the container job, but I may have missed the corresponding check in smoke-test.sh. Could we either add this check or adjust the description?
5cfa2c0 to
ede321c
Compare
fresh-borzoni
left a comment
There was a problem hiding this comment.
@naivedogger Thank you for the PR, LGTM overall, one minor comment, PTAL
| if [[ "${GATEWAY_NEW_VERSION}" =~ ^[0-9]+\.[0-9]+$ ]]; then | ||
| GATEWAY_NEW_VERSION="${GATEWAY_NEW_VERSION}.0" | ||
| fi | ||
| if [[ ! "${GATEWAY_NEW_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z]+([.-][0-9A-Za-z]+)*)?(\+[0-9A-Za-z]+([.-][0-9A-Za-z]+)*)?$ ]]; then |
There was a problem hiding this comment.
This strips -SNAPSHOT, so 1.1-SNAPSHOT becomes gateway version 1.1.0, --version, the image label and the tarball name all claim the release while the branch is a snapshot.
The regex on line 64 would accept 1.1.0-SNAPSHOT. Should the snapshot keep its marker?
|
@fresh-borzoni Addressed, PTAL. |
fresh-borzoni
left a comment
There was a problem hiding this comment.
@naivedogger Thank you, LGTM 👍
There was a problem hiding this comment.
LGTM. I also validated the arm64 Gateway image with 43/43 E2E scenarios covering all 16 API operations and OpenAPI response schemas, and ran a short 600,000-row Log/KV write test with no request/row errors or client-side drops. Graceful shutdown also completed cleanly.
Purpose
Linked issue: close #4085
Brief change log
Tests
API and Format
Documentation