首页 > 解决方案 > 在 travis 构建设置中声明 rabbitmq 交换

问题描述

在执行集成测试之前,我想在 Travis 环境中设置一些 RabbitMQ 交换。

.travis.yml

services:
  - rabbitmq

before_script:
  - src/it/bin/configure_rabbitmq.sh

configure_rabbitmq.sh

#!/usr/bin/env bash

if [ -f ./rabbitmqadmin ]; then
    echo "rabbitmqadmin already present"
else
    wget http://localhost:15672/cli/rabbitmqadmin
    chmod +x rabbitmqadmin
fi

./rabbitmqadmin declare vhost name=guest
for r in a b c d e; do
    ./rabbitmqadmin --vhost=guest declare exchange name=set-$r-testing type=fanout durable=true -u guest -p guest
done

失败日志

$ src/it/bin/configure_rabbitmq.sh
--2018-08-31 01:56:05--  http://localhost:15672/cli/rabbitmqadmin
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:15672... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37698 (37K) [application/octet-stream]
Saving to: ‘rabbitmqadmin’
     0K .......... .......... .......... ......               100%  181K=0.2s
2018-08-31 01:56:06 (181 KB/s) - ‘rabbitmqadmin’ saved [37698/37698]
vhost declared
*** Access refused: /api/exchanges/guest/set-a-testing
*** Access refused: /api/exchanges/guest/set-b-testing
*** Access refused: /api/exchanges/guest/set-c-testing
*** Access refused: /api/exchanges/guest/set-d-testing
*** Access refused: /api/exchanges/guest/set-e-testing
The command "src/it/bin/configure_rabbitmq.sh" failed and exited with 1 during .

是什么阻止了我创建这些交易所的授权?

标签: rabbitmqtravis-ci

解决方案


Travis RabbitMQ 文档状态:

RabbitMQ 需要 setuid 标志,因此您只能在标准、OS X 或 Trusty 基础架构上运行 RabbitMQ(即,您的 .travis.yml 必须包含 sudo: required)。

添加sudo: required可能会解决此问题。


推荐阅读