8000 CI: New Manual workflow for testing 2 builds by bbpetukhov · Pull Request #744 · bloomberg/blazingmq · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

CI: New Manual workflow for testing 2 builds #744

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 115 commits into
base: main
Choose a base branch
from

Conversation

bbpetukhov
Copy link
Collaborator
@bbpetukhov bbpetukhov commented May 12, 2025

Before accepting this PR, it's possible for run the new workflow from here: https://github.com/bbpetukhov/blazingmq/actions/workflows/manual.yaml (only collaborators of the fork)

Describe your changes
Added a new workflow to be run manually. It builds 2 versions of BlazingMQ broker binaries and runs a new batch of integration tests which covers broker binary upgrade via stop/restart.

The build job is extracted into a separed file and reused between existing Tests workflow and a new manually run one.
In case of UTs cmake "all.t" target generated huge size of build artifacts (~1GB), so the upload is skipped and tests are run right away as a step in the build job.

image

Git refs for builds 1 and 2 can be specified via input params.
Integration tests sources are downloaded from the selected Branch ("Use workflow from").

Switch from cache to Artifacts
The build_ubuntu workflow migrated from storing build in cache to uploading as artifact. According to the documentation cache is ideal for storing results for later sharing them between workflow runs. Existing "Dependencies" workflow uploads built deps into cache to be shared in other build workflows -- this is a solid application for cache.
However for sharing data between jobs in a single workflow runs it's advised to store them as artifacts, because upload/download operations are synchronous (once data is uploaded, it's immediately available to be downloaded in the next job). Meanwhile cache save/restore operations are asynchronous, thus the results may not be immediately available for restore in the next job. Also due to security restrictions experiments showed that it's impossible to restore from 2 caches in one job which is necessary to get 2 versions of broker.
Total storage for artifacts is unlimited for public repositories.
Making the builds publicly available for download does not seem like a vulnerability, because since the repo is public, similar workflow can be easily simulated in another public fork.

However the downside of artifacts is that being a plain .zip archive it drops execute permissions for broker and bmq-tool binaries. Execute permissions have to be restored after artifact download.

Testing performed

  • Existing Tests workflow passed, i.e. build, UTs and ITs passed
  • New workflow ITs passed. Made sure that the binary upgrade from ref1 to ref2 indeed happens and logged.
    There are 2 new tests running cluster of 3 nodes.
    The first test starts the cluster with all nodes running version 1, then cluster is stopped, all nodes upgrade to version 2 and restarts again.
    The second test upgrades nodes one by one every time restarting the whole cluster.

Additional context

  • Added new "multi3" fixture cluster with odd number of nodes for Integration tests.
  • Clean up of redundant code in failures check logic
  • For both ref1 and ref2 build results are stored in cache and restored next time the manual workflow is initiated for the same refs.
  • In Integration tests cluster leader can be preset via BLAZINGMQ_LEADER_NAME env var (CI: Can preset leader via env var BLAZINGMQ_LEADER_NAME for integration tests #693)

Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
@bbpetukhov bbpetukhov force-pushed the manual-ci branch 2 times, most recently from d2706a1 to 938c9ec Compare June 5, 2025 10:52
… -- add new "name" parameter to the build ubuntu workflow and use it as part of artifact_key

Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
…erions, no need to specify path per node

Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
…pgraded

Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
…ge individual nodes

Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
@bbpetukhov bbpetukhov requested a review from kaikulimu June 24, 2025 14:49
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Signed-off-by: Dmitrii Petukhov <dpetukhov@bloomberg.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0