Skip to content

Commit 93c1a5e

Browse files
authored
Merge pull request #87 from fboucher/v-next
Refactors project for versioning
2 parents 32a31cb + eeb43d1 commit 93c1a5e

File tree

13 files changed

+165
-84
lines changed

13 files changed

+165
-84
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Build and Push Alpha Docker Images
2+
3+
on:
4+
push:
5+
branches: [ v-next ]
6+
workflow_dispatch:
7+
8+
env:
9+
REGISTRY: docker.io
10+
API_IMAGE_NAME: fboucher/notebookmark-api
11+
BLAZOR_IMAGE_NAME: fboucher/notebookmark-blazor
12+
13+
jobs:
14+
build-and-push-alpha:
15+
runs-on: ubuntu-latest
16+
permissions:
17+
contents: read
18+
packages: write
19+
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v4
23+
24+
- name: Read version from Directory.Build.props
25+
id: get-version
26+
run: |
27+
VERSION=$(grep -oPm1 "(?<=<Version>)[^<]+" Directory.Build.props)
28+
echo "version=$VERSION" >> $GITHUB_OUTPUT
29+
echo "Found version: $VERSION"
30+
31+
- name: Log in to Docker Hub
32+
uses: docker/login-action@v3
33+
with:
34+
registry: ${{ env.REGISTRY }}
35+
username: ${{ secrets.DOCKER_USERNAME }}
36+
password: ${{ secrets.DOCKER_PASSWORD }}
37+
38+
- name: Build and push API Docker image
39+
uses: docker/build-push-action@v5
40+
with:
41+
context: .
42+
file: ./src/NoteBookmark.Api/Dockerfile
43+
push: true
44+
tags: |
45+
${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }}:v${{ steps.get-version.outputs.version }}-alpha.${{ github.run_number }}
46+
${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }}:alpha-latest
47+
48+
- name: Build and push Blazor App Docker image
49+
uses: docker/build-push-action@v5
50+
with:
51+
context: .
52+
file: ./src/NoteBookmark.BlazorApp/Dockerfile
53+
push: true
54+
tags: |
55+
${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }}:v${{ steps.get-version.outputs.version }}-alpha.${{ github.run_number }}
56+
${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }}:alpha-latest

.github/workflows/docker-publish.yml

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ name: Build and Push Docker Images
22

33
on:
44
push:
5-
branches: [ main ]
6-
pull_request:
7-
branches: [ main ]
5+
tags:
6+
- 'v*'
87
workflow_dispatch:
98

109
env:
@@ -24,7 +23,6 @@ jobs:
2423
uses: actions/checkout@v4
2524

2625
- name: Log in to Docker Hub
27-
if: github.event_name != 'pull_request'
2826
uses: docker/login-action@v3
2927
with:
3028
registry: ${{ env.REGISTRY }}
@@ -37,28 +35,26 @@ jobs:
3735
with:
3836
images: ${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }}
3937
tags: |
40-
type=ref,event=branch
41-
type=ref,event=pr
42-
type=sha
43-
type=raw,value=latest,enable={{is_default_branch}}
38+
type=semver,pattern={{version}}
39+
type=semver,pattern={{major}}.{{minor}}
40+
type=raw,value=latest
4441
4542
- name: Extract metadata for Blazor App
4643
id: meta-blazor
4744
uses: docker/metadata-action@v5
4845
with:
4946
images: ${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }}
5047
tags: |
51-
type=ref,event=branch
52-
type=ref,event=pr
53-
type=sha
54-
type=raw,value=latest,enable={{is_default_branch}}
48+
type=semver,pattern={{version}}
49+
type=semver,pattern={{major}}.{{minor}}
50+
type=raw,value=latest
5551
5652
- name: Build and push API Docker image
5753
uses: docker/build-push-action@v5
5854
with:
5955
context: .
6056
file: ./src/NoteBookmark.Api/Dockerfile
61-
push: ${{ github.event_name != 'pull_request' }}
57+
push: true
6258
tags: ${{ steps.meta-api.outputs.tags }}
6359
labels: ${{ steps.meta-api.outputs.labels }}
6460

@@ -67,6 +63,6 @@ jobs:
6763
with:
6864
context: .
6965
file: ./src/NoteBookmark.BlazorApp/Dockerfile
70-
push: ${{ github.event_name != 'pull_request' }}
66+
push: true
7167
tags: ${{ steps.meta-blazor.outputs.tags }}
7268
labels: ${{ steps.meta-blazor.outputs.labels }}

