diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 00000000..9c0cd5a8 --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,46 @@ +name: .NET + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:13 + env: + POSTGRES_PASSWORD: Password12! + POSTGRES_USER: postgres + POSTGRES_DB: sqlprovider + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Restore tools + run: dotnet tool restore + + - name: Restore dependencies + run: dotnet paket restore + + - name: Build + run: dotnet fake run build.fsx -t Build + + - name: Test + run: dotnet fake run build.fsx -t RunTests \ No newline at end of file diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets index 17aeb635..bbeec153 100644 --- a/.paket/Paket.Restore.targets +++ b/.paket/Paket.Restore.targets @@ -235,15 +235,14 @@ $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[2]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7]) $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[8]) - - %(PaketReferencesFileLinesInfo.PackageVersion) + + %(PaketReferencesFileLinesInfo.PackageVersion) All runtime $(ExcludeAssets);contentFiles @@ -253,10 +252,6 @@ true - - - %(PaketReferencesFileLinesInfo.PackageVersion) - diff --git a/appveyor.yml b/appveyor.yml index e458529f..1ba52765 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,8 +5,8 @@ build_script: test: off version: 0.0.1.{build} image: Visual Studio 2022 -install: - - cmd: choco install dotnetcore-sdk -y +services: + - mssql2022 artifacts: - path: bin name: bin diff --git a/build.fsx b/build.fsx index 89ea5686..5051eaed 100644 --- a/build.fsx +++ b/build.fsx @@ -285,9 +285,11 @@ let setupMssql url saPassword = connBuilder.UserID <- "sa" connBuilder.DataSource <- url connBuilder.Password <- saPassword + connBuilder.TrustServerCertificate <- true let runCmd query = - // We wait up to 30 seconds for MSSQL to be initialized + // We wait up to 60 seconds for MSSQL to be initialized on AppVeyor + let maxAttempts = if Fake.Core.BuildServer.buildServer = AppVeyor then 60 else 30 let rec runCmd' attempt = try use conn = new SqlConnection(connBuilder.ConnectionString) @@ -295,11 +297,15 @@ let setupMssql url saPassword = use cmd = new SqlCommand(query, conn) cmd.ExecuteNonQuery() |> ignore with e -> - printfn "Connection attempt %i: %A" attempt e - Threading.Thread.Sleep 1000 - if attempt < 30 then runCmd' (attempt + 1) + printfn "Connection attempt %i/%i: %A" attempt maxAttempts e + if attempt < maxAttempts then + Threading.Thread.Sleep 1000 + runCmd' (attempt + 1) + else + printfn "Failed to connect to SQL Server after %i attempts. Last error: %A" maxAttempts e + reraise() - runCmd' 0 + runCmd' 1 let runScript fileLines = @@ -330,11 +336,13 @@ let setupMssql url saPassword = (url,saPassword) |> ignore Target.create "SetupMSSQL2008R2" (fun _ -> - setupMssql "(local)\\SQL2008R2SP2" "Password12!" + printfn "Setting up MSSQL for AppVeyor (compatibility target for SQL2008R2)" + setupMssql "(local)\\SQL2022" "Password12!" ) Target.create "SetupMSSQL2017" (fun _ -> - setupMssql "(local)\\SQL2017" "Password12!" + printfn "Setting up MSSQL for AppVeyor (compatibility target for SQL2017)" + setupMssql "(local)\\SQL2022" "Password12!" ) diff --git a/tests/SqlProvider.Tests/SqlServerTests.fs b/tests/SqlProvider.Tests/SqlServerTests.fs index fc81c9c8..7e3995ed 100644 --- a/tests/SqlProvider.Tests/SqlServerTests.fs +++ b/tests/SqlProvider.Tests/SqlServerTests.fs @@ -12,8 +12,8 @@ let runtimeConnStr = connStr2008R2 #else module SqlServerTests -let [] connStr2008R2 = "Data Source=(local)\SQL2008R2SP2;User Id=sa;Password=Password12!; Initial Catalog=sqlprovider;" -let [] connStr2017 = "Data Source=(local)\SQL2017;User Id=sa;Password=Password12!; Initial Catalog=sqlprovider;" +let [] connStr2008R2 = "Data Source=(local)\SQL2022;User Id=sa;Password=Password12!; Initial Catalog=sqlprovider; TrustServerCertificate=true;" +let [] connStr2017 = "Data Source=(local)\SQL2022;User Id=sa;Password=Password12!; Initial Catalog=sqlprovider; TrustServerCertificate=true;" #endif