有没有办法在github操作上安装ODBC驱动程序



我正试图使用Github Actions在Azure中为我的flask应用程序构建一个CI/CD管道。

然而,当运行测试(使用pytest(时,我已经能够构建工作流,我收到错误

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 18 for SQL Server' : file not found (0) (SQLDriverConnect)")

这似乎是由于Ubuntu VM/容器上缺少odbc驱动程序,GitHub操作用来运行代码。

因此,我尝试在建筑环境中安装驱动程序,使用:

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install -y msodbcsql18
ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev

这里也提出了同样的建议。

然而,当运行操作时,我收到以下错误:

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: apt-key output should not be parsed (stdout is not a terminal)
E: This command can only be used by root.
100   983  100   983    0     0   8776      0 --:--:-- --:--:-- --:--:--  8776
(23) Failed writing body
Error: Process completed with exit code 1.

这似乎是由curl命令引起的。

所以我的问题是,使用GitHub操作测试我的应用程序的最佳方式是什么?我需要安装odbc驱动程序吗?如果是,我该怎么做?

提前谢谢。

您只需要apt-get包即可安装驱动程序:

steps:
- uses: actions/checkout@v3
- name: Install Microsoft ODBC
run: sudo ACCEPT_EULA=Y apt-get install msodbcsql18 -y

它成功地为我安装了。但值得指出的是,当你连接时,你需要使用映射到容器的端口:

env:
PORT: ${{ job.services.mssql.ports[1433] }}

这假设SQL Server的设置方式如下:

mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
ports: [1433]
env:
MSSQL_PID: Developer
SA_PASSWORD: iugeshrigsuerbiwer
ACCEPT_EULA: Y

因为以上所有内容有时只是出于某种原因对我有用。我写了一个操作,按照微软的确切说明为任何发行版安装mssql-odbc驱动程序。在这里https://github.com/Yarden-zamir/install-mssql-odbc.如果将来有人像我一样偶然来到这里,并发现这很有用,那将是非常棒的。

你可以像一样使用它

- uses: Yarden-zamir/install-mssql-odbc@main

# all inputs
- uses: Yarden-zamir/install-mssql-odbc@main
with:
ODBC_VERSION: 17
DISTRO: Alpine
DOCS_URL: https://yarden-zamir.com/alternate-docs-path.md
REMOVE_EXITS: true

您需要使用提升的权限运行命令。简单地,将shellsudo相加,如下所示:

- name: Install dependencies
run: |
python -m pip install --upgrade pip
...
sudo apt-get install -y unixodbc-dev
shell: sudo bash {0}

最新更新