diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 610efe0..b3c5e9a 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -8,12 +8,11 @@ # This release drafter follows the conventions from https://keepachangelog.com, https://common-changelog.org/ # https://www.conventionalcommits.org -name-template: 'v$RESOLVED_VERSION' -tag-template: 'v$RESOLVED_VERSION' + template: | ## What Changed 👀 $CHANGES - **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION + categories: - title: 🚀 Features labels: @@ -27,7 +26,7 @@ categories: - test - title: 👷 CI labels: - - ci + - ci - title: ♻️ Changes labels: - changed @@ -66,31 +65,31 @@ autolabeler: - '/(security)\/.*/' - label: 'refactor' branch: - - '/(refactor)\/.*/' + - '/(refactor)\/.*/' - label: 'docs' branch: - '/(docs)\/.*/' - label: 'ci' branch: - - '/(ci)\/.*/' + - '/(ci)\/.*/' - label: 'test' branch: - - '/(test)\/.*/' + - '/(test)\/.*/' - label: 'bug' branch: - - '/(fix)\/.*/' + - '/(fix)\/.*/' - label: 'feature' branch: - '/(feat)\/.*/' - label: 'minor' branch: - - '/(feat)\/.*/' + - '/(feat)\/.*/' - label: 'patch' branch: - - '/(fix)\/.*/' + - '/(fix)\/.*/' body: - '/JIRA-[0-9]{1,4}/' - + change-template: '- $TITLE (#$NUMBER)' exclude-contributors: - 'meysamhadeli' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..26a28ec --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,70 @@ +name: CI + +on: + push: + branches: [ "main" , "develop" ] + paths-ignore: + - "README.md" + pull_request: + branches: [ "main" , "develop" ] + paths-ignore: + - "README.md" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 7.0.x + + - name: Cache NuGet Packages + uses: actions/cache@v3 + with: + key: ${{ runner.os }}-dotnet-nuget + path: ~/.nuget/packages + + - name: Restore dependencies + run: dotnet restore + + - name: Build + run: dotnet build -c Release --no-restore + + - name: Test + run: dotnet test -c Release --no-restore + + - name: Update Release Drafter + if: github.ref == 'refs/heads/main' + id: last_release + uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to DockerHub + if: github.ref == 'refs/heads/main' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + ##ref: https://docs.docker.com/language/golang/configure-ci-cd/ + ##ref: https://event-driven.io/en/how_to_buid_and_push_docker_image_with_github_actions + - name: Build Docker Image + if: github.ref == 'refs/heads/main' + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-flight:${{ steps.last_release.outputs.tag_name }} -f "${{ github.workspace }}/src/Services/Flight/Dockerfile" . + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-identity:${{ steps.last_release.outputs.tag_name }} -f "${{ github.workspace }}/src/Services/Identity/Dockerfile" . + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-passenger:${{ steps.last_release.outputs.tag_name }} -f "${{ github.workspace }}/src/Services/Passenger/Dockerfile" . + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-booking:${{ steps.last_release.outputs.tag_name }} -f "${{ github.workspace }}/src/Services/Booking/Dockerfile" . + + - name: Publish Docker Image + if: github.ref == 'refs/heads/main' + run: | + docker push ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-flight:${{ steps.last_release.outputs.tag_name }} + docker push ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-identity:${{ steps.last_release.outputs.tag_name }} + docker push ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-passenger:${{ steps.last_release.outputs.tag_name }} + docker push ${{ secrets.DOCKERHUB_USERNAME }}/booking-microservices-booking:${{ steps.last_release.outputs.tag_name }} + diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml deleted file mode 100644 index 731b8af..0000000 --- a/.github/workflows/dotnet.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Build-Test - -on: - push: - branches: [ "main" , "develop"] - paths-ignore: - - "README.md" - pull_request: - branches: [ "main" , "develop" ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: 7.0.x - - name: Restore dependencies - run: dotnet restore - - name: Build - run: dotnet build -c Release --no-restore - - name: Test - run: dotnet test -c Release --no-restore - diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml deleted file mode 100644 index 98af17d..0000000 --- a/.github/workflows/release-drafter.yml +++ /dev/null @@ -1,18 +0,0 @@ - # https://johanneskonings.dev/github/2021/02/28/github_automatic_releases_and-changelog/ - # https://tiagomichaelsousa.dev/articles/stop-writing-your-changelogs-manually - name: Release Drafter - - on: - push: - branches: - - main - jobs: - update_release_draft: - name: Release drafter - runs-on: ubuntu-latest - - steps: - - name: Update Release Draft - uses: release-drafter/release-drafter@v5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/current-version.txt b/current-version.txt new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..d1992e2 --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "version": "0.0.0" +} diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs index 5609afe..ce710a6 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs @@ -11,6 +11,6 @@ public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory options) + private readonly ILogger _logger; + + public PersistMessageDbContext(DbContextOptions options, + ILogger logger) : base(options) { + _logger = logger; } public DbSet PersistMessages => Set(); @@ -37,10 +41,7 @@ public class PersistMessageDbContext : DbContext, IPersistMessageDbContext { if (exception != null) { - var factory = LoggerFactory.Create(b => b.AddConsole()); - var logger = factory.CreateLogger(); - - logger.LogError(exception, + _logger.LogError(exception, "Request failed with {StatusCode}. Waiting {TimeSpan} before next retry. Retry attempt {RetryCount}.", HttpStatusCode.Conflict, timeSpan, @@ -55,12 +56,22 @@ public class PersistMessageDbContext : DbContext, IPersistMessageDbContext { foreach (var entry in ex.Entries) { - var currentEntity = entry.Entity; // we can use it for specific merging - var databaseValues = await entry.GetDatabaseValuesAsync(cancellationToken); + var currentValue = entry.Entity; // we can use it for specific merging + var databaseValue = await entry.GetDatabaseValuesAsync(cancellationToken); - if (databaseValues != null) + _logger.LogInformation( + "Entry to entity with type: {Type}, database-value: {DatabaseValue} and current-value: {CurrentValue}", + entry.GetType().Name, + databaseValue, + currentValue); + + if (databaseValue != null) { - entry.OriginalValues.SetValues(databaseValues); + entry.OriginalValues.SetValues(databaseValue); + } + else + { + entry.OriginalValues.SetValues(currentValue); } }