在CircleCI

时间:2016-03-01 23:02:58

标签: authentication neo4j continuous-integration circleci

(注意:我已在CircleCI论坛上发布此问题here。)

我想使用neo4j的更新版本,而不是通过指定安装的默认neo4j2.2.2:

machine:
  services:
    neo4j

我使用以下方法手动安装较新版本的neo4j:

machine:
  environment:
    NEO4J_VERSION:
      "2.2.3"
  post:
    - wget dist.neo4j.org/neo4j-community-$NEO4J_VERSION-unix.tar.gz
    - tar -xzf neo4j-community-$NEO4J_VERSION-unix.tar.gz
    - neo4j-community-$NEO4J_VERSION/bin/neo4j start

Neo4j开始没问题,到目前为止还不错!

现在要对neo4j进行身份验证,我们需要创建一个默认用户和 定义密码或关闭身份验证。对我来说都不适用。

选项1:关闭neo4j-server.properties中的身份验证:

(我在这里找到了这个方法:https://discuss.circleci.com/t/neo4j-server-authorization-error/692)。

在neo4j start命令之前,关闭auth_enabled:

- sudo sed -i "s|dbms.security.auth_enabled=true|dbms.security.auth_enabled=false|g" neo4j-community-$NEO4J_VERSION/conf/neo4j-server.properties

Neo4j在没有身份验证的情况下启动,因此与http://localhost:7474的连接应该会成功。 相反,我得到:

httpstream: INFO: > GET http://localhost:7474/
httpstream: DEBUG: > User-Agent: py2neo/2.0.3 HTTPStream/1.5.0 Python/3.5.0-final-0 (linux)
httpstream: DEBUG: > Host: localhost:7474
httpstream: DEBUG: > X-Stream: true
httpstream: ERROR: ! SocketError: Connection refused

(我正在使用py2neo进行连接)。

选项2:在neo4j中创建默认用户,测试可以使用该用户进行身份验证:

我有一个单独的可执行脚本来创建用户,然后设置其密码:

#!/usr/bin/env bash
curl -X GET http://localhost:7474/user/neo4j --user neo4j:neo4j -H Accept:application/json -H Content-Type:application/json
curl -X POST http://localhost:7474/user/neo4j/password --user neo4j:neo4j -H Accept:application/json -H Content-Type:application/json -d "{\"password\": \"pass\"}"

该脚本在machine.post的{​​{1}}步骤中运行。 配置完成后,测试应该能够使用circle.yml进行身份验证。 不幸的是,curl请求失败了:

http://neo4j:pass@localhost:7474

如果我退回并使用CircleCI默认neo4j而不是手动安装,方法1和2都可以工作。它们在与本地(例如在我的笔记本电脑上)安装neo4j时运行时也可以工作。

在CircleCI中手动安装neo4j时,为什么会失败的任何想法?

感谢您的帮助,

克雷格

0 个答案:

没有答案