Directory.Build.props

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Project>
2+
<PropertyGroup>
3+
<Version>1.1.2</Version>
4+
<TargetFramework>net9.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
8+
</PropertyGroup>
9+
</Project>

Directory.Packages.props

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<Project>
2+
<ItemGroup>
3+
<!-- Aspire packages -->
4+
<PackageVersion Include="Aspire.Hosting.AppHost" Version="13.0.2" />
5+
<PackageVersion Include="Aspire.Hosting.Azure.Storage" Version="13.0.2" />
6+
<PackageVersion Include="Aspire.Hosting.Docker" Version="13.0.2-preview.1.25603.5" />
7+
<PackageVersion Include="Aspire.Azure.Data.Tables" Version="13.0.2" />
8+
<PackageVersion Include="Aspire.Azure.Storage.Blobs" Version="13.0.2" />
9+
10+
<!-- Azure packages -->
11+
<PackageVersion Include="Azure.Data.Tables" Version="12.11.0" />
12+
<PackageVersion Include="Azure.Storage.Blobs" Version="12.26.0" />
13+
14+
<!-- Microsoft packages -->
15+
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.10" />
16+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.10" />
17+
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.0-rc.2.25502.107" />
18+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.10" />
19+
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.10.0" />
20+
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.10" />
21+
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.5.2" />
22+
<PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.13.0" />
23+
<PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components.Icons" Version="4.13.0" />
24+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
25+
26+
<!-- OpenTelemetry packages -->
27+
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.13.1" />
28+
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.13.1" />
29+
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.13.0" />
30+
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.13.0" />
31+
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.13.0" />
32+
33+
<!-- Other packages -->
34+
<PackageVersion Include="HtmlAgilityPack" Version="1.12.4" />
35+
<PackageVersion Include="Markdig" Version="0.43.0" />
36+
<PackageVersion Include="Reka.SDK" Version="0.1.0" />
37+
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.6" />
38+
<PackageVersion Include="System.Text.Json" Version="9.0.10" />
39+
40+
<!-- Test packages -->
41+
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
42+
<PackageVersion Include="FluentAssertions" Version="8.8.0" />
43+
<PackageVersion Include="Moq" Version="4.20.72" />
44+
<PackageVersion Include="Testcontainers.Azurite" Version="4.8.1" />
45+
<PackageVersion Include="xunit" Version="2.9.3" />
46+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
47+
</ItemGroup>
48+
</Project>

src/NoteBookmark.AIServices/NoteBookmark.AIServices.csproj

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
5-
<ImplicitUsings>enable</ImplicitUsings>
6-
<Nullable>enable</Nullable>
7-
</PropertyGroup>
8-
93
<ItemGroup>
10-
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.0-rc.2.25502.107" />
11-
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
12-
<PackageReference Include="Reka.SDK" Version="0.1.0" />
4+
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" />
5+
<PackageReference Include="Microsoft.Extensions.Logging" />
6+
<PackageReference Include="Reka.SDK" />
137
</ItemGroup>
148

159
<ItemGroup>

src/NoteBookmark.Api.Tests/NoteBookmark.Api.Tests.csproj

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
5-
<Nullable>enable</Nullable>
6-
<ImplicitUsings>enable</ImplicitUsings>
74
<IsPackable>false</IsPackable>
85
<IsTestProject>true</IsTestProject>
96
</PropertyGroup>
107

118
<ItemGroup>
12-
<PackageReference Include="coverlet.collector" Version="6.0.4">
9+
<PackageReference Include="coverlet.collector">
1310
<PrivateAssets>all</PrivateAssets>
1411
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1512
</PackageReference>
16-
<PackageReference Include="FluentAssertions" Version="8.8.0" />
17-
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.10" />
18-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.10" />
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
20-
<PackageReference Include="Moq" Version="4.20.72" />
21-
<PackageReference Include="xunit" Version="2.9.3" />
22-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
13+
<PackageReference Include="FluentAssertions" />
14+
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" />
15+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
16+
<PackageReference Include="Microsoft.NET.Test.Sdk" />
17+
<PackageReference Include="Moq" />
18+
<PackageReference Include="xunit" />
19+
<PackageReference Include="xunit.runner.visualstudio">
2320
<PrivateAssets>all</PrivateAssets>
2421
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2522
</PackageReference>
26-
<PackageReference Include="Azure.Data.Tables" Version="12.11.0" />
27-
<PackageReference Include="Azure.Storage.Blobs" Version="12.26.0" />
28-
<PackageReference Include="Testcontainers.Azurite" Version="4.8.1" />
23+
<PackageReference Include="Azure.Data.Tables" />
24+
<PackageReference Include="Azure.Storage.Blobs" />
25+
<PackageReference Include="Testcontainers.Azurite" />
2926
</ItemGroup>
3027

