GitHub Actions中PostgreSQL的密码验证问题,Python皮

3qpi33ja  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(114)

我尝试在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对我来说可能是正确的主机值。

ztigrdn8

ztigrdn81#

这是acta local github runner的问题。
我还没有找到原因,但似乎在本地运行时,postgres主机不工作,数据库在其他地方。似乎在localhost上找到,但密码不匹配。
我尝试了Azeem的这段代码,它也可以在Github Actions中工作,但不能在本地Github runner中工作。

相关问题