Skip to content

Commit 7b5eb38

Browse files
committed
merge in from develop
2 parents 921e423 + 2564eee commit 7b5eb38

330 files changed

Lines changed: 13323 additions & 8821 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
**/node_modules
2020
**/npm-debug.log
2121
**/obj
22+
**/esBuild.lock
2223
bin
2324
obj
2425
**/wwwroot/js/*.js
26+
**/wwwroot/js/*.js.map
2527
**/secrets.dev.yaml
2628
**/values.dev.yaml
29+
**/.esbuild-record.json
2730
test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/wwwroot/appsettings.json
2831
LICENSE
2932
README.md
File renamed without changes.

.github/workflows/dev-pr-build.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,16 @@ jobs:
5959
HTTP_PORT: 8082
6060
HTTPS_PORT: 9445
6161
run: |
62-
dotnet test --project ./test/dymaptic.GeoBlazor.Core.Test.Automation/dymaptic.GeoBlazor.Core.Test.Automation.csproj -c Release --filter CORE_
63-
62+
dotnet ./build-tools/win-x64/GBTest.dll -c Release --cover --container --filter Core
63+
64+
- name: Upload test log
65+
uses: actions/upload-artifact@v4
66+
if: always()
67+
with:
68+
name: test-run-log
69+
retention-days: 4
70+
path: ./test/dymaptic.GeoBlazor.Core.Test.Automation/test-run.log
71+
6472
build:
6573
runs-on: ubuntu-latest
6674
needs: [ actor-check ]
@@ -99,7 +107,7 @@ jobs:
99107
- name: Build GeoBlazor
100108
shell: pwsh
101109
run: |
102-
dotnet ./build-tools/GeoBlazorBuild.dll -xml -pkg -docs -c "Release"
110+
dotnet ./build-tools/linux-x64/GeoBlazorBuild.dll -xml -pkg -docs -c "Release"
103111
104112
# Copies the nuget package to the artifacts directory
105113
- name: Upload nuget artifact

.github/workflows/main-release-build.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,21 @@ jobs:
4444
HTTP_PORT: 8082
4545
HTTPS_PORT: 9445
4646
run: |
47-
dotnet test --project ./test/dymaptic.GeoBlazor.Core.Test.Automation/dymaptic.GeoBlazor.Core.Test.Automation.csproj -c Release --filter CORE_
48-
47+
dotnet ./build-tools/win-x64/GBTest.dll -c Release --container --filter Core
48+
49+
- name: Upload test log
50+
uses: actions/upload-artifact@v4
51+
if: always()
52+
with:
53+
name: test-run-log
54+
retention-days: 4
55+
path: ./test/dymaptic.GeoBlazor.Core.Test.Automation/test-run.log
56+
4957
# This runs the main GeoBlazor build script
5058
- name: Build GeoBlazor
5159
shell: pwsh
5260
run: |
53-
dotnet ./build-tools/GeoBlazorBuild.dll -xml -pkg -pub -c "Release"
61+
dotnet ./build-tools/win-x64/GeoBlazorBuild.dll -xml -pkg -pub -c "Release"
5462
5563
# xmllint is a dependency of the copy steps below
5664
- name: Install xmllint

.github/workflows/tests.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,12 @@ jobs:
4343
HTTP_PORT: 8082
4444
HTTPS_PORT: 9445
4545
run: |
46-
dotnet test --project ./test/dymaptic.GeoBlazor.Core.Test.Automation/dymaptic.GeoBlazor.Core.Test.Automation.csproj -c Release --filter CORE_
46+
dotnet ./build-tools/win-x64/GBTest.dll -c Release --cover --container --filter Core
47+
48+
- name: Upload test log
49+
uses: actions/upload-artifact@v4
50+
if: always()
51+
with:
52+
name: test-run-log
53+
retention-days: 4
54+
path: ./test/dymaptic.GeoBlazor.Core.Test.Automation/test-run.log

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,19 @@
1010
*.userosscache
1111
*.sln.docstates
1212
.DS_Store
13-
esBuild.*.lock
13+
**/esBuild.lock
1414
esBuild.log
15+
esBuild.hash
16+
*.binlog
1517
.esbuild-record.json
18+
.csbuild-record.json
1619
CustomerTests.razor
1720
.claude/
1821
.env
1922
test/dymaptic.GeoBlazor.Core.Test.Automation/test.txt
2023
test/dymaptic.GeoBlazor.Core.Test.Automation/test-run.log
2124
test/dymaptic.GeoBlazor.Core.Test.Automation/coverage*
25+
test/dymaptic.GeoBlazor.Core.Test.Automation/history*
2226
test/dymaptic.GeoBlazor.Core.Test.Automation/unit-coverage*
2327
test/dymaptic.GeoBlazor.Core.Test.Automation/sgen-coverage*
2428
test/dymaptic.GeoBlazor.Core.Test.Automation/Summary.txt

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ GeoBlazor is a Blazor component library that brings ArcGIS Maps SDK for JavaScri
3838
### Build
3939
```bash
4040
# Clean build of the Core project
41-
dotnet ./build-tools/GeoBlazorBuild.dll
41+
dotnet ./build-tools/win-x64/GeoBlazorBuild.dll
4242

4343
-- _`GeoBlazorBuild` includes lots of options, use -h to see options_
4444

@@ -77,7 +77,7 @@ pwsh bumpVersion.ps1 -test 1.2.3 # Test version bump
7777
### Development
7878
```bash
7979
# Clear ESBuild locks if build is stuck
80-
dotnet ./build-tools/ESBuildClearLocks.dll
80+
dotnet ./build-tools/win-x64/ESBuildClearLocks.dll
8181

