From da719bf65891756fca83e60012513f90d70e7164 Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Thu, 26 Feb 2026 23:16:02 +0100 Subject: [PATCH] migration --- {.github => .gitea}/config/gitversion.yml | 2 +- .gitea/readme/icon.png | Bin 0 -> 28778 bytes .gitea/workflows/build.yml | 34 ++++++ .gitea/workflows/build_publish.yml | 100 ++++++++++++++++++ .github/workflows/pull_request_dev.yml | 24 ----- .github/workflows/pull_request_main.yml | 24 ----- .github/workflows/push_dev.yml | 24 ----- .github/workflows/push_main.yml | 74 ------------- README.md | 91 ++++++++++++++++ .../README.md | 41 +++++++ ...vents.Extensions.AspNetCore.OpenApi.csproj | 15 ++- 11 files changed, 279 insertions(+), 150 deletions(-) rename {.github => .gitea}/config/gitversion.yml (89%) create mode 100644 .gitea/readme/icon.png create mode 100644 .gitea/workflows/build.yml create mode 100644 .gitea/workflows/build_publish.yml delete mode 100644 .github/workflows/pull_request_dev.yml delete mode 100644 .github/workflows/pull_request_main.yml delete mode 100644 .github/workflows/push_dev.yml delete mode 100644 .github/workflows/push_main.yml create mode 100644 README.md create mode 100644 TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/README.md diff --git a/.github/config/gitversion.yml b/.gitea/config/gitversion.yml similarity index 89% rename from .github/config/gitversion.yml rename to .gitea/config/gitversion.yml index 57caa9e..aa3a017 100644 --- a/.github/config/gitversion.yml +++ b/.gitea/config/gitversion.yml @@ -6,4 +6,4 @@ assembly-file-versioning-scheme: MajorMinorPatch branches: main: regex: ^main$ - increment: Patch \ No newline at end of file + increment: Patch diff --git a/.gitea/readme/icon.png b/.gitea/readme/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..febedfd9df666d3980e1e4ba570cf82150a0e943 GIT binary patch literal 28778 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 Wn{mDt3Gicnz`fgs+NHPb!~X|BMTBGk literal 0 HcmV?d00001 diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..008076b --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,34 @@ +name: Build + +on: + push: + branches: + - "dev" + paths: + - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" + pull_request: + branches: + - "dev" + - "main" + paths: + - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" + +jobs: + build: + name: Build + runs-on: linux + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + - name: Add package source + run: dotnet nuget add source --name gitea --username TimetableDesigner --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore + - name: Create NuGet package + run: dotnet pack -c Debug --output ./ \ No newline at end of file diff --git a/.gitea/workflows/build_publish.yml b/.gitea/workflows/build_publish.yml new file mode 100644 index 0000000..03853b2 --- /dev/null +++ b/.gitea/workflows/build_publish.yml @@ -0,0 +1,100 @@ +name: Build and publish package + +on: + workflow_dispatch: + branches: + - "main" + push: + branches: + - "main" + paths: + - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" + +jobs: + build: + name: Build + runs-on: linux + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + - name: Add package source + run: dotnet nuget add source --name gitea --username TimetableDesigner --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore + version: + name: Determine version + runs-on: linux + needs: build + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 10.0.x + - name: Setup GitVersion + uses: gittools/actions/gitversion/setup@v4.2.0 + with: + versionSpec: 6.4.x + - name: Determine version + uses: gittools/actions/gitversion/execute@v4.2.0 + id: gitversion + with: + configFilePath: ./.gitea/config/gitversion.yml + outputs: + version: ${{ steps.gitversion.outputs.SemVer }} + pack: + name: Pack + runs-on: linux + needs: version + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 10.0.x + - name: Add package source + run: dotnet nuget add source --name gitea --username TimetableDesigner --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json + - name: Create NuGet package + run: dotnet pack -c Release -p:Version=${{needs.version.outputs.version}} -p:PackageVersion=${{needs.version.outputs.version}} --output ./ + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: nuget + path: ./TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.${{needs.version.outputs.version}}.nupkg + outputs: + version: ${{needs.version.outputs.version}} + publish: + name: Publish + runs-on: linux + needs: pack + steps: + - name: Download artifact + uses: actions/download-artifact@v3 + with: + name: nuget + path: ./ + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 10.0.x + - name: Add package source + run: dotnet nuget add source --name gitea --username TimetableDesigner --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json + - name: Publish + run: dotnet nuget push ./TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.${{needs.pack.outputs.version}}.nupkg --source gitea --api-key ${{ secrets.PACKAGES_WRITE_TOKEN }} --skip-duplicate + - name: Create Release + uses: akkuman/gitea-release-action@v1 + with: + tag_name: ${{needs.pack.outputs.version}} + name: ${{needs.pack.outputs.version}} + files: |- + TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.${{needs.pack.outputs.version}}.nupkg \ No newline at end of file diff --git a/.github/workflows/pull_request_dev.yml b/.github/workflows/pull_request_dev.yml deleted file mode 100644 index a26d922..0000000 --- a/.github/workflows/pull_request_dev.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build NuGet package on dev branch pull request - -on: - pull_request: - branches: - - "dev" - paths: - - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6.0.2 - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x - - name: Add source - run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json" - - name: Build - run: dotnet build diff --git a/.github/workflows/pull_request_main.yml b/.github/workflows/pull_request_main.yml deleted file mode 100644 index 7520567..0000000 --- a/.github/workflows/pull_request_main.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build NuGet package on main branch pull request - -on: - pull_request: - branches: - - "main" - paths: - - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6.0.2 - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x - - name: Add source - run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json" - - name: Build - run: dotnet build diff --git a/.github/workflows/push_dev.yml b/.github/workflows/push_dev.yml deleted file mode 100644 index aecf12a..0000000 --- a/.github/workflows/push_dev.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build NuGet package on dev branch push - -on: - push: - branches: - - "dev" - paths: - - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6.0.2 - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x - - name: Add source - run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json" - - name: Build - run: dotnet build diff --git a/.github/workflows/push_main.yml b/.github/workflows/push_main.yml deleted file mode 100644 index 86d3f90..0000000 --- a/.github/workflows/push_main.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Build NuGet package on main branch push - -on: - push: - branches: - - "main" - paths: - - "TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi**" - -jobs: - build: - name: Build and pack - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6.0.2 - with: - fetch-depth: 0 - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x - - name: Add source - run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json" - - name: Build - run: dotnet build - - name: Setup GitVersion - uses: gittools/actions/gitversion/setup@v4.2.0 - with: - versionSpec: 6.4.x - - name: Determine version - uses: gittools/actions/gitversion/execute@v4.2.0 - id: gitversion - with: - configFilePath: ./.github/config/gitversion.yml - - name: Create NuGet package - run: dotnet pack -c Release -p:Version=${{steps.gitversion.outputs.SemVer}} -p:PackageVersion=${{steps.gitversion.outputs.SemVer}} --output ${{ github.workspace}}/nuget - - name: Upload artifact - uses: actions/upload-artifact@v6 - with: - name: nuget - path: ${{ github.workspace}}/nuget/*.nupkg - outputs: - version: ${{ steps.gitversion.outputs.SemVer }} - publish: - name: Publish - permissions: write-all - runs-on: ubuntu-latest - needs: build - steps: - - name: Download artifact - uses: actions/download-artifact@v6 - with: - name: nuget - path: ${{ github.workspace}}/nuget - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x - - name: Add source - run: dotnet nuget add source --username TimetableDesigner --password ${{secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/TimetableDesigner/index.json" - - name: Publish - run: dotnet nuget push ${{ github.workspace}}/nuget/*.nupkg --source "github" --api-key ${{ secrets.NUGET_REGISTRY_API_KEY }} --skip-duplicate - - name: Create Release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{needs.build.outputs.version}} - release_name: ${{needs.build.outputs.version}} - draft: false - prerelease: false - - diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb539f6 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +

+ +

TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi

+ +

Advanced school timetable editor, allows you to easily create and manage school timetable.

+ +

TimetableDesigner.Backend.Events is collection of NuGet packages (and NuGet package itself) that support communication between microservices in the TimetableDesigner project using message queues. This NuGet package contains initialization extensions methods for ASP.NET Core Web API.

+ +--- + +## Informations + +> [!Important] +> **For Github users:** +> +> This is only mirror repository. All changes are first uploaded to the repository
here. Releases are also published on original repository. However, Github repository handles issues and pull requests for better accessibility. + +## NuGet registry status + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Subpackage + + Status +
+ TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi + + +
+ Other subpackages +
+ TimetableDesigner.Backend.Events + + +
+ TimetableDesigner.Backend.Events.OutboxPattern + + +
+ TimetableDesigner.Backend.Events.Providers.RabbitMQ + + +
+ +## Installation and usage + +You can download package from organization package registry or .nupkg file itself from Releases tab. + +To download package from organization package registry, you have to add new NuGet package source. You will need access details, which you can obtain by contacting the repository owner. + +**CLI:** + +``` +dotnet nuget add source --name TimetableDesigner --username --password https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json +dotnet add package --source TimetableDesigner TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi +``` + +**Package reference in .csproj file:** + +``` + +``` + +## Attribution and contribution + +This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license here. + +However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication. \ No newline at end of file diff --git a/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/README.md b/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/README.md new file mode 100644 index 0000000..2229484 --- /dev/null +++ b/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/README.md @@ -0,0 +1,41 @@ +# TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi + +### Advanced school timetable editor, allows you to easily create and manage school timetable. + +TimetableDesigner.Backend.Events is collection of NuGet packages (and NuGet package itself) that support communication between microservices in the TimetableDesigner project using message queues. This NuGet package contains initialization extensions methods for ASP.NET Core Web API. + +--- + +## NuGet registry status + +| Subpackage | Status | +|----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi** | [![NuGet version (TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi)](https://img.shields.io/gitea/v/release/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi?gitea_url=https%3A%2F%2Frepos.mateuszskoczek.com%2F&display_name=release&label=nuget)](https://repos.mateuszskoczek.com/TimetableDesigner/-/packages/nuget/timetabledesigner.backend.events.extensions.aspnetcore.openapi/) | +| TimetableDesigner.Backend.Events | [![NuGet version (TimetableDesigner.Backend.Events)](https://img.shields.io/gitea/v/release/TimetableDesigner/TimetableDesigner.Backend.Events?gitea_url=https%3A%2F%2Frepos.mateuszskoczek.com%2F&display_name=release&label=nuget)](https://repos.mateuszskoczek.com/TimetableDesigner/-/packages/nuget/timetabledesigner.backend.events/) | +| TimetableDesigner.Backend.Events.OutboxPattern | [![NuGet version (TimetableDesigner.Backend.Events.OutboxPattern)](https://img.shields.io/gitea/v/release/TimetableDesigner/TimetableDesigner.Backend.Events.OutboxPattern?gitea_url=https%3A%2F%2Frepos.mateuszskoczek.com%2F&display_name=release&label=nuget)](https://repos.mateuszskoczek.com/TimetableDesigner/-/packages/nuget/timetabledesigner.backend.events.outboxpattern/) | +| TimetableDesigner.Backend.Events.Providers.RabbitMQ | [![NuGet version (TimetableDesigner.Backend.Events.Providers.RabbitMQ)](https://img.shields.io/gitea/v/release/TimetableDesigner/TimetableDesigner.Backend.Events.Providers.RabbitMQ?gitea_url=https%3A%2F%2Frepos.mateuszskoczek.com%2F&display_name=release&label=nuget)](https://repos.mateuszskoczek.com/TimetableDesigner/-/packages/nuget/timetabledesigner.backend.events.providers.rabbitmq/) | + +## Installation and usage + +You can download package from organization package registry or .nupkg file itself from Releases tab. + +To download package from organization package registry, you have to add new NuGet package source. You will need access details, which you can obtain by contacting the repository owner. + +**CLI:** + +``` +dotnet nuget add source --name TimetableDesigner --username --password https://repos.mateuszskoczek.com/api/packages/TimetableDesigner/nuget/index.json +dotnet add package --source TimetableDesigner TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi +``` + +**Package reference in .csproj file:** + +``` + +``` + +## Attribution and contribution + +This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license here. + +However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication. \ No newline at end of file diff --git a/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.csproj b/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.csproj index 3134539..d7dbba5 100644 --- a/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.csproj +++ b/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi.csproj @@ -6,14 +6,19 @@ enable TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi Mateusz Skoczek - https://github.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi + https://repos.mateuszskoczek.com/TimetableDesigner icon.png - https://github.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi + https://repos.mateuszskoczek.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi + Mateusz Skoczek + https://repos.mateuszskoczek.com/TimetableDesigner/TimetableDesigner.Backend.Events.Extensions.AspNetCore.OpenApi/src/branch/main/LICENSE + Advanced school timetable editor, allows you to easily create and manage school timetable - package that support communication between microservices in the project using message queues (initialization extension methods for ASP.NET Core Web API) + README.md + - + @@ -21,5 +26,9 @@ True + + True + +