【问题标题】:postgis.control is not found on github actions在 github 操作上找不到 postgis.control
【发布时间】:2021-11-02 07:38:36
【问题描述】:

在我的 github 操作 yml 中,找不到 postgis.control。但是,如果find /usr -name postgis.control 找到了,它可以找到 postgis.control。

我不知道为什么 test 找不到 postgis.control.. 有什么想法吗?

name: Django CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.7]

    services:
      postgres:
        image: postgres:12
        ports:
          - 5432:5432
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: ghostlabs_localhost
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: psycopg2 prerequisites
      run: |
        sudo apt-get update && sudo apt remove -y postgis* postgresql* && sudo apt-get install -y libpq-dev gdal-bin postgresql-12 postgresql-12-postgis-3 postgresql-12-postgis-3-scripts postgresql-contrib-12
        echo "-----"
        find /usr -name postgis.control
    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements/localhost.txt
    - name: Run Tests
      run: |
        python manage.py migrate && python manage.py test

日志显示

-----
/usr/share/postgresql/12/extension/postgis.control

但是,测试有

Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.7.11/x64/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
    return self.cursor.execute(sql)
psycopg2.errors.UndefinedFile: could not open extension control file "/usr/share/postgresql/12/extension/postgis.control": No such file or directory

【问题讨论】:

    标签: django continuous-integration github-actions


    【解决方案1】:

    postgis 扩展未在官方 postgresql docker 镜像中分发,您可能需要手动安装或使用以下镜像进行服务定义:

    image: postgis/postgis:12
    

    此外,当您在 VM 中定义作业时,端口可能不可用,并且主机将是 localhost,因此定义更安全:

    ports:
        - 5432/tcp
    

    在服务定义中,然后在作业定义中设置一个环境变量,该变量应在您的设置文件中使用。如果变量为DB_PORT,则应在使用数据库的步骤中添加以下环境:

    env:
      DB_HOST: localhost
      DB_PORT: ${{ job.services.postgres.ports[5432] }}
    

    应该可以!

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2020-08-20
      • 2021-08-25
      • 1970-01-01
      • 2020-12-15
      • 2020-10-15
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多