Skip to content

[ODS-6570] Nhibernate Upgrade for 7.1 and 7.2 (#1190) #1001

[ODS-6570] Nhibernate Upgrade for 7.1 and 7.2 (#1190)

[ODS-6570] Nhibernate Upgrade for 7.1 and 7.2 (#1190) #1001

# SPDX-License-Identifier: Apache-2.0
# Licensed to the Ed-Fi Alliance under one or more agreements.
# The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0.
# See the LICENSE and NOTICES files in the project root for more information.
name: Pkg EdFi.Ods.Minimal.Template.TPDM
on:
push:
branches:
[main, 'ODS-*',b-v*-patch*]
workflow_dispatch:
inputs:
distinct_id:
description: 'distinct ID for Rebuild Database Templates workflow'
required: false
default: 'distinct_id'
env:
INFORMATIONAL_VERSION: "7.1"
BUILD_INCREMENTER: "-434"
AZURE_ARTIFACT_URL: "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/nuget/v3/index.json"
AZURE_ARTIFACT_NUGET_KEY: ${{ secrets.AZURE_ARTIFACTS_PERSONAL_ACCESS_TOKEN }}
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS : '{"endpointCredentials": [{"endpoint": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/nuget/v3/index.json","password": "${{ secrets.AZURE_ARTIFACTS_PERSONAL_ACCESS_TOKEN }}"}]}'
CONFIGURATION: "Release"
REPOSITORY_DISPATCH_BRANCH: ${{ github.event.client_payload.branch }}
HEAD_REF: ${{ GITHUB.HEAD_REF }}
REF_NAME: ${{ GITHUB.REF_NAME }}
REPOSITORY_OWNER: ${{ GITHUB.REPOSITORY_OWNER }}
jobs:
FindStandardAndExtensionVersions:
runs-on: ubuntu-latest
outputs:
StandardVersions: ${{ steps.Set_StandardVersions.outputs.StandardVersions }}
ExtensionVersions: ${{ steps.Set_ExtensionVersions.outputs.ExtensionVersions }}
steps:
- name: Checkout Ed-Fi-ODS
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-ODS
path: Ed-Fi-ODS/
- name: Checkout Ed-Fi-Extensions
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-Extensions
path: Ed-Fi-Extensions/
- name: Is pull request branch exists in Ed-Fi-Extensions
working-directory: ./Ed-Fi-ODS/
shell: pwsh
run: |
.\build.githubactions.ps1 CheckoutBranch -RelativeRepoPath "../Ed-Fi-Extensions"
- name: Set StandardVersions
id: Set_StandardVersions
working-directory: ./Ed-Fi-ODS/
run: |
$output = .\build.githubactions.ps1 StandardVersions -ProjectFile "$env:GITHUB_WORKSPACE/Ed-Fi-ODS/Application/EdFi.Ods.Standard/EdFi.Ods.Standard.csproj"
echo "StandardVersions=$output" >> $env:GITHUB_OUTPUT
Write-host "StandardVersions is $output"
shell: pwsh
- name: Set ExtensionVersions
id: Set_ExtensionVersions
working-directory: ./Ed-Fi-Extensions/
run: |
$output = .\build.githubactions.ps1 ExtensionVersions -ProjectFile "$env:GITHUB_WORKSPACE/Ed-Fi-Extensions/Extensions/EdFi.Ods.Extensions.TPDM/EdFi.Ods.Extensions.TPDM.csproj"
echo "ExtensionVersions=$output" >> $env:GITHUB_OUTPUT
Write-host "ExtensionVersions is $output"
shell: pwsh
build:
if: ${{ always() }}
needs: FindStandardAndExtensionVersions
runs-on: windows-latest
strategy:
matrix:
StandardVersion: ${{ fromJson(needs.FindStandardAndExtensionVersions.outputs.StandardVersions) }}
ExtensionVersion: ${{ fromJson(needs.FindStandardAndExtensionVersions.outputs.ExtensionVersions) }}
name: build (Standard ${{ matrix.StandardVersion }} Extension ${{ matrix.ExtensionVersion }})
steps:
- name: echo distinct ID ${{ github.event.inputs.distinct_id }}
run: echo "${{ github.event.inputs.distinct_id }}"
- name: Check for Azure token
if: ${{ env.REPOSITORY_OWNER == 'Ed-Fi-Alliance-OSS' && env.AZURE_ARTIFACT_NUGET_KEY == '' }}
run: |
echo "::error::Missing Azure Token"
exit 1
- name: Setup .NET
uses: actions/setup-dotnet@c0d4ad69d8bd405d234f1c9166d383b7a4f69ed8 # 2.1.0
with:
dotnet-version: 6.0.x
- name: Support longpaths
run: git config --system core.longpaths true
- name: Checkout Ed-Fi-ODS
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-ODS
path: Ed-Fi-ODS/
- name: Checkout Ed-Fi-ODS-Implementation
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-ODS-Implementation
path: Ed-Fi-ODS-Implementation/
- name: Set EdFi-Standard Reference
working-directory: ./Ed-Fi-ODS/
run: |
$standardTag = .\build.githubactions.ps1 StandardTag -standardVersion ${{ matrix.StandardVersion }} -ProjectFile "./Application/EdFi.Ods.Standard/EdFi.Ods.Standard.csproj"
echo "EDFI_STANDARD_REFERENCE=$standardTag">> $env:GITHUB_ENV
Write-host "Ed-Fi-Standard Tag is $standardTag"
shell: powershell
- name: Checkout Ed-Fi-ODS-Standard
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-Standard
path: Ed-Fi-Standard/
ref: ${{ env.EDFI_STANDARD_REFERENCE }}
- name: Set EdFi-Tpdm Reference
working-directory: ./Ed-Fi-ODS/
run: |
$tpdmTag = .\build.githubactions.ps1 TpdmTag -standardVersion ${{ matrix.StandardVersion }} -ProjectFile "./Application/EdFi.Ods.Standard/EdFi.Ods.Standard.csproj"
echo "EDFI_TPDM_REFERENCE=$tpdmTag">> $env:GITHUB_ENV
Write-host "EdFi-Tpdm Tag is $tpdmTag"
shell: powershell
- name: Checkout Ed-Fi-TPDM-Artifacts
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
with:
repository: Ed-Fi-Alliance-OSS/Ed-Fi-TPDM-Artifacts
path: Ed-Fi-TPDM-Artifacts/
ref: ${{ env.EDFI_TPDM_REFERENCE }}
- name: Is pull request branch exists in Ed-Fi-ODS-Implementation
working-directory: ./Ed-Fi-ODS/
shell: powershell
run: |
.\build.githubactions.ps1 CheckoutBranch -RelativeRepoPath "../Ed-Fi-ODS-Implementation"
- name: Install sql-server-2019 & sqlpackage
shell: powershell
run: |
choco install sql-server-2019 -y --params "'/IGNOREPENDINGREBOOT /IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=MSSQLSERVER /INSTANCENAME=MSSQLSERVER /TCPENABLED=1 /UPDATEENABLED=FALSE /FEATURES=SQL,Tools'" --execution-timeout=$installTimeout
choco install sqlpackage
- name: Cache Nuget packages
uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 #v4.0.1
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj*', '**/configuration.packages.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore NuGet packages
working-directory: ./Ed-Fi-ODS/
run: |
.\build.githubactions.ps1 restore -Solution "$env:GITHUB_WORKSPACE/Ed-Fi-ODS-Implementation/Application/Ed-Fi-Ods.sln"
shell: powershell
- name: Initialize-DevelopmentEnvironment
working-directory: ./Ed-Fi-ODS-Implementation/
run: |
$ErrorActionPreference = 'Stop'
[Environment]::SetEnvironmentVariable('msbuild_buildConfiguration', '${{ env.CONFIGURATION }}')
$PSVersionTable
. $env:GITHUB_WORKSPACE/Ed-Fi-ODS-Implementation/Initialize-PowershellForDevelopment.ps1
Initialize-DevelopmentEnvironment -UsePlugins -NoDeploy -NoRestore -extensionVersion ${{ matrix.ExtensionVersion }} -StandardVersion ${{ matrix.StandardVersion }}
shell: powershell
- name: Create Database Template (no extensions)
working-directory: ./
run: |
$ErrorActionPreference = 'Stop'
[Environment]::SetEnvironmentVariable('msbuild_buildConfiguration', '${{ env.CONFIGURATION }}')
Import-Module -Force -Scope Global "$env:GITHUB_WORKSPACE/Ed-Fi-ODS-Implementation/DatabaseTemplate/Modules/create-tpdm-minimal-template.psm1"
Initialize-TPDMMinimalTemplate -extensionVersion ${{ matrix.ExtensionVersion }} -standardVersion ${{ matrix.StandardVersion }}
shell: powershell
- name: pack
working-directory: ./Ed-Fi-ODS/
run: |
.\build.githubactions.ps1 pack -Configuration ${{ env.CONFIGURATION }} -InformationalVersion ${{ env.INFORMATIONAL_VERSION }} -BuildCounter ${{ github.run_number }} -BuildIncrementer ${{env.BUILD_INCREMENTER}} -NuspecFilePath "$env:GITHUB_WORKSPACE/Ed-Fi-ODS-Implementation/DatabaseTemplate/Database/EdFi.Ods.Minimal.Template.TPDM.Core.${{ matrix.ExtensionVersion }}.Standard.${{ matrix.StandardVersion }}.nuspec" -PackageName "EdFi.Suite3.Ods.Minimal.Template.TPDM.Core.${{ matrix.ExtensionVersion }}.Standard.${{ matrix.StandardVersion }}"
shell: powershell
- name: Install-credential-handler
working-directory: ./Ed-Fi-ODS-Implementation/
run: |
Import-Module -Force -Scope Global "$env:GITHUB_WORKSPACE/Ed-Fi-ODS-Implementation/logistics/scripts/modules/utility/cross-platform.psm1"
if (Get-IsWindows -and -not Get-InstalledModule | Where-Object -Property Name -eq "7Zip4Powershell") {
Install-Module -Force -Scope CurrentUser -Name 7Zip4Powershell
}
# using WebClient is faster then Invoke-WebRequest but shows no progress
$sourceUrl = ' https://github.com/microsoft/artifacts-credprovider/releases/download/v1.0.0/Microsoft.NuGet.CredentialProvider.zip'
$fileName = 'Microsoft.NuGet.CredentialProvider.zip'
Write-host "Downloading file from $sourceUrl..."
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($sourceUrl, "$env:temp/$fileName")
Write-host "Download complete."
if (-not (Test-Path "$env:temp/$fileName")) {
Write-Warning "Microsoft.NuGet.CredentialProvider file '$fileName' not found."
exit 0
}
$packageFolder = "$env:temp/Microsoft.NuGet.CredentialProvider/"
if ($fileName.EndsWith('.zip')) {
Write-host "Extracting $fileName..."
$zipFilePath = "$env:temp/$fileName"
if (Test-Path $zipFilePath) { Expand-Archive -Force -Path $zipFilePath -DestinationPath $packageFolder }
Copy-Item -Path $packageFolder\* -Destination "$env:UserProfile/.nuget/" -Recurse -Force
Write-Host "Extracted to: $env:UserProfile\.nuget\plugins\" -ForegroundColor Green
}
shell: powershell
- name: publish
working-directory: ./Ed-Fi-ODS/
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' }}
run: |
.\build.githubactions.ps1 publish -InformationalVersion ${{ env.INFORMATIONAL_VERSION }} -BuildCounter ${{ github.run_number }} -BuildIncrementer ${{env.BUILD_INCREMENTER}} -NuGetApiKey ${{ env.AZURE_ARTIFACT_NUGET_KEY }} -EdFiNuGetFeed ${{env.AZURE_ARTIFACT_URL}} -PackageName "EdFi.Suite3.Ods.Minimal.Template.TPDM.Core.${{ matrix.ExtensionVersion }}.Standard.${{ matrix.StandardVersion }}"
shell: powershell
- name: Upload EdFi.Ods.Minimal.Template.TPDM.Core Artifacts
if: success() || failure()
uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
with:
name: EdFi.Ods.Minimal.Template.TPDM.Core.Artifacts
path: |
${{ github.workspace }}/Ed-Fi-ODS/NugetPackages/EdFi.Suite3.Ods.Minimal.Template.TPDM.Core*.nupkg
- name: Move Log Files
run: |
$bulkLoadClientSourcePath = "${{ github.workspace }}/Ed-Fi-ODS/Utilities/DataLoading/EdFi.BulkLoadClient.Console/bin/${{ env.CONFIGURATION }}/net6.0/logfile.txt"
$testHarnessSourcePath = "${{ github.workspace }}/Ed-Fi-ODS-Implementation/Application/EdFi.Ods.Api.IntegrationTestHarness/bin/${{ env.CONFIGURATION }}/net6.0/TestHarnessLog.log"
$testHarnessRequestResponseDetailsSourcePath = "${{ github.workspace }}/Ed-Fi-ODS-Implementation/Application/EdFi.Ods.Api.IntegrationTestHarness/bin/${{ env.CONFIGURATION }}/net6.0/TestHarnessRequestResponseDetailsLog.log"
$destinationPath = "${{ github.workspace }}/CreateDatabaseTemplateLogs/"
# Create the destination folder if it doesn't exist
if (!(Test-Path -Path $destinationPath)) {
New-Item -ItemType Directory -Path $destinationPath -Force
}
# Move the files
Move-Item -Path $bulkLoadClientSourcePath -Destination $destinationPath -Force
Move-Item -Path $testHarnessSourcePath -Destination $destinationPath -Force
Move-Item -Path $testHarnessRequestResponseDetailsSourcePath -Destination $destinationPath -Force
shell: pwsh
- name: Upload Create Database Template Logs
if: success() || failure()
uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
with:
name: Create Database Template Logs
path: |
${{ github.workspace }}/CreateDatabaseTemplateLogs/*.*