使用 Sauce Labs 与 Travis CI
Travis CI 与 Sauce Labs 集成,Sauce Labs 是一个浏览器和移动测试平台。例如,它与 Selenium 集成良好。
集成会自动设置开始测试所需的隧道。为此,它使用 Sauce Connect。
请注意,由于安全限制,除非您使用 JWT 插件,否则拉取请求构建中无法使用 Sauce Labs 插件。
设置 Sauce Connect #
Sauce Connect 在 Sauce Labs 的基于云的 VM 和您的本地服务器之间安全地代理浏览器流量。Sauce Connect 使用端口 443 和 80 与 Sauce Labs 云通信。如果您正在将 Sauce Labs 用于 Selenium 测试,这将使连接到您的 Web 服务器变得更加容易。
首先,如果您还没有 注册 Sauce Labs(开源项目是 免费的),并从您的 帐户页面 获取您的访问密钥。获得密钥后,将其添加到您的 .travis.yml 文件中
addons:
sauce_connect:
username: "Your Sauce Labs username"
access_key: "Your Sauce Labs access key"
如果您不希望访问密钥在您的存储库中公开可用,您可以使用 travis encrypt "your-access-key"
对其进行加密(有关加密的更多信息,请参阅 加密密钥),并添加拉取请求安全的密钥(请参阅 JWT 插件)。字符串如下所示
addons:
sauce_connect:
username: "Your Sauce Labs username"
jwt:
secure: "The secure string output by `travis encrypt SAUCE_ACCESS_KEY=Your Sauce Labs access key`"
如果您将它们分别命名为 SAUCE_USERNAME
和 SAUCE_ACCESS_KEY
,您还可以将 username
和 access_key
添加为环境变量。在这种情况下,您只需将以下内容添加到您的 .travis.yml 文件中即可
addons:
sauce_connect: true
为了允许同时打开多个隧道,Travis CI 会打开一个 Sauce Connect 隧道池。确保在打开到 Sauce Labs 的 Selenium 网格的连接时发送 TRAVIS_JOB_NUMBER
环境变量,作为所需的 tunnel-name
功能,否则它将无法连接到 VM 上运行的服务器。
外观将取决于您使用的客户端库,在 Ruby 的 selenium-webdriver 绑定中
caps = Selenium::WebDriver::Remote::Capabilities.firefox({
'tunnel-name' => ENV['TRAVIS_JOB_NUMBER']
})
driver = Selenium::WebDriver.for(:remote, {
url: 'http://username:access_key@ondemand.saucelabs.com/wd/hub',
desired_capabilities: caps
})
其他选项 #
有时您可能需要将其他选项传递给 Sauce Connect。当前支持的参数为
direct_domains
no_ssl_bump_domains
tunnel_domains
例如,如果 某些 HTTPS 域名无法与 Sauce Connect 一起使用,则您可能需要 --direct-domains
选项
addons:
sauce_connect:
username: "Your Sauce Labs username"
direct_domains: example.org,*.foobar.com
jwt:
secure: "The secure string output by `travis encrypt SAUCE_ACCESS_KEY=Your Sauce Labs access key`"
构建配置参考 #
您可以在我们的 Travis CI 构建配置参考 中找到有关 Sauce Connect 的构建配置格式的更多信息。