如何在 Azure 管道中使用的 windows-最新代理上使用 postgres 数据库?
How to use the postgres db on the windows-latest agent used in the azure pipeline?
我有一个 java maven 项目,我正在使用 azure 管道构建它作为主机“windows-latest”,因为它包含正确的 java 13 版本。但是,对于集成测试,我需要一个 postgres 数据库,并且“windows-latest”代理包含一个 postgres 数据库,请参阅:link。但是我该如何使用它呢?我试图通过将它的 serviceName 作为服务包含在 Maven 任务中来使用它:
services:
postgres: postgresql-x64-13
但后来我收到错误消息,找不到该名称的服务。
我尝试通过 env 设置定义数据库属性(请参阅下面的 yml),然后显示错误:
Caused by: java.net.ConnectException: Connection refused
我还通过脚本任务 docker-compose.yml 在我在开发过程中使用的项目的根目录中尝试了 运行 它,但是 docker- compose 抛出一个错误,说它找不到 compose 文件,我也怀疑这是正确的方法。
那么我可以在 windows 代理上使用 postgres 数据库吗?以及如何?
我的天蓝色管道片段:
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
在 Azure Devops Windowsagen 中,postgresql 默认为 disabled/stop。
这里是 configuration doc.
Property Value
ServiceName postgresql-x64-13
Version 13.2
ServiceStatus Stopped
ServiceStartType Disabled
您可以尝试使用以下命令来启动 postgresql。
"C:\Program Files\PostgreSQL\bin\pg_ctl.exe" start -D "C:\Program Files\PostgreSQL\data" -w
我有一个 java maven 项目,我正在使用 azure 管道构建它作为主机“windows-latest”,因为它包含正确的 java 13 版本。但是,对于集成测试,我需要一个 postgres 数据库,并且“windows-latest”代理包含一个 postgres 数据库,请参阅:link。但是我该如何使用它呢?我试图通过将它的 serviceName 作为服务包含在 Maven 任务中来使用它:
services:
postgres: postgresql-x64-13
但后来我收到错误消息,找不到该名称的服务。 我尝试通过 env 设置定义数据库属性(请参阅下面的 yml),然后显示错误:
Caused by: java.net.ConnectException: Connection refused
我还通过脚本任务 docker-compose.yml 在我在开发过程中使用的项目的根目录中尝试了 运行 它,但是 docker- compose 抛出一个错误,说它找不到 compose 文件,我也怀疑这是正确的方法。
那么我可以在 windows 代理上使用 postgres 数据库吗?以及如何?
我的天蓝色管道片段:
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
在 Azure Devops Windowsagen 中,postgresql 默认为 disabled/stop。
这里是 configuration doc.
Property Value
ServiceName postgresql-x64-13
Version 13.2
ServiceStatus Stopped
ServiceStartType Disabled
您可以尝试使用以下命令来启动 postgresql。
"C:\Program Files\PostgreSQL\bin\pg_ctl.exe" start -D "C:\Program Files\PostgreSQL\data" -w