High-performance MySQL proxy with a GPL license.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
René Cannaò aa1f1250c7
Merge pull request #5787 from sysown/fix/galera-g5-cluster-start
4 hours ago
.github fix(ci): start the proxysql cluster on mariadb10-galera-g5 12 hours ago
binaries Improving packaging #375 11 years ago
deps Deprecate clickhouse-cpp 1.0.0 3 years ago
diamond Add Client_Connections_non_idle to Diamond gauge keys. 5 years ago
doc Adding debug_filters 6 years ago
docker refactor CentOS packaging files, make systemd default 4 years ago
etc sysown/proxysql#2796: Fix systemctl start proxysql-initial and associated documentation in the proxysql.cnf file (#2797) 6 years ago
include Merge branch 'v2.x' of github.com:sysown/proxysql into v2.x-4300 3 years ago
lib Merge pull request #4310 from sysown/v2.x_update_dns_records_count 3 years ago
microbench Adding microbench for PR1977 7 years ago
notes Notes on how to run sysbench on SQLite3 Server 7 years ago
scripts Improve RESTAPI example scripts 'kill_idle_backend_conns.py' and doc 4 years ago
src Reload certificate after fork() 3 years ago
systemd/system sysown/proxysql#2796: Fix systemctl start proxysql-initial and associated documentation in the proxysql.cnf file (#2797) 6 years ago
test move file 3 years ago
tools Fix 'eventslog_reader_sample' crash when non-existing file is supplied 4 years ago
.gitignore Initial rewriting of SetParser 3 years ago
Aurora_Automated_Testing.md Enhancing automated testing for AWS Aurora 7 years ago
CHANGELOG.md #323 Improved changelog w/ @renecannao's observations 11 years ago
FAQ.md Changing version from 5.1.30 to 5.5.30 10 years ago
INSTALL.md Build on MacOS 4 years ago
LICENSE first commit 12 years ago
Makefile bump version to 2.6.0 at the beginning of the development cycle 3 years ago
README.md docs: correct the "git never garbage-collected" phrasing; tag fenced block with text 1 month ago
RUNNING.md Fix minor typo 7 years ago
Read_Only_Testing.md Adding a simulator for read_only test 5 years ago
bounty.md Added Pull Request Bounty 11 years ago
build_images.py Add script for building images for the Python test suite 11 years ago
compile_examples.txt Updating examples on how to compile on FreeBSD 6 years ago
docker-compose.yml fix omitted BUILD_TYPE change 3 years ago
proxysql-tests.ini.example #306 Add example configuration file 11 years ago
proxysql_notes.txt first commit 12 years ago
scenarios.py #454 Add testing command to scenarios tool. 11 years ago

README.md

GH-Actions branch

You probably didn't mean to land here. This branch is not a development branch for ProxySQL source code — it exists purely to host the reusable GitHub Actions workflows that ProxySQL's CI uses.

If you're looking for ProxySQL itself, switch to the default branch: v3.0.


What lives here

Only one directory matters on this branch:

.github/workflows/
├── ci-trigger.yml              ← Entry point; babysits CI-builds
├── ci-builds.yml               ← Builds ProxySQL in Docker, caches artefacts
├── ci-basictests.yml
├── ci-selftests.yml
├── ci-maketest.yml
├── ci-legacy-g1.yml .. ci-legacy-g5.yml
├── ci-legacy-g2-genai.yml
├── ci-legacy-clickhouse-g1.yml
├── ci-mysql84-g1.yml .. ci-mysql84-g5.yml
├── ci-unittests.yml
├── ci-codeql.yml
├── ci-package-build.yml
├── ci-3p-*.yml                 ← Third-party integration workflows
└── ci-taptests-groups.yml      ← DEPRECATED; do not add new callers pointing here

These are reusable workflows — they declare on: workflow_call and are invoked from matching "caller" files on the v3.0 branch under the same path (e.g. v3.0:.github/workflows/CI-legacy-g1.yml). The caller files are what trigger on push/PR; the files here are the actual job bodies.

All other files on this branch (source code, docs, test directories, etc.) are vestigial. They're snapshots from an old point in history that remain on this branch because they're still tracked here and nobody has removed them. Do not edit them here. Any changes to source code, TAP tests, infra scripts, or documentation belong on v3.0.


Where the real documentation is

The complete CI architecture is documented on the v3.0 branch:

doc/GH-Actions/README.md on v3.0

That doc covers:

  • The two-branch caller/reusable split and why it exists
  • The CI-triggerCI-builds → test-workflow cascade (with diagrams)
  • The dedicated-reusable pattern with a step-by-step walkthrough of ci-legacy-g4.yml as the canonical template
  • The build cache layout (_src, _test, _bin, _matrix)
  • The TAP groups system (test/tap/groups/, BASE_GROUP stripping, SKIP_PROXYSQL mode)
  • An end-to-end walkthrough for adding a new test group
  • Common pitfalls (merge ordering, workflow_run head_sha propagation, the empty-matrix wedge, false-positive permissions hotspots)
  • A debugging guide for failing runs

Read it before touching anything here.


Quick reference for common tasks

Adding a new test group

Four things, in this order:

  1. On v3.0: add the group to test/tap/groups/groups.json and create test/tap/groups/<base-group>/{env.sh,infras.lst} if the base group doesn't exist yet.
  2. On GH-Actions (here): create .github/workflows/ci-<group>.yml. Cut it from ci-legacy-g4.yml and change only name:, INFRA_ID, TAP_GROUP, and the docker logs proxysql.<id> target.
  3. On v3.0: create .github/workflows/CI-<group>.yml (the thin caller). Cut it from CI-legacy-g4.yml on v3.0 and change the name: and uses: target.
  4. Merge order: the GH-Actions PR (step 2) must merge before the v3.0 PR that introduces the new caller (steps 1 and 3). Otherwise the caller will try to resolve a reusable that doesn't yet exist on GH-Actions and every run will error out with Unable to resolve action.

Modifying an existing reusable

Make the edit on GH-Actions directly in a feature branch, open a PR targeting GH-Actions, and merge. The change takes effect on the next run of any caller that points at that file — no v3.0 change is needed as long as you don't change the inputs: interface.

If you do change the inputs: (add a new required input, rename one, etc.), you must update every caller on v3.0 in a coordinated pair of PRs — same merge-order rule as adding a new group.

Deleting a reusable

  1. First, make sure no caller on v3.0 points at it. Grep for the filename in v3.0:.github/workflows/CI-*.yml. If any match, rewire them to a different reusable first (separate v3.0 PR), merge that, then proceed.
  2. Then open a GH-Actions PR deleting the file.

Branch protection

As of 2026-04-11, GH-Actions has no branch protection. You can push directly to it if you're a maintainer. PRs are the recommended workflow so that review bots (CodeRabbit, Sonar) can comment on the change and so the history is easy to audit, but they are not mechanically required. The same applies to merge-button status checks: failing Sonar/CodeRabbit runs don't block merges here.

v3.0 protection rules are separate and stricter — see the repository settings for the current state.