使用gitlab-runner运行测试成功,在Gitlab.com的共享运行器上运行测试失败

时间:2019-06-26 03:19:15

标签: ruby-on-rails automated-tests gitlab-ci totp

在Gitlab.com的共享运行程序上运行测试时,所有涉及ROTP的测试都会失败,并出现ArgumentError,该密钥必须为32个字节。还有其他一些测试也失败了,但它们与ROTP失败无关。我已经研究了ROTP的源代码并确定了我正在使用的ROTP版本(2.1.2),它应该使用32字节密钥,并且我尝试手动告诉devise-two-factor使用32字节密钥(而不是24)以防万一。

在本地运行rspec时,这些测试也会通过。

我已尽力调试Gitlab.com的跑步者。我还检查了ROTP的版本,它在gitlab-runner以及Gitlab.com的运行程序中为2.1.2,所以它不是版本不匹配。我正在本地运行gitlab-runner 11.9.2。

我注意到devise-two-factor指定了一个24字节的密钥(这只会在Gitlab.com的运行程序上引起问题-它仍然可以在生产,开发,本地rspec和本地gitlab-runner中工作,而不会覆盖它),所以我已经尝试指定32字节的设备二因素TOTP密钥长度,应该将其转发给ROTP,但似乎即使按预期方式传递,也无法在Gitlab.com的运行程序中正确处理。

我在本地运行gitlab-runner的命令(因为我可能输入了错误的命令):

gitlab-runner exec docker rspec-integration

ROTP错误:

 1) Totp2faAccounts User can enable TOTP
     Failure/Error: user.otp_secret = User.generate_otp_secret(32)

     ArgumentError:
       key must be 32 bytes
     # /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:72:in `key='
     # /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:72:in `crypt'
     # /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:36:in `encrypt'

预期的结果:1-2次失败取决于测试的时间,但与ROTP无关,无论何时进行都应该通过。

实际结果:在本地rspec,本地gitlab-runner上传递,在Gitlab.com的共享运行器上失败。

0 个答案:

没有答案