Expose per-queue delivered and acked totals in Prometheus metrics #7936
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| paths: | |
| - Makefile | |
| - 'src/**' | |
| - 'spec/**' | |
| - 'shard.*' | |
| - 'static/**' | |
| - 'views/**' | |
| - '.github/workflows/ci.yml' | |
| - 'build/build_docs_in_ci' | |
| - 'openapi/**' | |
| push: | |
| branches: | |
| - main | |
| - 'v[0-9]+.[0-9]+.x' | |
| paths: | |
| - Makefile | |
| - 'src/**' | |
| - 'spec/**' | |
| - 'shard.*' | |
| - 'static/**' | |
| - 'views/**' | |
| - '.github/workflows/ci.yml' | |
| - 'build/build_docs_in_ci' | |
| - 'openapi/**' | |
| workflow_dispatch: | |
| jobs: | |
| format: | |
| name: Format check | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| container: 84codes/crystal:latest-ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: crystal tool format --check | |
| lint: | |
| name: Lint check | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| container: 84codes/crystal:latest-ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - run: shards install | |
| - run: make lint | |
| lint-js: | |
| name: Lint javascript | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: latest | |
| - name: Run standard | |
| run: make lint-js | |
| lint-openapi: | |
| name: Lint OpenAPI | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: latest | |
| - name: Run spectral | |
| run: make lint-openapi | |
| spec: | |
| name: Spec | |
| runs-on: ubuntu-latest | |
| container: 84codes/crystal:latest-ubuntu-24.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Print Crystal version | |
| run: crystal -v | |
| - name: Install dependencies | |
| run: apt-get update && apt-get install -y liblz4-dev etcd-server | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Spec | |
| run: make test | |
| spec_osx: | |
| name: Spec macOS | |
| runs-on: macos-15-xlarge | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Install dependencies | |
| run: | | |
| brew update | |
| brew install crystal etcd | |
| echo "/opt/homebrew/opt/etcd/bin" >> $GITHUB_PATH | |
| env: | |
| HOMEBREW_NO_AUTO_UPDATE: 1 | |
| HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | |
| - run: crystal --version | |
| - uses: actions/checkout@v6 | |
| - name: Spec | |
| run: make test | |
| compile: | |
| name: Compile LavinMQ | |
| runs-on: ubuntu-latest | |
| container: 84codes/crystal:latest-ubuntu-24.04 | |
| steps: | |
| - name: Install dependencies | |
| run: apt-get update && apt-get install -y liblz4-dev | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Build lavinmq | |
| run: make -j bin/lavinmq bin/lavinmqctl DOCS= CRYSTAL_FLAGS="--error-on-warnings -Dbake_static" | |
| - name: Print build info | |
| run: bin/lavinmq --build-info | |
| - name: Upload bin/ | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: bin | |
| path: bin/ | |
| path_filter: | |
| name: Filters for frontend specs | |
| runs-on: ubuntu-latest | |
| outputs: | |
| frontend_changed: ${{ steps.changes.outputs.js == 'true' || steps.changes.outputs.views == 'true' }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| views: | |
| - '**/*.ecr' | |
| js: | |
| - '**/*.js' | |
| spec_frontend: | |
| name: Frontend specs | |
| runs-on: ubuntu-24.04 | |
| needs: [compile, path_filter] | |
| if: ${{ github.ref_name == 'main' || needs.path_filter.outputs.frontend_changed == 'true' }} | |
| steps: | |
| - name: Install LavinMQ dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y make liblz4-1 | |
| - name: Download lavinmq | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/* | |
| bin/lavinmq --data-dir=/tmp/amqp --bind=:: & | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Install playwright | |
| run: npm install @playwright/test | |
| - name: Install browsers | |
| run: npx playwright install --with-deps | |
| - name: Run tests | |
| run: npx playwright test --config ./spec/frontend/playwright.config.js --reporter list | |
| - uses: actions/upload-artifact@v7 | |
| if: ${{ !cancelled() }} | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 10 | |
| java-client-test: | |
| name: RabbitMQ java client test | |
| runs-on: ubuntu-24.04 | |
| needs: compile | |
| continue-on-error: true | |
| steps: | |
| - name: Install LavinMQ dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y make openjdk-21-jre-headless liblz4-1 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/* | |
| bin/lavinmq --data-dir=/tmp/amqp --bind=:: & | |
| - name: Clone java client | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: rabbitmq/rabbitmq-java-client | |
| ref: v5.25.0 | |
| path: rabbitmq-java-client | |
| - name: Get patch file | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: cloudamqp/lavinmq | |
| path: lavinmq | |
| # only checkout the lint rules | |
| sparse-checkout: | | |
| .github/rabbitmq-java-client.patch | |
| sparse-checkout-cone-mode: false | |
| - name: Patch tests | |
| run: | | |
| cd rabbitmq-java-client | |
| git apply ../lavinmq/.github/rabbitmq-java-client.patch | |
| - name: Run tests | |
| id: test | |
| continue-on-error: true | |
| run: | | |
| cd rabbitmq-java-client | |
| make deps | |
| ./mvnw verify -Dtest-broker.A.nodename=lavin@testhost -Dit.test=ClientTestSuite,FunctionalTestSuite -Drabbitmqctl.bin=../bin/lavinmqctl | |
| - name: >- | |
| Test outcome: ${{ steps.test.outcome }} | |
| run: echo NOOP | |
| bunny-test: | |
| name: Bunny client test | |
| runs-on: ubuntu-24.04 | |
| needs: compile | |
| steps: | |
| - name: Install LavinMQ dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y liblz4-1 | |
| - name: Checkout LavinMQ for bunny_definitions.json | |
| uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/lavinmq | |
| bin/lavinmq --data-dir /tmp/amqp & | |
| - name: Import definitions | |
| run: | | |
| chmod +x bin/lavinmqctl | |
| bin/lavinmqctl import_definitions .github/bunny_definitions.json | |
| - name: Clone Bunny | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ruby-amqp/bunny | |
| path: bunny | |
| fetch-depth: 0 | |
| ref: 55bb3d2accc293911120ea7dc7330cf06eda41c2 | |
| - name: Setup ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| working-directory: bunny | |
| ruby-version: ruby | |
| - name: Run specs | |
| run: | | |
| cd bunny | |
| sed -i /rabbitmq_http_api_client/d Gemfile | |
| bundle add rabbitmq_http_api_client --version=">= 3" --group=test --require=rabbitmq/http/client | |
| bundle install | |
| sed -i '211,212d' spec/lower_level_api/integration/queue_declare_spec.rb | |
| sed -i '112,146d' spec/lower_level_api/integration/queue_declare_spec.rb | |
| bundle exec rspec \ | |
| --pattern "spec/*/integration/*_spec.rb, spec/issues/*_spec.rb" \ | |
| --exclude-pattern "**/*/tls_*, **/*/connection_recovery_*, **/*/default_queue_type*" | |
| ruby-http-api-test: | |
| name: RabbitMQ HTTP API Ruby client test | |
| runs-on: ubuntu-24.04 | |
| needs: compile | |
| continue-on-error: true | |
| if: github.event.pull_request.head.repo.full_name == github.repository | |
| steps: | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y liblz4-1 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/lavinmq | |
| bin/lavinmq --data-dir /tmp/amqp & | |
| - name: Clone HTTP API client | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: cloudamqp/rabbitmq_http_api_client | |
| token: ${{ secrets.PRIVATE_REPO_ACCESS }} | |
| path: rabbitmq_http_api_client | |
| - name: Setup ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| working-directory: rabbitmq_http_api_client | |
| ruby-version: 2.7.1 | |
| bundler-cache: true | |
| - name: Run specs | |
| run: | | |
| cd rabbitmq_http_api_client | |
| bundle exec rspec | |
| go-http-api-test: | |
| name: RabbitMQ HTTP API Go client test | |
| runs-on: ubuntu-24.04 | |
| needs: compile | |
| continue-on-error: true | |
| steps: | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y liblz4-1 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/* | |
| bin/lavinmq --data-dir /tmp/amqp & | |
| - name: Install Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: 1.22.3 | |
| - name: Clone http client | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: michaelklishin/rabbit-hole | |
| ref: 37defcefa36b528b024f0b377435b459eb8eb9fc | |
| path: rabbit-hole | |
| - name: Get patch file | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: cloudamqp/lavinmq | |
| path: lavinmq | |
| # only checkout the lint rules | |
| sparse-checkout: | | |
| .github/rabbit-hole.patch | |
| sparse-checkout-cone-mode: false | |
| - name: Setup rabbit-hole | |
| run: | | |
| cd rabbit-hole | |
| git apply ../lavinmq/.github/rabbit-hole.patch | |
| bash bin/ci/before_build.sh | |
| env: | |
| RABBITHOLE_LAVINMQCTL: ../bin/lavinmqctl | |
| - name: Run specs | |
| run: | | |
| cd rabbit-hole | |
| go test -v ./... | |
| release-mode-test: | |
| name: Test in release mode | |
| runs-on: ubuntu-24.04 | |
| needs: compile | |
| continue-on-error: true | |
| steps: | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y liblz4-1 | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: bin | |
| path: bin | |
| - name: Run LavinMQ in background | |
| run: | | |
| chmod +x bin/lavinmq | |
| bin/lavinmq --data-dir /tmp/amqp & | |
| - name: Test the static HTTP controller | |
| run: ./extras/static_requests.sh | |
| freebsd-test: | |
| if: false # Crystal is outdated in FreeBSD | |
| name: Spec FreeBSD | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Spec | |
| uses: vmactions/freebsd-vm@v1 | |
| with: | |
| usesh: true | |
| prepare: pkg install -y crystal shards security/openssl curl gmake coreos-etcd34 | |
| run: gmake test | |
| continue-on-error: true |