Client abstraction #4198
Workflow file for this run
This file contains 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 | |
paths: | |
- Makefile | |
- 'src/**' | |
- 'spec/**' | |
- 'playwright.config.js' | |
- 'shard.*' | |
- 'static/**' | |
- 'views/**' | |
- '.github/workflows/ci.yml' | |
- 'build/build_docs_in_ci' | |
- 'openapi/**' | |
jobs: | |
format: | |
name: Format check | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
container: 84codes/crystal:latest-ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- 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: | |
- uses: actions/checkout@v4 | |
- name: Checkout ameba | |
uses: actions/checkout@v4 | |
with: | |
repository: crystal-ameba/ameba | |
path: ameba | |
- name: Build ameba | |
run: make -C ameba | |
- name: Run ameba | |
run: ameba/bin/ameba src spec | |
lint-js: | |
name: Lint javascript | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
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@v4 | |
- uses: actions/setup-node@v4 | |
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 | |
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@v4 | |
- name: Spec | |
run: make test | |
spec_osx: | |
name: Spec OS X | |
runs-on: macos-14 | |
steps: | |
- name: Install dependencies | |
run: | | |
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@v4 | |
- 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@v4 | |
- name: Build lavinmq | |
run: make -j bin/lavinmq bin/lavinmqctl DOCS= CRYSTAL_FLAGS=-Dbake_static | |
- name: Print build info | |
run: bin/lavinmq --build-info | |
- name: Upload bin/ | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bin | |
path: bin/ | |
path_filter: | |
name: Filters for fronted specs | |
runs-on: ubuntu-latest | |
outputs: | |
views: ${{ steps.changes.outputs.views }} | |
js: ${{ steps.changes.outputs.js }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: changes | |
with: | |
filters: | | |
views: | |
- '**/*.ecr' | |
js: | |
- '**/*.js' | |
spec_frontend: | |
name: Fronted specs | |
runs-on: ubuntu-latest | |
needs: [compile, path_filter] | |
if: ${{ needs.path_filter.outputs.views == 'true' || needs.path_filter.outputs.js == 'true' }} | |
steps: | |
- name: Install LavinMQ dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y make libevent-2.1-7 liblz4-1 | |
- name: Download lavinmq | |
uses: actions/download-artifact@v4 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/* | |
bin/lavinmq --data-dir=/tmp/amqp --bind=:: & | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install @playwright/test | |
run: npm install @playwright/test | |
- name: Install browsers | |
run: npx playwright install --with-deps | |
- name: Run tests | |
run: npx playwright test --reporter=list | |
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 libevent-2.1-7 openjdk-21-jre-headless liblz4-1 | |
- uses: actions/download-artifact@v4 | |
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@v4 | |
with: | |
repository: cloudamqp/rabbitmq-java-client | |
ref: lavinmq-compatible-tests | |
path: rabbitmq-java-client | |
- name: Run java tests (allowed to fail) | |
id: test | |
run: | | |
cd rabbitmq-java-client | |
make deps | |
./mvnw -q verify -P '!setup-test-cluster' -Dit.test=FunctionalTestSuite -Drabbitmqctl.bin=../bin/lavinmqctl | |
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 libevent-2.1-7 liblz4-1 | |
- name: Checkout LavinMQ for bunny_definitions.json | |
uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
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@v4 | |
with: | |
repository: ruby-amqp/bunny | |
path: bunny | |
fetch-depth: 0 | |
ref: "2.17.0" | |
- name: Setup ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: bunny | |
ruby-version: 2.7.2 | |
bundler-cache: true | |
- name: Run specs | |
run: | | |
cd bunny | |
bundle exec rspec \ | |
--pattern "spec/*/integration/*_spec.rb, spec/issues/*_spec.rb" \ | |
--exclude-pattern "**/*/tls_*, **/*/connection_recovery_*" | |
ruby-http-api-test: | |
name: RabbitMQ HTTP API Ruby 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 libevent-2.1-7 liblz4-1 | |
- uses: actions/download-artifact@v4 | |
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@v4 | |
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 libevent-2.1-7 liblz4-1 | |
- uses: actions/download-artifact@v4 | |
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@v5 | |
with: | |
go-version: 1.22.3 | |
- name: Clone http client | |
uses: actions/checkout@v4 | |
with: | |
repository: cloudamqp/rabbit-hole | |
token: ${{ secrets.PRIVATE_REPO_ACCESS }} | |
path: rabbit-hole | |
- name: Run specs | |
run: | | |
cd rabbit-hole | |
bash bin/ci/before_build.sh | |
go test -v ./... | |
env: | |
RABBITHOLE_LAVINMQCTL: ../bin/lavinmqctl | |
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 libevent-2.1-7 liblz4-1 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
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: | |
name: Spec FreeBSD | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 |