name: Ruby on: [push,pull_request] jobs: tests: runs-on: ubuntu-latest timeout-minutes: 5 services: rabbitmq: image: rabbitmq:latest ports: - 5672/tcp # needed because the rabbitmq container does not provide a healthcheck options: >- --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5 strategy: fail-fast: false matrix: ruby: ['2.6', '2.7', '3.0', '3.1'] include: - { ruby: jruby, allow-failure: true } - { ruby: truffleruby, allow-failure: true } steps: - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true ruby-version: ${{ matrix.ruby }} - name: Run tests (excluding TLS tests) continue-on-error: ${{ matrix.allow-failure || false }} run: bundle exec rake env: AMQP_PORT: ${{ job.services.rabbitmq.ports[5672] }} tls: runs-on: ubuntu-latest timeout-minutes: 5 strategy: fail-fast: false matrix: ruby: ['3.0', 'jruby', 'truffleruby'] steps: - name: Install RabbitMQ run: sudo apt-get update && sudo apt-get install -y rabbitmq-server - name: Stop RabbitMQ run: sudo systemctl stop rabbitmq-server - name: Install github.com/FiloSottile/mkcert run: brew install mkcert - name: Create local CA run: sudo CAROOT=/etc/rabbitmq $(brew --prefix)/bin/mkcert -install - name: Create certificate run: | sudo $(brew --prefix)/bin/mkcert -key-file /etc/rabbitmq/localhost-key.pem -cert-file /etc/rabbitmq/localhost.pem localhost sudo chmod +r /etc/rabbitmq/localhost-key.pem - name: Create RabbitMQ config run: | sudo tee /etc/rabbitmq/rabbitmq.conf <<'EOF' listeners.ssl.default = 5671 ssl_options.cacertfile = /etc/rabbitmq/rootCA.pem ssl_options.certfile = /etc/rabbitmq/localhost.pem ssl_options.keyfile = /etc/rabbitmq/localhost-key.pem EOF - name: Start RabbitMQ run: sudo systemctl start rabbitmq-server - name: Verify RabbitMQ started correctly run: while true; do sudo rabbitmq-diagnostics status 2>/dev/null && break; echo -n .; sleep 2; done - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true ruby-version: ${{ matrix.ruby }} - name: Run TLS tests run: bundle exec rake env: TESTOPTS: --name=/_tls$/ macos: runs-on: macos-latest timeout-minutes: 5 strategy: fail-fast: false matrix: ruby: ['3.0'] steps: - name: Install RabbitMQ run: brew install rabbitmq - name: Start RabbitMQ run: brew services start rabbitmq - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true ruby-version: ${{ matrix.ruby }} - name: Verify RabbitMQ started correctly run: while true; do rabbitmq-diagnostics status 2>/dev/null && break; echo -n .; sleep 2; done - name: Run tests (excluding TLS tests) run: bundle exec rake