99jobs :
1010 build :
1111
12- runs-on : windows-latest
12+ runs-on : ubuntu-latest
13+
14+ services :
15+ mssql :
16+ image : mcr.microsoft.com/mssql/server:2022-latest
17+ env :
18+ ACCEPT_EULA : Y
19+ MSSQL_SA_PASSWORD : YourStrong@Passw0rd
20+ ports :
21+ - 1433:1433
22+ options : >-
23+ --health-cmd "/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'YourStrong@Passw0rd' -Q 'SELECT 1' -No"
24+ --health-interval 10s
25+ --health-timeout 5s
26+ --health-retries 10
27+ --health-start-period 20s
1328
1429 steps :
1530 - uses : actions/checkout@v4
@@ -19,35 +34,29 @@ jobs:
1934 with :
2035 dotnet-version : 9.0.x
2136
22- - name : Install SQL Server
23- # Installs SQL Server and writes GITHUB_ACTION_SQL_SERVER_CONNECTION_STRING
24- # with catalog=AdventureWorks2012. The database is empty at this point.
25- uses : Particular/install-sql-server-action@v1.0.0
26- with :
27- connection-string-env-var : GITHUB_ACTION_SQL_SERVER_CONNECTION_STRING
28- catalog : AdventureWorks2012
29- extra-params : " "
30-
3137 - name : Restore AdventureWorks2012 from backup
32- shell : pwsh
3338 run : |
34- $bak = "$env:TEMP\AdventureWorks2012.bak"
35- Write-Host "Downloading AdventureWorks2012.bak..."
36- Invoke-WebRequest `
37- -Uri "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2012.bak" `
38- -OutFile $bak
39-
40- # Parse server name from connection string
41- $cs = $env:GITHUB_ACTION_SQL_SERVER_CONNECTION_STRING
42- if ($cs -match "(?i)(?:Data Source|Server)\s*=\s*([^;]+)") {
43- $server = $Matches[1].Trim()
44- } else {
45- throw "Cannot parse server from: $cs"
46- }
47- Write-Host "Restoring AdventureWorks2012 on '$server'..."
48-
49- # Restore over the empty database created by install-sql-server-action
50- sqlcmd -S "$server" -E -Q "RESTORE DATABASE [AdventureWorks2012] FROM DISK = N'$bak' WITH REPLACE, NOUNLOAD, STATS = 5"
39+ BAK=/tmp/AdventureWorks2012.bak
40+ echo "Downloading AdventureWorks2012.bak..."
41+ curl -L -o "$BAK" \
42+ "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2012.bak"
43+
44+ CONTAINER_ID=$(docker ps -q --filter "ancestor=mcr.microsoft.com/mssql/server:2022-latest")
45+ echo "SQL Server container: $CONTAINER_ID"
46+
47+ echo "Copying backup into container..."
48+ docker cp "$BAK" "$CONTAINER_ID:/var/opt/mssql/data/AdventureWorks2012.bak"
49+
50+ echo "Restoring AdventureWorks2012..."
51+ docker exec "$CONTAINER_ID" \
52+ /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'YourStrong@Passw0rd' -No -Q \
53+ "RESTORE DATABASE [AdventureWorks2012]
54+ FROM DISK = N'/var/opt/mssql/data/AdventureWorks2012.bak'
55+ WITH MOVE 'AdventureWorks2012' TO '/var/opt/mssql/data/AdventureWorks2012_Data.mdf',
56+ MOVE 'AdventureWorks2012_log' TO '/var/opt/mssql/data/AdventureWorks2012_Log.ldf',
57+ REPLACE, NOUNLOAD, STATS = 5"
58+
59+ echo "GITHUB_ACTION_SQL_SERVER_CONNECTION_STRING=Data Source=localhost,1433;Initial Catalog=AdventureWorks2012;User ID=SA;Password=YourStrong@Passw0rd;TrustServerCertificate=True;" >> "$GITHUB_ENV"
5160
5261 - name : Build
53- run : ./build.cmd
62+ run : ./build.sh
0 commit comments