diff --git a/.github/workflows/docker-publish-alpha.yml b/.github/workflows/docker-publish-alpha.yml new file mode 100644 index 0000000..9f0ac04 --- /dev/null +++ b/.github/workflows/docker-publish-alpha.yml @@ -0,0 +1,56 @@ +name: Build and Push Alpha Docker Images + +on: + push: + branches: [ v-next ] + workflow_dispatch: + +env: + REGISTRY: docker.io + API_IMAGE_NAME: fboucher/notebookmark-api + BLAZOR_IMAGE_NAME: fboucher/notebookmark-blazor + +jobs: + build-and-push-alpha: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Read version from Directory.Build.props + id: get-version + run: | + VERSION=$(grep -oPm1 "(?<=)[^<]+" Directory.Build.props) + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Found version: $VERSION" + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push API Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./src/NoteBookmark.Api/Dockerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }}:v${{ steps.get-version.outputs.version }}-alpha.${{ github.run_number }} + ${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }}:alpha-latest + + - name: Build and push Blazor App Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./src/NoteBookmark.BlazorApp/Dockerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }}:v${{ steps.get-version.outputs.version }}-alpha.${{ github.run_number }} + ${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }}:alpha-latest diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 8587f12..88bb27e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -2,9 +2,8 @@ name: Build and Push Docker Images on: push: - branches: [ main ] - pull_request: - branches: [ main ] + tags: + - 'v*' workflow_dispatch: env: @@ -24,7 +23,6 @@ jobs: uses: actions/checkout@v4 - name: Log in to Docker Hub - if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} @@ -37,10 +35,9 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.API_IMAGE_NAME }} tags: | - type=ref,event=branch - type=ref,event=pr - type=sha - type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest - name: Extract metadata for Blazor App id: meta-blazor @@ -48,17 +45,16 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.BLAZOR_IMAGE_NAME }} tags: | - type=ref,event=branch - type=ref,event=pr - type=sha - type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest - name: Build and push API Docker image uses: docker/build-push-action@v5 with: context: . file: ./src/NoteBookmark.Api/Dockerfile - push: ${{ github.event_name != 'pull_request' }} + push: true tags: ${{ steps.meta-api.outputs.tags }} labels: ${{ steps.meta-api.outputs.labels }} @@ -67,6 +63,6 @@ jobs: with: context: . file: ./src/NoteBookmark.BlazorApp/Dockerfile - push: ${{ github.event_name != 'pull_request' }} + push: true tags: ${{ steps.meta-blazor.outputs.tags }} labels: ${{ steps.meta-blazor.outputs.labels }} diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..6bb3e34 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,9 @@ + + + 1.1.2 + net9.0 + enable + enable + true + + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000..94ddf61 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/NoteBookmark.AIServices/NoteBookmark.AIServices.csproj b/src/NoteBookmark.AIServices/NoteBookmark.AIServices.csproj index a9bdbe7..8ce1e84 100644 --- a/src/NoteBookmark.AIServices/NoteBookmark.AIServices.csproj +++ b/src/NoteBookmark.AIServices/NoteBookmark.AIServices.csproj @@ -1,15 +1,9 @@  - - net9.0 - enable - enable - - - - - + + + diff --git a/src/NoteBookmark.Api.Tests/NoteBookmark.Api.Tests.csproj b/src/NoteBookmark.Api.Tests/NoteBookmark.Api.Tests.csproj index a69d6ea..8e21b9a 100644 --- a/src/NoteBookmark.Api.Tests/NoteBookmark.Api.Tests.csproj +++ b/src/NoteBookmark.Api.Tests/NoteBookmark.Api.Tests.csproj @@ -1,31 +1,28 @@ - net9.0 - enable - enable false true - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + diff --git a/src/NoteBookmark.Api/Dockerfile b/src/NoteBookmark.Api/Dockerfile index fc0996e..d73d06f 100644 --- a/src/NoteBookmark.Api/Dockerfile +++ b/src/NoteBookmark.Api/Dockerfile @@ -5,6 +5,9 @@ EXPOSE 8002 FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src +# Copy central props for TargetFramework and package management +COPY ["Directory.Build.props", "/src/"] +COPY ["Directory.Packages.props", "/src/"] COPY ["src/NoteBookmark.Api/NoteBookmark.Api.csproj", "src/NoteBookmark.Api/"] COPY ["src/NoteBookmark.Domain/NoteBookmark.Domain.csproj", "src/NoteBookmark.Domain/"] COPY ["src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj", "src/NoteBookmark.ServiceDefaults/"] diff --git a/src/NoteBookmark.Api/NoteBookmark.Api.csproj b/src/NoteBookmark.Api/NoteBookmark.Api.csproj index be07b08..2ff4e53 100644 --- a/src/NoteBookmark.Api/NoteBookmark.Api.csproj +++ b/src/NoteBookmark.Api/NoteBookmark.Api.csproj @@ -1,20 +1,14 @@ - - net9.0 - enable - enable - - - - - - - - - - + + + + + + + + diff --git a/src/NoteBookmark.AppHost/NoteBookmark.AppHost.csproj b/src/NoteBookmark.AppHost/NoteBookmark.AppHost.csproj index 1f81dbe..2267fb5 100644 --- a/src/NoteBookmark.AppHost/NoteBookmark.AppHost.csproj +++ b/src/NoteBookmark.AppHost/NoteBookmark.AppHost.csproj @@ -2,16 +2,13 @@ Exe - net9.0 - enable - enable true 0784f0a9-b1e6-4e65-8d31-00f1369f6d75 - - - + + + diff --git a/src/NoteBookmark.BlazorApp/Dockerfile b/src/NoteBookmark.BlazorApp/Dockerfile index 5e4db56..d286c0e 100644 --- a/src/NoteBookmark.BlazorApp/Dockerfile +++ b/src/NoteBookmark.BlazorApp/Dockerfile @@ -5,6 +5,8 @@ EXPOSE 8006 FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src +COPY ["Directory.Build.props", "/src/"] +COPY ["Directory.Packages.props", "/src/"] COPY ["src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj", "src/NoteBookmark.BlazorApp/"] COPY ["src/NoteBookmark.Domain/NoteBookmark.Domain.csproj", "src/NoteBookmark.Domain/"] COPY ["src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj", "src/NoteBookmark.ServiceDefaults/"] diff --git a/src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj b/src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj index be4bd25..e9f531d 100644 --- a/src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj +++ b/src/NoteBookmark.BlazorApp/NoteBookmark.BlazorApp.csproj @@ -1,15 +1,9 @@ - - - net9.0 - enable - enable - - - - + + + diff --git a/src/NoteBookmark.Domain/NoteBookmark.Domain.csproj b/src/NoteBookmark.Domain/NoteBookmark.Domain.csproj index f2548b0..e7f29a6 100644 --- a/src/NoteBookmark.Domain/NoteBookmark.Domain.csproj +++ b/src/NoteBookmark.Domain/NoteBookmark.Domain.csproj @@ -1,14 +1,8 @@  - - net9.0 - enable - enable - - - - + + diff --git a/src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj b/src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj index 233173d..c567fa5 100644 --- a/src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj +++ b/src/NoteBookmark.ServiceDefaults/NoteBookmark.ServiceDefaults.csproj @@ -1,22 +1,19 @@ - net9.0 - enable - enable true - - - - - - - + + + + + + +