Skip to content

Commit 551fe59

Browse files
Copilotaleks-f
andcommitted
ci(workflows): make apt installs non-interactive, add retries and diagnostic log upload for linux-gcc-cmake-odbc
Co-authored-by: aleks-f <[email protected]>
1 parent 0bcdb21 commit 551fe59

File tree

1 file changed

+72
-22
lines changed

1 file changed

+72
-22
lines changed

.github/workflows/ci.yml

Lines changed: 72 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -811,36 +811,86 @@ jobs:
811811
- 1433:1433
812812
steps:
813813
- uses: actions/checkout@v4
814-
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev alien libaio1 gnupg2 curl odbcinst1debian2 libodbc1 odbcinst # libmysqlclient-dev mysql-client odbc-postgresql
815-
# - name: Setup MySQL ODBC connector
816-
# run: |
817-
# wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.2/mysql-connector-odbc_8.2.0-1ubuntu22.04_amd64.deb
818-
# wget https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-community-client-plugins_8.2.0-1ubuntu22.04_amd64.deb
819-
# sudo dpkg -i mysql-community-client-plugins_8.2.0-1ubuntu22.04_amd64.deb mysql-connector-odbc_8.2.0-1ubuntu22.04_amd64.deb
820-
821-
- name: Free disk space
814+
815+
- name: Pre-check runner disk & cleanup
822816
run: |
823-
sudo df
824-
sudo apt autopurge
825-
sudo apt clean
826-
sudo rm -rf /usr/share/dotnet
827-
sudo npm cache clean --force
828-
sudo docker system prune -a --force
829-
sudo df
830-
- name: Setup Oracle ODBC connector
817+
echo "Disk usage before cleanup:"
818+
df -h .
819+
free -h
820+
sudo rm -f /var/lib/dpkg/lock-frontend /var/cache/apt/archives/lock || true
821+
sudo apt-get -y autoremove --purge || true
822+
sudo apt-get -y clean || true
823+
sudo rm -rf /usr/share/dotnet || true
824+
sudo npm cache clean --force || true
825+
sudo docker system prune -a --force || true
826+
echo "Disk usage after cleanup:"
827+
df -h .
828+
829+
- name: Install basic system dependencies (robust)
830+
env:
831+
DEBIAN_FRONTEND: noninteractive
831832
run: |
833+
set -euxo pipefail
834+
sudo rm -f /var/lib/dpkg/lock-frontend /var/cache/apt/archives/lock || true
835+
sudo apt-get update -o Acquire::Retries=3
836+
for i in 1 2 3; do
837+
sudo apt-get install -y --no-install-recommends \
838+
-o Dpkg::Options::="--force-confdef" \
839+
-o Dpkg::Options::="--force-confold" \
840+
libssl-dev unixodbc-dev alien libaio1 gnupg2 curl \
841+
odbcinst1debian2 libodbc1 odbcinst || {
842+
echo "apt-get install attempt $i failed; retrying in 10s..."
843+
sleep 10
844+
continue
845+
}
846+
break
847+
done
848+
849+
- name: Setup Oracle ODBC connector (.deb) and fix deps
850+
env:
851+
DEBIAN_FRONTEND: noninteractive
852+
run: |
853+
set -euxo pipefail
832854
wget https://www.devart.com/odbc/oracle/devartodbcoracle_amd64.deb
833-
sudo dpkg -i devartodbcoracle_amd64.deb
834-
- run: ls -l /etc/apt/sources.list.d/
835-
- name: Setup SQL Server ODBC connector
855+
sudo dpkg -i devartodbcoracle_amd64.deb || true
856+
sudo apt-get update -o Acquire::Retries=3
857+
sudo apt-get install -y -f
858+
dpkg -l | grep -Ei 'devart|odbc|oracle' || true
859+
860+
- name: Setup Microsoft packages & msodbcsql18
861+
env:
862+
DEBIAN_FRONTEND: noninteractive
836863
run: |
864+
set -euxo pipefail
837865
curl -sSL -O https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
838866
sudo dpkg -i packages-microsoft-prod.deb
839867
rm packages-microsoft-prod.deb
840-
sudo apt-get update
868+
sudo apt-get update -o Acquire::Retries=3
841869
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
842-
ls /opt/microsoft/msodbcsql18/include
843-
- run: ls -l /etc/apt/sources.list.d/
870+
871+
- name: Capture apt/dpkg/system diagnostics on failure
872+
if: failure()
873+
run: |
874+
set -euxo pipefail
875+
echo "===== APT / DPKG DIAGNOSTICS ====="
876+
sudo tail -n +1 /var/log/apt/term.log || true
877+
sudo tail -n +1 /var/log/apt/history.log || true
878+
sudo tail -n +1 /var/log/dpkg.log || true
879+
df -h || true
880+
free -h || true
881+
uname -a || true
882+
dmesg --level=err,warn | tail -n 200 || true
883+
mkdir -p $GITHUB_WORKSPACE/ci-apt-logs
884+
sudo cp /var/log/apt/* $GITHUB_WORKSPACE/ci-apt-logs/ 2>/dev/null || true
885+
sudo cp /var/log/dpkg.log $GITHUB_WORKSPACE/ci-apt-logs/ 2>/dev/null || true
886+
ls -l $GITHUB_WORKSPACE/ci-apt-logs || true
887+
888+
- name: Upload apt/dpkg logs
889+
if: always()
890+
uses: actions/upload-artifact@v4
891+
with:
892+
name: apt-dpkg-logs
893+
path: ci-apt-logs
844894
- run: >-
845895
cmake -S. -Bcmake-build -GNinja -DPOCO_MINIMAL_BUILD=ON -DENABLE_DATA_ODBC=ON -DENABLE_TESTS=ON
846896
- run: cmake --build cmake-build --target all --parallel 4

0 commit comments

Comments
 (0)