Skip to content

Commit

Permalink
[ODS-6195] Pkg EdFi.ProjectTemplates.Installer Added (#1017)
Browse files Browse the repository at this point in the history
  • Loading branch information
semalaiappan authored Apr 10, 2024
1 parent 86e53fe commit b5c64bc
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 24 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/Pkg EdFi.Database.Admin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,10 @@ jobs:
nuget pack $AdminPostgreSQLNuspecFilePath -OutputDirectory $packageOutput -Version $version -Properties "configuration=release" -Properties "authors=Ed-Fi Alliance" -Properties "owners=Ed-Fi Alliance" -Properties "copyright=Copyright © $(date +'%Y') Ed-Fi Alliance, LLC and Contributors" -NoPackageAnalysis -NoDefaultExcludes
- name: Install-credential-handler
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
run: iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"
shell: powershell
working-directory: ./Ed-Fi-ODS/
run: |
.\build.githubactions.ps1 InstallCredentialHandler
shell: powershell
- name: Publish Nuget package
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
working-directory: ./Ed-Fi-ODS/
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/Pkg EdFi.Database.Security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,10 @@ jobs:
nuget pack $SecurityPostgreSQLNuspecFilePath -OutputDirectory $packageOutput -Version $version -Properties "configuration=release" -Properties "authors=Ed-Fi Alliance" -Properties "owners=Ed-Fi Alliance" -Properties "copyright=Copyright © $(date +'%Y') Ed-Fi Alliance, LLC and Contributors" -NoPackageAnalysis -NoDefaultExcludes
- name: Install-credential-handler
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
run: iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"
shell: powershell
working-directory: ./Ed-Fi-ODS/
run: |
.\build.githubactions.ps1 InstallCredentialHandler
shell: powershell
- name: Publish Nuget package
working-directory: ./Ed-Fi-ODS/
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
Expand Down
128 changes: 128 additions & 0 deletions .github/workflows/Pkg EdFi.ProjectTemplates.Installer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# 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.ProjectTemplates.Installer

on:
pull_request:
branches: [main, 'b-v*-patch*','feature-*']
push:
branches: [main, 'b-v*-patch*','feature-*']
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
INFORMATIONAL_VERSION: "7.2"
BUILD_INCREMENTER: "-41"
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:
build:

runs-on: windows-latest
steps:
- 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: 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: Setup MSBuild for .NET Framework 4.8
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce #v2.0.0
- name: Cache Nuget packages
uses: actions/cache@58c146cc91c5b9e778e71775dfe9bf1442ad9a12 #v3.2.3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj*', '**/configuration.packages.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: update BUILD_INCREMENTER
run: |
$newRevision = ([int]${{ github.run_number }}) + ([int]${{env.BUILD_INCREMENTER}})
if ($newRevision -lt 0) {
$newRevision = 1
echo "BUILD_INCREMENTER=$newRevision">> $env:GITHUB_ENV
}
shell: powershell
- name: Update version number in source.extension.vsixmanifest file
working-directory: ./Ed-Fi-ODS/
run: |
$BuildCounter = ${{ github.run_number }}
$BuildIncrementer = ${{env.BUILD_INCREMENTER}}
$InformationalVersion = ${{ env.INFORMATIONAL_VERSION}}
$newRevision = ([int]$BuildCounter) + ([int]$BuildIncrementer)
$version = "$InformationalVersion.$newRevision"
Write-Host "ODS/API Version : $version"
$vsixManifestPath = "$env:GITHUB_WORKSPACE/Ed-Fi-ODS/Utilities/VisualStudioProjectTemplates/EdFi.ProjectTemplates.Installer/source.extension.vsixmanifest"
$vsixManifestContent = Get-Content $vsixManifestPath -Raw
# Use regex to find the first <Identity> tag and extract the Version attribute value
$versionRegex = '<Identity[^>]*\sVersion="([^"]+)"'
$match = [regex]::Match($vsixManifestContent, $versionRegex)
if ($match.Success) {
$currentVersion = $match.Groups[1].Value
Write-Host "Current Version: $currentVersion"
# Update the Version attribute with a new value
$newVersion = $version
$updatedContent = $vsixManifestContent -replace "$versionRegex", ('<Identity Id="EdFi.ProjectTemplates" Version="{0}"' -f $newVersion)
# Write the updated content back to the file
$updatedContent | Set-Content $vsixManifestPath
Write-Host "Version updated to: $newVersion"
} else {
Write-Host "Version attribute not found in <Identity> tag."
}
shell: powershell
- name: Restore NuGet packages
working-directory: ./Ed-Fi-ODS/
run: msbuild "$env:GITHUB_WORKSPACE/Ed-Fi-ODS/Utilities/VisualStudioProjectTemplates/EdFi.ProjectTemplates.sln" /t:Restore
shell: powershell
- name: build
run: msbuild "$env:GITHUB_WORKSPACE/Ed-Fi-ODS/Utilities/VisualStudioProjectTemplates/EdFi.ProjectTemplates.sln" /p:Configuration=${{ env.CONFIGURATION }}
shell: powershell
- name: pack using nuget nuspec file
working-directory: ./Ed-Fi-ODS/
shell: powershell
run: |
.\build.githubactions.ps1 pack -Configuration ${{ env.CONFIGURATION }} -InformationalVersion ${{ env.INFORMATIONAL_VERSION}} -BuildCounter ${{ github.run_number }} -BuildIncrementer ${{env.BUILD_INCREMENTER}} -PackageName "EdFi.Suite3.ProjectTemplates.Installer" -NuspecFilePath "$env:GITHUB_WORKSPACE/Ed-Fi-ODS/Utilities/VisualStudioProjectTemplates/EdFi.ProjectTemplates.Installer/EdFi.ProjectTemplates.Installer.nuspec"
- name: Install-credential-handler
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
working-directory: ./Ed-Fi-ODS/
run: |
.\build.githubactions.ps1 InstallCredentialHandler
shell: powershell
- name: publish
if: ${{ env.AZURE_ARTIFACT_NUGET_KEY != '' && github.event_name == 'workflow_dispatch' }}
working-directory: ./Ed-Fi-ODS/
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.ProjectTemplates.Installer"
shell: powershell
- name: Upload EdFi.Suite3.ProjectTemplates.Installer Artifacts
if: success()
uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
with:
name: NugetPackages.Artifacts
path: ${{ github.workspace }}/Ed-Fi-ODS/NugetPackages/*.nupkg
2 changes: 1 addition & 1 deletion Application/EdFi.Ods.Api/Startup/OdsStartupBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ private string GetPluginFolder(Plugin pluginSettings)
}

// in a developer environment the plugin folder is relative to the WebApi project
// "Ed-Fi-ODS-Implementation/Application/EdFi.Ods.WebApi/bin/Debug/net6.0/../../../" => "Ed-Fi-ODS-Implementation/Application/EdFi.Ods.WebApi"
// "Ed-Fi-ODS-Implementation/Application/EdFi.Ods.WebApi/bin/Debug/net8.0/../../../" => "Ed-Fi-ODS-Implementation/Application/EdFi.Ods.WebApi"
var projectDirectory = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory!, "../../../"));
var relativeToProject = Path.GetFullPath(Path.Combine(projectDirectory, pluginSettings.Folder));

Expand Down
5 changes: 1 addition & 4 deletions Utilities/CodeGeneration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,9 @@ Ed-Fi ODS software developers and implementers.

## Prerequisites
To build the application the following tools are needed:
* .NET 6 SDK (https://dotnet.microsoft.com/download)
* .NET 8 SDK (https://dotnet.microsoft.com/download)
* Visual Studio 2022 (https://visualstudio.microsoft.com/downloads/)

## Testing the generated artifacts against the main solution
* Run `initdev` on the main solution first
* run `Rebuild-Solution` or `initdev -NoCodegen`

## Known issues
* must use Visual Studio 2022+ net6 is not compatible with Visual Studio 2019
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.CoreUtility">
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.CoreUtility">
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@
</Content>
<None Include="source.extension.vsixmanifest">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>extension.vsixmanifest</TargetPath>
<IncludeInVSIX>true</IncludeInVSIX>
</None>
</ItemGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>EdFi.Suite3.ProjectTemplates.Installer</id>
<version>0.0.0</version>
<authors>Ed-Fi Alliance</authors>
<owners>Ed-Fi Alliance</owners>
<copyright>$copyright$</copyright>
<projectUrl>https://github.com/Ed-Fi-Alliance-OSS/Ed-Fi-ODS</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>EdFi.Suite3.ProjectTemplates.Installer</description>
<releaseNotes></releaseNotes>
<license type="file">LICENSE.txt</license>
</metadata>
<files>
<file src="bin\$configuration$\LICENSE.txt" />
<file src="bin\$configuration$\EdFi.ProjectTemplates.Installer.vsix" target="." />
</files>
</package>
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011"
xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="EdFi.ProjectTemplates" Version="1.7.3" Language="en-US" Publisher="Ed-Fi Alliance" />
<Identity Id="EdFi.ProjectTemplates" Version="7.2.1" Language="en-US" Publisher="Ed-Fi Alliance" />
<DisplayName>Ed-Fi Alliance Project Templates</DisplayName>
<Description xml:space="preserve">Ed-Fi Alliance API C# project templates for creating composites, profiles, and/or extensions to work with ODS/API v7.1</Description>
<Description xml:space="preserve">Ed-Fi Alliance API C# project templates for creating composites, profiles, and/or extensions to work with ODS/API v7.2</Description>
<MoreInfo>https://www.ed-fi.org</MoreInfo>
<License>LICENSE.txt</License>
<ReleaseNotes>Release Notes.rtf</ReleaseNotes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.CoreUtility">
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
Expand Down
7 changes: 4 additions & 3 deletions build.githubactions.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -234,22 +234,23 @@ function Get-IsWindows {
function InstallCredentialHandler {
if (Get-IsWindows -and -not Get-InstalledModule | Where-Object -Property Name -eq "7Zip4Powershell") {
Install-Module -Force -Scope CurrentUser -Name 7Zip4Powershell
Write-Host "Installed 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'
$zipFilePath = Join-Path ([IO.Path]::GetTempPath()) $fileName
Write-host "Downloading file from $sourceUrl..."
Write-Host "Downloading file from $sourceUrl..."
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($sourceUrl, $zipFilePath)
Write-host "Download complete."
Write-Host "Download complete."
if (-not (Test-Path $zipFilePath)) {
Write-Warning "Microsoft.NuGet.CredentialProvider file '$fileName' not found."
exit 0
}
$packageFolder = Join-Path ([IO.Path]::GetTempPath()) 'Microsoft.NuGet.CredentialProvider/'
if ($fileName.EndsWith('.zip')) {
Write-host "Extracting $fileName..."
Write-Host "Extracting $fileName..."

if (Test-Path $zipFilePath) { Expand-Archive -Force -Path $zipFilePath -DestinationPath $packageFolder }
Copy-Item -Path $packageFolder\* -Destination "~/.nuget/" -Recurse -Force
Expand Down

0 comments on commit b5c64bc

Please sign in to comment.