3128
<ItemGroup>

src/NoteBookmark.Api/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ EXPOSE 8002
55

66
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
77
WORKDIR /src
8+
# Copy central props for TargetFramework and package management
9+
COPY ["Directory.Build.props", "/src/"]
10+
COPY ["Directory.Packages.props", "/src/"]
811
COPY ["src/NoteBookmark.Api/NoteBookmark.Api.csproj", "src/NoteBookmark.Api/"]
912
COPY ["src/NoteBookmark.Domain/NoteBookmark.Domain.csproj", "src/NoteBookmark.Domain/"]
1013
COPY ["src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj", "src/NoteBookmark.ServiceDefaults/"]

src/NoteBookmark.Api/NoteBookmark.Api.csproj

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

3-
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
5-
<Nullable>enable</Nullable>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
</PropertyGroup>
8-
93
<ItemGroup>
10-
<PackageReference Include="Aspire.Azure.Data.Tables" Version="13.0.2" />
11-
<PackageReference Include="Aspire.Azure.Storage.Blobs" Version="13.0.2" />
12-
<PackageReference Include="Azure.Data.Tables" Version="12.11.0" />
13-
<PackageReference Include="Azure.Storage.Blobs" Version="12.26.0" />
14-
<PackageReference Include="HtmlAgilityPack" Version="1.12.4" />
15-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.10" />
16-
<PackageReference Include="Swashbuckle.AspNetCore" Version="9.0.6" />
17-
<PackageReference Include="System.Text.Json" Version="9.0.10" />
4+
<PackageReference Include="Aspire.Azure.Data.Tables" />
5+
<PackageReference Include="Aspire.Azure.Storage.Blobs" />
6+
<PackageReference Include="Azure.Data.Tables" />
7+
<PackageReference Include="Azure.Storage.Blobs" />
8+
<PackageReference Include="HtmlAgilityPack" />
9+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
10+
<PackageReference Include="Swashbuckle.AspNetCore" />
11+
<PackageReference Include="System.Text.Json" />
1812
</ItemGroup>
1913

2014
<ItemGroup>

src/NoteBookmark.AppHost/NoteBookmark.AppHost.csproj

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22
<Sdk Name="Aspire.AppHost.Sdk" Version="13.0.2" />
33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net9.0</TargetFramework>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
<Nullable>enable</Nullable>
85
<IsAspireHost>true</IsAspireHost>
96
<UserSecretsId>0784f0a9-b1e6-4e65-8d31-00f1369f6d75</UserSecretsId>
107
</PropertyGroup>
118
<ItemGroup>
12-
<PackageReference Include="Aspire.Hosting.AppHost" Version="13.0.2" />
13-
<PackageReference Include="Aspire.Hosting.Azure.Storage" Version="13.0.2" />
14-
<PackageReference Include="Aspire.Hosting.Docker" Version="13.0.2-preview.1.25603.5" />
9+
<PackageReference Include="Aspire.Hosting.AppHost" />
10+
<PackageReference Include="Aspire.Hosting.Azure.Storage" />
11+
<PackageReference Include="Aspire.Hosting.Docker" />
1512
</ItemGroup>
1613
<ItemGroup>
1714
<ProjectReference Include="..\NoteBookmark.Api\NoteBookmark.Api.csproj" />

src/NoteBookmark.BlazorApp/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ EXPOSE 8006
55

66
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
77
WORKDIR /src
8+
COPY ["Directory.Build.props", "/src/"]
9+
COPY ["Directory.Packages.props", "/src/"]
810
COPY ["src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj", "src/NoteBookmark.BlazorApp/"]
911
COPY ["src/NoteBookmark.Domain/NoteBookmark.Domain.csproj", "src/NoteBookmark.Domain/"]
1012
COPY ["src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj", "src/NoteBookmark.ServiceDefaults/"]

0 commit comments

Comments
 (0)