Travis CI:如何配置travis.yml以连接到PostgreSQL数据库?

时间:2019-11-19 10:53:27

标签: node.js postgresql travis-ci

在Travis上,测试返回“无法读取未定义的属性'statusCode'”,因为我无法找到数据库。我已经配置travis.yml创建数据库和表,以便Jasmine可以测试我的端点。 travis文档https://docs.travis-ci.com/user/database-setup/说“所有服务都使用默认设置”,因此我认为不必配置数据库URL。

我错了吗?我需要指定数据库URL吗?如果是,那么我可以在travis.yml中添加什么key = value命名约定?

Travis message

language: node_js
    node_js: 
      - "stable"
    env:
      - NODE_ENV="test"
    services:
      - postgresql
    install:
      - npm ci
    cache:
      directories:
      - "$HOME/.npm"
    before_script:
      - psql -c 'create database travis_ci_test;' -U postgres
      - psql -f './testdb/teamwork.sql -d travis_ci_test;' -U postgres
    script:
      - npm test

2 个答案:

答案 0 :(得分:1)

您是对的。 Travis希望拥有您的测试数据库,但您没有创建数据库。您仅提供数据库名称和密码,而不提供数据库表采用的架构或形式。我通常会先通过创建生产数据库的转储文件然后告诉它从该转储文件构建测试数据库的方式,确切地告诉Travis如何构建数据库表。这是一个链接,遍历creating a dump file off your production db的细节。 说完之后,这就是您的travis.yml的样子。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  checkboxInput("data", "Data"),
  actionButton("btn", "Download"),
  tags$a(id = "dwnld")
)

server <- function(input, output, session) {

  observeEvent(input$btn, {
    if(input$data){
      tmpFile <- tempfile()
      write.table(iris, tmpFile)
      b64 <- base64enc::dataURI(file=tmpFile, mime="text/plain")
      runjs(sprintf('$("#dwnld").attr("href", "%s").attr("download", "out.txt")', b64))
      runjs("$('#dwnld')[0].click();")
    }else{
      runjs("alert('No data!');")
    }
  })

}

shinyApp(ui, server)

答案 1 :(得分:0)

这次尝试使用db_user详细信息尝试

language: node_js
node_js: 
  - "stable"
env:
  - NODE_ENV="test"
services:
  - postgresql
install:
  - npm ci
cache:
  directories:
  - "$HOME/.npm"
before_script: 
  - psql -c 'create database travis_ci_test;' -U postgres
  - psql -c "CREATE USER db_username WITH PASSWORD 'db_password';" -U postgres
script:
  - npm test