【问题标题】:How to use the postgres db on the windows-latest agent used in the azure pipeline?如何在 azure 管道中使用的 windows-latest 代理上使用 postgres db?
【发布时间】:2021-03-07 20:14:24
【问题描述】:

我有一个 java maven 项目,我正在使用一个 azure 管道构建它,它作为主机“windows-latest”,因为它包含正确的 java 13 版本。但是,对于集成测试,我需要一个 postgres 数据库,并且“windows-latest”代理包含一个 postgres 数据库,请参阅:link。但是我该如何使用它呢?我尝试通过将它的 serviceName 包含在 Maven 任务中作为服务来使用它:

services:
   postgres: postgresql-x64-13

然后我收到错误消息,它找不到该名称的服务。 我尝试通过env设置定义db属性(见下面的yml),然后它显示错误:

Caused by: java.net.ConnectException: Connection refused

我还尝试通过我在开发过程中使用的项目根目录中的 docker-compose.yml 通过脚本任务运行它,但是 docker-compose 抛出一个错误,说它找不到 compose 文件,我也怀疑这是正确的方法。

那么我可以在 windows 代理上使用 postgres db 吗?以及如何?

我的天蓝色管道 sn-p:

    variables:
    MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
    MAVEN_OPTS: "-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)"
    application_name: clearsky
    service_name: backend
    mygetUsername: myserUsername
    mygetPassword: mytoken
    SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/postgres
    SPRING_DATASOURCE_USER: postgres
    SPRING_DATASOURCE_PASSWORD: root

stages:
    - stage: create_artifact
      displayName: Create artifact
      jobs:
          - job: build
            displayName: Build, test and publish artifact
            steps:
                - task: Maven@3
                  name: maven_package
                  displayName: Maven package
                  inputs:
                      goals: "package"
                      mavenPomFile: "backend/pom.xml"
                      options: '--settings backend/.mvn/settings.xml -DmygetUsername=$(mygetUsername) -DmygetPassword=$(mygetPassword)'
                      mavenOptions: "-Xmx3072m $(MAVEN_OPTS)"
                      javaHomeOption: "JDKVersion"
                      jdkVersionOption: "1.13"
                      mavenAuthenticateFeed: true

【问题讨论】:

  • 嗨@edbras。您是否尝试过在您的 java maven 项目中硬编码用户名和密码?例如:spring.datasource.username=postgres spring.datasource.password=root 这样的话,你会得到同样的错误吗?
  • 我不知道,我刚刚切换到 Ubuntu 映像以使其正常工作。但是为什么在变量部分定义它会有所不同呢?
  • 感谢您的信息。 windows 和 ubuntu 代理的区别在于 windows 代理默认禁用/停止 postgresql。
  • 您可以尝试以下命令来启动 postgresql 并检查它是否可以工作。 "C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" start -D "C:\Program Files\PostgreSQL\13\data" -w
  • 哦,酷@KevinLu-MSFT,我会在接下来的几天内尝试并告诉你它是否有效

标签: postgresql azure-pipelines azure-pipelines-tasks


【解决方案1】:

在 Azure Devops Windows 代理中,postgresql 默认被禁用/停止。

这里是configuration doc

Property    Value
ServiceName postgresql-x64-13
Version 13.2
ServiceStatus   Stopped
ServiceStartType    Disabled

您可以尝试以下命令来启动 postgresql。

"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" start -D "C:\Program Files\PostgreSQL\13\data" -w

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2020-12-20
    相关资源
    最近更新 更多