Skip to content

Commit

Permalink
ci: fix build workflow with mssql
Browse files Browse the repository at this point in the history
  • Loading branch information
j2gg0s committed Nov 22, 2024
1 parent 993ae63 commit 5dd5936
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 15 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 0 additions & 1 deletion internal/dbtest/mssql-docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,3 @@ WORKDIR /usr/config
COPY . /usr/config

ENTRYPOINT ["./entrypoint.sh"]

22 changes: 10 additions & 12 deletions internal/dbtest/mssql-docker/configure-db.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 5dd5936

Please sign in to comment.