Update to use new organization settings. #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- '**' | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
branches: | |
- '**' | |
paths-ignore: | |
- '**.md' | |
env: | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | |
DOTNET_CLI_TELEMETRY_OPTOUT: true | |
DOTNET_NOLOGO: true | |
buildConfiguration: 'Debug' | |
skipTests: false | |
deterministicTests: true | |
jobs: | |
BuildAndTest: | |
strategy: | |
fail-fast: false | |
matrix: | |
aceVersion: | |
- 2010 | |
- 2016 | |
aceArchitecture: | |
- x64 | |
- x86 | |
dataAccessProviderType: | |
- ODBC | |
- OLE DB | |
os: | |
- windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set additional variables | |
shell: pwsh | |
run: | | |
$os = '${{ matrix.os }}'.Split('-')[0] | |
echo "os=$os" >> $env:GITHUB_ENV | |
$dotnetInstallDirectory = '.\.dotnet_${{ matrix.aceArchitecture }}' | |
echo "dotnetInstallDirectory=$dotnetInstallDirectory" >> $env:GITHUB_ENV | |
$dotnetExecutable = Join-Path $dotnetInstallDirectory 'dotnet.exe' | |
echo "dotnetExecutable=$dotnetExecutable" >> $env:GITHUB_ENV | |
$aceUrls = @{ | |
'2010' = @{ | |
'x64' = 'https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_X64.exe' | |
'x86' = 'https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe' | |
'silent' = '/passive /quiet /norestart REBOOT=ReallySuppress' | |
} | |
'2016' = @{ | |
'x64' = 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/AccessDatabaseEngine_X64.exe' | |
'x86' = 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/AccessDatabaseEngine.exe' | |
'silent' = '/passive /quiet /norestart REBOOT=ReallySuppress' | |
} | |
} | |
$aceUrl = $aceUrls['${{ matrix.aceVersion }}']['${{ matrix.aceArchitecture }}'] | |
echo "aceUrl=$aceUrl" >> $env:GITHUB_ENV | |
$aceSilentInstallArgument = $aceUrls['${{ matrix.aceVersion }}']['silent'] | |
echo "aceSilentInstallArgument=$aceSilentInstallArgument" >> $env:GITHUB_ENV | |
$defaultConnection = '${{ matrix.dataAccessProviderType }}' -eq 'ODBC' ? 'DBQ=Jet.accdb' : 'Data Source=Jet.accdb;Persist Security Info=False;' | |
echo "defaultConnection=$defaultConnection" >> $env:GITHUB_ENV | |
- name: Output Variables | |
shell: pwsh | |
run: | | |
echo "os: ${{ env.os }}" | |
echo "buildConfiguration: ${{ env.buildConfiguration }}" | |
echo "aceVersion: ${{ matrix.aceVersion }}" | |
echo "aceArchitecture: ${{ matrix.aceArchitecture }}" | |
echo "aceUrl: ${{ env.aceUrl }}" | |
echo "aceSilentInstallArgument: ${{ env.aceSilentInstallArgument }}" | |
echo "dataAccessProviderType: ${{ matrix.dataAccessProviderType }}" | |
echo "defaultConnection: ${{ env.defaultConnection }}" | |
echo "skipTests: ${{ env.skipTests }}" | |
echo "dotnetInstallDirectory: ${{ env.dotnetInstallDirectory }}" | |
echo "dotnetExecutable: ${{ env.dotnetExecutable }}" | |
echo "github.event_name: ${{ github.event_name }}" | |
echo "github.repository: ${{ github.repository }}" | |
- name: .NET Information Before SDK Install | |
shell: pwsh | |
run: try { & '${{ env.dotnetExecutable }}' --info } catch { echo 'No ${{ matrix.aceArchitecture }} .NET SDK installed.' } | |
- name: Install .NET SDK | |
shell: pwsh | |
run: | | |
&([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) -JSonFile global.json -Architecture '${{ matrix.aceArchitecture }}' -InstallDir '${{ env.dotnetInstallDirectory }}' -Verbose | |
- name: .NET Information After SDK Install | |
shell: pwsh | |
run: try { & '${{ env.dotnetExecutable }}' --info } catch { echo 'No ${{ matrix.aceArchitecture }} .NET SDK installed.' } | |
- name: ACE Information Before ACE Install | |
shell: pwsh | |
run: | | |
'DAO:' | |
Get-ChildItem 'HKLM:\SOFTWARE\Classes\DAO.DBEngine*' | Select-Object | |
'OLE DB:' | |
foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator()) | |
{ | |
$v = New-Object PSObject | |
for ($i = 0; $i -lt $provider.FieldCount; $i++) | |
{ | |
Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i) | |
} | |
$v | |
} | |
- name: Install Access Database Engine | |
shell: pwsh | |
run: | | |
$setupFileName = 'AccessDatabaseEngine_${{ matrix.aceVersion }}_${{ matrix.aceArchitecture }}.exe' | |
Invoke-WebRequest '${{ env.aceUrl }}' -OutFile $setupFileName | |
& ".\$setupFileName" ${{ env.aceSilentInstallArgument }} | Out-Default | |
- name: ACE Information After ACE Install | |
shell: pwsh | |
run: | | |
'DAO:' | |
Get-ChildItem 'HKLM:\SOFTWARE\Classes\DAO.DBEngine*' | Select-Object | |
'OLE DB:' | |
foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator()) | |
{ | |
$v = New-Object PSObject | |
for ($i = 0; $i -lt $provider.FieldCount; $i++) | |
{ | |
Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i) | |
} | |
$v | |
} | |
- name: Build Solution | |
shell: pwsh | |
run: | | |
& '${{ env.dotnetExecutable }}' build --configuration ${{ env.buildConfiguration }} -p:FixedTestOrder=${{ env.deterministicTests }} | |
- name: 'Run Tests: EFCore.Jet.Data.Tests' | |
shell: pwsh | |
run: | | |
$env:EFCoreJet_DefaultConnection = '${{ env.defaultConnection }}' | |
& '${{ env.dotnetExecutable }}' test .\test\EFCore.Jet.Data.Tests -c '${{ env.buildConfiguration }}' --no-build --logger trx --verbosity detailed --blame-hang-timeout 3m | |
- name: 'Run Tests: EFCore.Jet.FunctionalTests' | |
shell: pwsh | |
continue-on-error: true | |
run: | | |
$env:EFCoreJet_DefaultConnection = '${{ env.defaultConnection }}' | |
& '${{ env.dotnetExecutable }}' test .\test\EFCore.Jet.FunctionalTests -c '${{ env.buildConfiguration }}' --no-build --logger trx --verbosity detailed --blame-hang-timeout 3m | |
exit 0 | |
- name: 'Run Tests: EFCore.Jet.Tests' | |
shell: pwsh | |
run: | | |
$env:EFCoreJet_DefaultConnection = '${{ env.defaultConnection }}' | |
& '${{ env.dotnetExecutable }}' test .\test\EFCore.Jet.Tests -c '${{ env.buildConfiguration }}' --no-build --logger trx --verbosity detailed --blame-hang-timeout 3m | |
NuGet: | |
needs: BuildAndTest | |
if: github.event_name == 'push' && github.repository == 'CirrusRedOrg/EntityFrameworkCore.Jet' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup .NET SDK | |
uses: actions/setup-dotnet@v3 | |
with: | |
global-json-file: global.json | |
- name: .NET Information | |
shell: pwsh | |
run: | | |
dotnet --info | |
- name: NuGet Pack | |
shell: pwsh | |
run: | | |
$officialBuild = '${{ github.ref }}' -match '(?<=^refs/tags/v)\d+\.\d+\.\d+.*$' | |
$officialVersion = $Matches.0 | |
$wipBuild = '${{ github.ref }}' -match '^refs/heads/.*-wip$' | |
$ciBuildOnly = $wipBuild -or ('${{ github.ref }}' -match '^refs/heads/(?:master|.*-servicing)$') | |
$continuousIntegrationTimestamp = Get-Date -Format yyyyMMddHHmmss | |
$buildSha = '${{ github.sha }}'.SubString(0, 7); | |
$pack = $officialBuild -or $ciBuildOnly | |
$pushToAzureArtifacts = $pack | |
$pushToMygetOrg = $pack | |
$pushToNugetOrg = $pack -and $officialBuild | |
echo "pushToAzureArtifacts: $pushToAzureArtifacts" | |
echo "pushToMygetOrg: $pushToMygetOrg" | |
echo "pushToNugetOrg: $pushToNugetOrg" | |
echo "officialBuild: $officialBuild" | |
echo "officialVersion: $officialVersion" | |
echo "wipBuild: $wipBuild" | |
echo "ciBuildOnly: $ciBuildOnly" | |
echo "continuousIntegrationTimestamp: $continuousIntegrationTimestamp" | |
echo "buildSha: $buildSha" | |
echo "pack: $pack" | |
if ($pack) | |
{ | |
$projectFiles = Get-ChildItem src/*/*.csproj -Recurse | % { $_.FullName } | |
$combinations = @('default', @('Release')), @('withPdbs', @('Release', 'Debug')) #, @('embeddedPdbs', @('Release', 'Debug')) | |
foreach ($combination in $combinations) | |
{ | |
$type = $combination[0] | |
$configurations = $combination[1] | |
foreach ($configuration in $configurations) | |
{ | |
$arguments = 'pack', '-c', $configuration, '-o', "nupkgs/$configuration/$type", '-p:ContinuousIntegrationBuild=true' | |
if ($officialBuild) | |
{ | |
$finalOfficialVersion = $officialVersion | |
if ($configuration -eq 'Debug') | |
{ | |
$finalOfficialVersion += '-debug' | |
} | |
$arguments += "-p:OfficialVersion=$finalOfficialVersion" | |
} | |
if ($ciBuildOnly) | |
{ | |
$arguments += "-p:ContinuousIntegrationTimestamp=$continuousIntegrationTimestamp" | |
$arguments += "-p:BuildSha=$buildSha" | |
} | |
switch ($type) | |
{ | |
'withPdbs' { $arguments += '-p:PackPdb=true', '-p:IncludeSymbols=false' } | |
'embeddedPdbs' { $arguments += '-p:DebugType=embedded', '-p:IncludeSymbols=false' } | |
} | |
foreach ($projectFile in $projectFiles) | |
{ | |
echo "Type: $type, Configuration: $configuration, Project: $projectFile" | |
echo "Pack command: dotnet $(($arguments + $projectFile) -join ' ')" | |
& dotnet ($arguments + $projectFile) | |
} | |
} | |
} | |
} | |
echo "pushToAzureArtifacts=$pushToAzureArtifacts" >> $env:GITHUB_ENV | |
echo "pushToMygetOrg=$pushToMygetOrg" >> $env:GITHUB_ENV | |
echo "pushToNugetOrg=$pushToNugetOrg" >> $env:GITHUB_ENV | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nupkgs | |
path: nupkgs | |
# - name: "NuGet Push - AZDO Feed - Debug" | |
# if: ${{ env.pushToAzureArtifacts == 'true' }} | |
# working-directory: nupkgs | |
# shell: pwsh | |
# run: | | |
# # https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/dotnet-exe?view=azure-devops#publish-packages-from-external-sources | |
# dotnet new nugetconfig --output './azdo-nuget' --force | |
# try | |
# { | |
# nuget sources Add -ConfigFile './azdo-nuget/nuget.config' -Name 'azdo-efcore-jet-debug' -Source 'https://bubibubi.pkgs.visualstudio.com/EntityFrameworkCore.Jet/_packaging/public/nuget/v3/index.json' -UserName '${{ vars.AZUREDEVOPS_BUBIBUBI_ALLPACKAGES_PUSHNEW_USERNAME }}' -Password '${{ secrets.AZUREDEVOPS_BUBIBUBI_ALLPACKAGES_PUSHNEW_PASSWORD }}' -StorePasswordInClearText | |
# | |
# nuget push './Release/withPdbs/**/*.nupkg' -ConfigFile './azdo-nuget/nuget.config' -ApiKey 'foo' -Source 'https://bubibubi.pkgs.visualstudio.com/EntityFrameworkCore.Jet/_packaging/public/nuget/v3/index.json' | |
# } | |
# finally | |
# { | |
# Remove-Item ./azdo-nuget -Recurse -Force | |
# } | |
# - name: "NuGet Push - AZDO Feed - Release" | |
# if: ${{ env.pushToAzureArtifacts == 'true' }} | |
# working-directory: nupkgs | |
# shell: pwsh | |
# run: | | |
# # https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/dotnet-exe?view=azure-devops#publish-packages-from-external-sources | |
# dotnet new nugetconfig --output './azdo-nuget' --force | |
# try | |
# { | |
# nuget sources Add -ConfigFile './azdo-nuget/nuget.config' -Name 'azdo-efcore-jet-public' -Source 'https://bubibubi.pkgs.visualstudio.com/EntityFrameworkCore.Jet/_packaging/public/nuget/v3/index.json' -UserName '${{ vars.AZUREDEVOPS_POMELO_ALLPACKAGES_PUSHNEW_USERNAME }}' -Password '${{ secrets.AZUREDEVOPS_POMELO_ALLPACKAGES_PUSHNEW_PASSWORD }}' -StorePasswordInClearText | |
# | |
# nuget push './Release/withPdbs/**/*.nupkg' -ConfigFile './azdo-nuget/nuget.config' -ApiKey 'foo' -Source 'https://bubibubi.pkgs.visualstudio.com/EntityFrameworkCore.Jet/_packaging/public/nuget/v3/index.json' | |
# } | |
# finally | |
# { | |
# Remove-Item ./azdo-nuget -Recurse -Force | |
# } | |
- name: "NuGet Push - myget.org - Debug" | |
if: ${{ env.pushToMygetOrg == 'true' }} | |
working-directory: nupkgs | |
shell: pwsh | |
run: dotnet nuget push './Debug/withPdbs/**/*.nupkg' --api-key '${{ secrets.MYGETORG_CIRRUSRED_ALLPACKAGES_DEBUG_PUSHNEW }}' --source 'https://www.myget.org/F/cirrusred-debug/api/v3/index.json' | |
- name: "NuGet Push - myget.org - Release" | |
if: ${{ env.pushToMygetOrg == 'true' }} | |
working-directory: nupkgs | |
shell: pwsh | |
run: dotnet nuget push './Release/default/**/*.nupkg' --api-key '${{ secrets.MYGETORG_CIRRUSRED_ALLPACKAGES_PUSHNEW }}' --source 'https://www.myget.org/F/cirrusred/api/v3/index.json' | |
- name: "NuGet Push - nuget.org - Release" | |
if: ${{ env.pushToNugetOrg == 'true' }} | |
working-directory: nupkgs | |
shell: pwsh | |
run: dotnet nuget push './Release/default/**/*.nupkg' --api-key '${{ secrets.NUGETORG_EFCOREJET_ALLPACKAGES_PUSHNEW }}' --source 'https://api.nuget.org/v3/index.json' |