我尝试在GitHub Actions中运行集成测试。为此,要创建一个postgresql数据库并连接到它。posrtgresql服务的代码是from here。当我以其他方式(例如通过docker-compose)启动数据库时,连接到数据库的代码工作得很好。但是,当我尝试本地Actions runner或将代码上传到GitHub时,我会收到以下错误:第一个月
我已经试着简化我的代码,除了最关键的部分,我删除了任何东西。然而,问题仍然相同。我觉得根本原因是服务容器是用其他密码启动的,因此拒绝了我的授权尝试。
这是我的简化.yml文件:
name: Temporary Test Workflow
jobs:
temp_test:
runs-on: ubuntu-latest
container:
image: python:3.11-buster
services:
postgres:
# Docker Hub image
image: postgres
# Provide the password for postgres
env:
POSTGRES_DB: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
ports:
- 5432:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
- name: connect_and_test
run: |
pip install pipenv
pipenv install --deploy --system --dev
python -m connection_test
字符串
这是我简化的connection_test.py
import asyncio
import asyncpg
async def main():
db_url = (
f"postgresql://postgres:postgres@localhost:5432/postgres"
)
print(f"Starting connection on '{db_url}'")
conn = await asyncpg.connect(db_url)
print(await conn.execute("select 'OK'"))
await conn.close()
if __name__ == "__main__":
asyncio.run(main())
型
我还尝试使用sqlalchemy的sync和async引擎进行连接。没有运气,以及,我得到大致相同的错误-我的密码是不正确的。我的设置可能有什么问题?
编辑:我也尝试使用postgres
作为主机名。我得到以下错误:socket.gaierror: [Errno -2] Name or service not known
。所以localhost
对我来说可能是正确的主机值。
1条答案
按热度按时间ztigrdn81#
这是
act
a local github runner的问题。我还没有找到原因,但似乎在本地运行时,
postgres
主机不工作,数据库在其他地方。似乎在localhost
上找到,但密码不匹配。我尝试了Azeem的这段代码,它也可以在Github Actions中工作,但不能在本地Github runner中工作。