8282
# Watch TypeScript changes (from src/dymaptic.GeoBlazor.Core/)
8383
npm run watchBuild

Directory.Build.props

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,76 @@
55
<PropertyGroup>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
8-
<CoreVersion>5.0.0.38</CoreVersion>
98
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
9+
<CoreVersion>5.0.0.75</CoreVersion>
1010
<Configurations>Debug;Release;SourceGen Highlighting</Configurations>
1111
<Platforms>AnyCPU</Platforms>
12-
<CoreProjectPath>$(MSBuildThisFileDirectory)src\dymaptic.GeoBlazor.Core</CoreProjectPath>
12+
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
13+
<CoreProjectPath>$(MSBuildThisFileDirectory)src/dymaptic.GeoBlazor.Core</CoreProjectPath>
1314
<!-- https://github.com/dotnet/aspnetcore/issues/64381 -->
1415
<StaticWebAssetEndpointExclusionPattern>
1516
$(StaticWebAssetEndpointExclusionPattern);js/**
1617
</StaticWebAssetEndpointExclusionPattern>
1718
</PropertyGroup>
19+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsWindows())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'X64'">
20+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/win-x64</GBBuildToolsPath>
21+
</PropertyGroup>
22+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsWindows())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'Arm64'">
23+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/win-arm64</GBBuildToolsPath>
24+
</PropertyGroup>
25+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsMacOS())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'X64'">
26+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/osx-x64</GBBuildToolsPath>
27+
</PropertyGroup>
28+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsMacOS())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'Arm64'">
29+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/osx-arm64</GBBuildToolsPath>
30+
</PropertyGroup>
31+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsLinux())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'X64'">
32+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/linux-x64</GBBuildToolsPath>
33+
</PropertyGroup>
34+
<PropertyGroup Condition="'$([System.OperatingSystem]::IsLinux())' == 'true' and '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())' == 'Arm64'">
35+
<GBBuildToolsPath>$(MSBuildThisFileDirectory)build-tools/linux-arm64</GBBuildToolsPath>
36+
</PropertyGroup>
1837
<ItemGroup>
1938
<Watch Remove="$(CoreProjectPath)\wwwroot\**\*;$(CoreProjectPath)\Scripts\**\*;**\esbuild*;$(CoreProjectPath)\node_modules\**\*" />
2039
</ItemGroup>
2140
<ItemGroup>
41+
<CompilerVisibleProperty Include="Configuration" Value="$(GBBuildToolsPath)" />
2242
<CompilerVisibleProperty Include="Configuration" Value="$(Configuration)" />
23-
<CompilerVisibleProperty Include="PipelineBuild" Value="$(PipelineBuild)" />
24-
<CompilerVisibleProperty Include="LogSourceGenOutput" Value="$(LogSourceGenOutput)" />
25-
<CompilerVisibleProperty Include="CoreProjectPath" Value="$(CoreProjectPath)" />
2643
<CompilerVisibleProperty Include="DesignTimeBuild" Value="$(DesignTimeBuild)" />
44+
<CompilerVisibleProperty Include="ShowScriptDialogs" Value="$(ShowScriptDialogs)" />
45+
<CompilerVisibleProperty Include="CoreProjectPath" Value="$(CoreProjectPath)" />
46+
<CompilerVisibleProperty Include="CoreProjectPath" Value="$(ProProjectPath)" />
2747
</ItemGroup>
48+
<!-- ESBuild Project Trigger: Must happen before RESTORE -->
49+
<PropertyGroup>
50+
<BuildDependsOn>TriggerESBuild;$(BuildDependsOn)</BuildDependsOn>
51+
<ESBuildLockFilePath>$(MSBuildThisFileDirectory)src/dymaptic.GeoBlazor.Core/esBuild.lock</ESBuildLockFilePath>
52+
<ESBuildLockFileTimeStamp Condition="EXISTS($(ESBuildLockFilePath))">$([System.IO.File]::GetLastWriteTime(`$(ESBuildLockFilePath)`).Ticks)</ESBuildLockFileTimeStamp>
53+
<ESBuildLockFileTimeStamp Condition="'$(ESBuildLockFileTimeStamp)' == ''">0</ESBuildLockFileTimeStamp>
54+
<StaleFileThresholdTimeStamp>$([System.DateTime]::Now.AddMinutes(-5).Ticks)</StaleFileThresholdTimeStamp>
55+
<ESBuildRemoveProps>
56+
BuildProjectReferences;
57+
Configuration;
58+
EnableDefaultCompileItems;
59+
EnableDefaultEmbeddedResourceItems;
60+
EnableDefaultNoneItems;
61+
ExcludeRestorePackageImports;
62+
GBBuildToolsPath;
63+
MSBuildIsRestoring;
64+
MSBuildRestoreSessionId;
65+
NugetInteractive;
66+
Platform;
67+
ProESBuildRequired;
68+
ShowScriptDialogs;
69+
TargetFramework;
70+
TargetFrameworks;
71+
TriggerESBuild;
72+
TriggerProESBuild
73+
</ESBuildRemoveProps>
74+
</PropertyGroup>
75+
<Target Name="TriggerESBuild" BeforeTargets="Restore;BeforeBuild" Condition="'$(MSBuildProjectName)' != 'dymaptic.GeoBlazor.Core.ESBuild' AND (!EXISTS($(ESBuildLockFilePath)) OR $(ESBuildLockFileTimeStamp) &lt; $(StaleFileThresholdTimeStamp))">
76+
<WriteLinesToFile File="$(ESBuildLockFilePath)" Lines="$([System.DateTime]::Now.ToString(`o`))" Overwrite="false" ContinueOnError="true" />
77+
<Exec Command="dotnet restore $(MSBuildThisFileDirectory)src/dymaptic.GeoBlazor.Core.ESBuild/dymaptic.GeoBlazor.Core.ESBuild.csproj" />
78+
<MSBuild Projects="$(MSBuildThisFileDirectory)src/dymaptic.GeoBlazor.Core.ESBuild/dymaptic.GeoBlazor.Core.ESBuild.csproj" Properties="GBBuildToolsPath=$(GBBuildToolsPath);ShowScriptDialogs=$(ShowScriptDialogs)" RemoveProperties="$(ESBuildRemoveProps)" />
79+
</Target>
2880
</Project>

Directory.Build.targets

Lines changed: 0 additions & 6 deletions
This file was deleted.

Dockerfile

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1+
# syntax=docker/dockerfile:1.7.0
12
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
23
ARG ARCGIS_API_KEY
34
ARG GEOBLAZOR_LICENSE_KEY
45
ARG WFS_SERVERS
56
ARG HTTP_PORT
67
ARG HTTPS_PORT
7-
ENV ARCGIS_API_KEY=${ARCGIS_API_KEY}
8-
ENV GEOBLAZOR_LICENSE_KEY=${GEOBLAZOR_LICENSE_KEY}
9-
ENV WFS_SERVERS=${WFS_SERVERS}
108

9+
# Install NodeJS and NPM
1110
RUN apt-get update \
1211
&& apt-get install -y ca-certificates curl gnupg \
1312
&& mkdir -p /etc/apt/keyrings \
@@ -16,51 +15,63 @@ RUN apt-get update \
1615
&& apt-get update \
1716
&& apt-get install -y nodejs
1817

18+
# Install NPM Packages
1919
WORKDIR /work
2020
WORKDIR /work/src/dymaptic.GeoBlazor.Core
2121
COPY ./src/dymaptic.GeoBlazor.Core/package.json ./package.json
22-
RUN npm install
22+
RUN --mount=type=cache,target=/root/.npm npm install
2323

2424
WORKDIR /work
25-
COPY ./src/ ./src/
25+
26+
# Update GeoBlazor Build Scripts
27+
COPY ./build-tools/build-scripts ./build-tools/build-scripts
28+
COPY ./build-tools/utilities ./build-tools/utilities
29+
RUN --mount=type=cache,target=/root/.nuget/packages \
30+
dotnet run ./build-tools/build-scripts/ScriptBuilder.cs
31+
32+
# Copy Source Files
2633
COPY ./*.ps1 ./
2734
COPY ./Directory.Build.* ./
2835
COPY ./.gitignore ./.gitignore
2936
COPY ./nuget.config ./nuget.config
30-
COPY ./build-tools ./build-tools
31-
COPY ./build-scripts/ScriptBuilder.cs ./build-scripts/ScriptBuilder.cs
32-
33-
RUN dotnet ./build-tools/GeoBlazorBuild.dll -v current
34-
35-
COPY ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared/dymaptic.GeoBlazor.Core.Test.Blazor.Shared.csproj ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared.csproj
36-
COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj
37-
COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/dymaptic.GeoBlazor.Core.Test.WebApp.Client.csproj ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/dymaptic.GeoBlazor.Core.Test.WebApp.Client.csproj
38-
39-
# Use UsePackageReference=false to build from source (enables code coverage with PDB symbols)
40-
RUN dotnet restore ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj /p:UsePackageReference=false
41-
37+
COPY ./src/ ./src/
4238
COPY ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared
4339
COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp ./test/dymaptic.GeoBlazor.Core.Test.WebApp
4440

45-
RUN dotnet ./build-tools/BuildAppSettings.dll \
46-
-k "$ARCGIS_API_KEY" \
47-
-l "$GEOBLAZOR_LICENSE_KEY" \
41+
# Create appsettings files
42+
RUN dotnet ./build-tools/linux-x64/BuildAppSettings.dll \
43+
-k "${ARCGIS_API_KEY}" \
44+
-l "${GEOBLAZOR_LICENSE_KEY}" \
4845
-o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/wwwroot/appsettings.json" \
4946
-o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/wwwroot/appsettings.Production.json" \
5047
-o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/appsettings.json" \
5148
-o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/appsettings.Production.json" \
52-
-w "$WFS_SERVERS"
49+
-w "${WFS_SERVERS}"
5350

5451
# Build from source with debug symbols for code coverage
5552
# UsePackageReference=false builds GeoBlazor from source instead of NuGet
5653
# DebugSymbols=true and DebugType=portable ensure PDB files are generated
57-
RUN dotnet publish ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
54+
RUN --mount=type=cache,target=/root/.nuget/packages \
55+
dotnet build ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
56+
-c Release \
57+
/p:UsePackageReference=false \
58+
/p:DebugSymbols=true \
59+
/p:DebugType=portable \
60+
/p:GeneratePackage=false \
61+
/p:GenerateDocs=false \
62+
/p:GenerateXmlComments=false \
63+
/p:ShowScriptDialogs=false
64+
65+
RUN --mount=type=cache,target=/root/.nuget/packages \
66+
dotnet publish ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
5867
-c Release \
5968
/p:UsePackageReference=false \
60-
/p:PipelineBuild=true \
6169
/p:DebugSymbols=true \
6270
/p:DebugType=portable \
63-
/p:GeneratePack=false \
71+
/p:GeneratePackage=false \
72+
/p:GenerateDocs=false \
73+
/p:GenerateXmlComments=false \
74+
/p:ShowScriptDialogs=false \
6475
-o /app/publish
6576

6677
FROM mcr.microsoft.com/dotnet/aspnet:10.0
@@ -109,6 +120,7 @@ ENV ASPNETCORE_Kestrel__Certificates__Default__Password=password
109120
# Coverage configuration (can be overridden via environment)
110121
ENV COVERAGE_ENABLED=false
111122
ENV COVERAGE_FORMAT=xml
123+
ENV SESSION_ID=WEB_APP
112124

113125
# Copy entrypoint script
114126
COPY ./test/dymaptic.GeoBlazor.Core.Test.Automation/docker-entrypoint.sh /docker-entrypoint.sh
@@ -117,4 +129,4 @@ RUN chmod +x /docker-entrypoint.sh
117129
USER info
118130
EXPOSE ${HTTP_PORT} ${HTTPS_PORT}
119131
ENTRYPOINT ["/docker-entrypoint.sh"]
120-
CMD ["dotnet", "dymaptic.GeoBlazor.Core.Test.WebApp.dll"]
132+
CMD ["dotnet", "dymaptic.GeoBlazor.Core.Test.WebApp.dll"]

0 commit comments

Comments
 (0)