mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-05 11:45:39 +00:00
36e07e104a
- New RustFS Replication Test workflow (rustfs-replication-test.yml): standalone workflow_dispatch (suite selector bucket/site/all) and repository_dispatch rustfs-chain-replication; runs on the shared smoke-testing runner under the shared functional concurrency group. - Suite never fails the workflow (continue-on-error): failures are filed as redacted issues in rustfs/backlog (deduped per run) and the report is uploaded to rustfs/dashboard functional-reports/replication/<date>.md. - Security now hands off to Replication, making it the tenth and final link: upgrade -> s3 -> kms -> tier -> storage -> heal -> pool -> security -> replication (performance stays parallel on pf-testing). - Depends on rustfs/auto-testing#27 (rustfs-replication-test.sh). Co-authored-by: houseme <housemecn@gmail.com>
75 lines
3.0 KiB
YAML
75 lines
3.0 KiB
YAML
# Copyright 2024 RustFS Team
|
|
#
|
|
# Licensed 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.
|
|
|
|
# Functional chain driver: runs the ten functional suites in a fixed order
|
|
# (upgrade -> s3 -> kms -> tier -> storage -> heal -> pool -> security ->
|
|
# replication, with performance on its own runner in parallel) and guarantees
|
|
# the chain keeps moving even when individual suites fail.
|
|
#
|
|
# Each suite workflow can still be dispatched standalone (workflow_dispatch);
|
|
# only chain-triggered runs forward to the next suite via repository_dispatch,
|
|
# so a standalone run never drags the rest of the chain behind it.
|
|
#
|
|
# Why not workflow_run chaining: GitHub does not guarantee delivery of
|
|
# workflow_run events (they are fire-and-forget), and the head-SHA filter made
|
|
# newly added suites (storage) unable to trigger at all. Explicit
|
|
# repository_dispatch handoffs are verifiable and re-drivable.
|
|
|
|
name: RustFS Functional Chain
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_run:
|
|
# Entry point: start the chain after the nightly build completes. The
|
|
# build's own conclusion does not gate the chain; each suite reports its
|
|
# own result to rustfs/backlog and the dashboard.
|
|
workflows: ["Nightly GNU Build"]
|
|
types: [completed]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
start-chain:
|
|
name: Start functional chain (upgrade first)
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'workflow_run' && github.event.workflow_run.event == 'schedule') }}
|
|
steps:
|
|
- name: Dispatch first suite (upgrade)
|
|
env:
|
|
GH_TOKEN: ${{ secrets.PF_TESTING_GH_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
if [ -z "${GH_TOKEN:-}" ]; then
|
|
echo "PF_TESTING_GH_TOKEN is not configured; cannot start the functional chain" >&2
|
|
exit 1
|
|
fi
|
|
gh api --method POST repos/rustfs/rustfs/dispatches \
|
|
-f event_type='rustfs-chain-upgrade' \
|
|
-F 'client_payload[from_suite]=nightly-build'
|
|
|
|
- name: Dispatch performance suite (parallel, own runner)
|
|
env:
|
|
GH_TOKEN: ${{ secrets.PF_TESTING_GH_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
if [ -z "${GH_TOKEN:-}" ]; then
|
|
echo "PF_TESTING_GH_TOKEN is not configured; cannot dispatch performance" >&2
|
|
exit 1
|
|
fi
|
|
gh api --method POST repos/rustfs/rustfs/dispatches \
|
|
-f event_type='rustfs-chain-performance' \
|
|
-F 'client_payload[from_suite]=nightly-build'
|