From 5dd59369269f7ce469fb158a88e052afaa271cc2 Mon Sep 17 00:00:00 2001 From: j2gg0s Date: Fri, 22 Nov 2024 14:35:34 +0800 Subject: [PATCH] ci: fix build workflow with mssql --- .github/workflows/build.yml | 4 ++-- internal/dbtest/mssql-docker/Dockerfile | 1 - internal/dbtest/mssql-docker/configure-db.sh | 22 +++++++++----------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 43b5a67e1..efad67bea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,14 +65,14 @@ jobs: image: ghcr.io/uptrace/mssql:latest env: ACCEPT_EULA: Y - MYSQL_SA_PASSWORD: passWORD1 + MSSQL_SA_PASSWORD: passWORD1 MSSQL_DB: test MSSQL_USER: sa MSSQL_PASSWORD: passWORD1 ports: - 1433:1433 options: >- - --health-cmd="/opt/mssql-tools/bin/sqlcmd -S tcp:localhost,1433 -U sa -P passWORD1 -Q + --health-cmd="/opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P passWORD1 -Q 'select 1' -b -o /dev/null" --health-interval=10s --health-timeout=5s --health-retries=5 steps: diff --git a/internal/dbtest/mssql-docker/Dockerfile b/internal/dbtest/mssql-docker/Dockerfile index 9073a2545..cc33ebc19 100644 --- a/internal/dbtest/mssql-docker/Dockerfile +++ b/internal/dbtest/mssql-docker/Dockerfile @@ -17,4 +17,3 @@ WORKDIR /usr/config COPY . /usr/config ENTRYPOINT ["./entrypoint.sh"] - diff --git a/internal/dbtest/mssql-docker/configure-db.sh b/internal/dbtest/mssql-docker/configure-db.sh index 5025b1f76..f1dc4d759 100755 --- a/internal/dbtest/mssql-docker/configure-db.sh +++ b/internal/dbtest/mssql-docker/configure-db.sh @@ -1,25 +1,23 @@ #!/bin/bash -# Wait 60 seconds for SQL Server to start up by ensuring that +# Wait 60 seconds for SQL Server to start up by ensuring that # calling SQLCMD does not return an error code, which will ensure that sqlcmd is accessible # and that system and user databases return "0" which means all databases are in an "online" state -# https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql?view=sql-server-2017 +# https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql?view=sql-server-2017 DBSTATUS=1 -ERRCODE=1 i=0 -while [[ $DBSTATUS -ne 0 ]] && [[ $i -lt 60 ]] && [[ $ERRCODE -ne 0 ]]; do - i=$i+1 - DBSTATUS=$(/opt/mssql-tools/bin/sqlcmd -h -1 -t 1 -U sa -P $MYSQL_SA_PASSWORD -Q "SET NOCOUNT ON; Select SUM(state) from sys.databases") - ERRCODE=$? - sleep 1 +while [[ $DBSTATUS -ne 0 ]] && [[ $i -lt 30 ]] ; do + i=$((i+1)) + DBSTATUS=$(/opt/mssql-tools18/bin/sqlcmd -h -1 -t 1 -C -U sa -P "$MSSQL_SA_PASSWORD" -Q "SET NOCOUNT ON; Select SUM(state) from sys.databases") + sleep 1 done -if [ $DBSTATUS -ne 0 ] OR [ $ERRCODE -ne 0 ]; then - echo "SQL Server took more than 60 seconds to start up or one or more databases are not in an ONLINE state" - exit 1 +if [[ $DBSTATUS -ne 0 ]] ; then + echo "SQL Server took more than 30 seconds to start up or one or more databases are not in an ONLINE state" $DBSTATUS + exit 1 fi # Run the setup script to create the DB and the schema in the DB -/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MYSQL_SA_PASSWORD -d master -i setup.sql +/opt/mssql-tools18/bin/sqlcmd -C -U sa -P "$MSSQL_SA_PASSWORD" -d master -i setup.sql