From ae020c90aae78ba9ac65311773006b24ce7262f5 Mon Sep 17 00:00:00 2001 From: Patrick Date: Tue, 4 Apr 2023 17:10:06 +0200 Subject: [PATCH 01/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a97281..74dbb02 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/Intechnity-com/OdooJsonRpcClient/blob/master/LICENSE.md) [![NuGet package](https://img.shields.io/nuget/v/PortaCapena.OdooJsonRpcClient?color=blue&logo=NuGet&label=NuGet%20Package)](https://www.nuget.org/packages/PortaCapena.OdooJsonRpcClient) [![Nuget](https://img.shields.io/nuget/dt/PortaCapena.OdooJsonRpcClient?logo=NuGet&label=Downloads)](https://www.nuget.org/packages/PortaCapena.OdooJsonRpcClient) -[![example workflow](https://github.com/Intechnity-com/OdooJsonRpcClient/actions/workflows/pr_build.yml/badge.svg)](https://github.com/Intechnity-com/PortaCapena.OdooJsonRpcClient/actions/workflows/pr_build.yml) +[![example workflow](https://github.com/Intechnity-com/OdooJsonRpcClient/actions/workflows/pr_build.yml/badge.svg)](https://github.com/Intechnity-com/OdooJsonRpcClient/actions/workflows/pr_build.yml) [![example workflow](https://github.com/Intechnity-com/OdooJsonRpcClient/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Intechnity-com/OdooJsonRpcClient/actions/workflows/codeql-analysis.yml) ![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/patricoos/54596b8c061e5c3c25b3072822a105a0/raw/code-coverage.json) From 28ea1470b3ea651f106cf45985934ef5726c3422 Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 27 Apr 2023 16:35:57 +0200 Subject: [PATCH 02/15] Update README.md --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 74dbb02..c9bccb0 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,18 @@ if(condition) var createResult = await odooRepository.CreateAsync(model); ``` +or +```C# + var model2 = new OdooDictionaryModel("res.partner") { + { "name", "test name" }, + { "country_id", 20 }, + { "city", "test city" }, + { "zip", "12345" }, + { "street", "test address" }, + { "company_type", "company" }, + }; +var createResult = await odooRepository.CreateAsync(model); +``` From 12c90b6a6b797d7dc187dd7e66288f6c0e4da572 Mon Sep 17 00:00:00 2001 From: Patrick Date: Thu, 27 Apr 2023 16:37:05 +0200 Subject: [PATCH 03/15] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c9bccb0..3423198 100644 --- a/README.md +++ b/README.md @@ -217,7 +217,9 @@ or { "street", "test address" }, { "company_type", "company" }, }; -var createResult = await odooRepository.CreateAsync(model); +var odooClient = new OdooClient(TestConfig); + +var createResult = await odooClient.CreateAsync(model2); ``` From 8d13b13b6d17a808a30149f4edea0ef5f4c186dd Mon Sep 17 00:00:00 2001 From: Patryk Bujalla Date: Thu, 27 Apr 2023 17:07:27 +0200 Subject: [PATCH 04/15] OdooClient GetAsync of OdooDictionaryModel --- .../OdooClientTests.cs | 65 +++++++++++++------ PortaCapena.OdooJsonRpcClient/OdooClient.cs | 14 ++++ 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/PortaCapena.OdooJsonRpcClient.Example/OdooClientTests.cs b/PortaCapena.OdooJsonRpcClient.Example/OdooClientTests.cs index 8f51f37..8951854 100644 --- a/PortaCapena.OdooJsonRpcClient.Example/OdooClientTests.cs +++ b/PortaCapena.OdooJsonRpcClient.Example/OdooClientTests.cs @@ -42,6 +42,21 @@ public async Task Get_DotNet_model_should_return_string() var model = OdooModelMapper.GetDotNetModel(tableName, modelResult.Value); } + + [Fact] + public async Task Can_get_all_products_as_dictionary() + { + var odooClient = new OdooClient(TestConfig); + + var products = await odooClient.GetAsync("product.product"); + + products.Error.Should().BeNull(); + products.Value.Should().NotBeNull(); + products.Value.Length.Should().BeGreaterThan(0); + products.Succeed.Should().BeTrue(); + } + + [Fact] public async Task Can_get_all_products() { @@ -173,7 +188,7 @@ public async Task Should_get_products_with_selected_properties_using_query() x.Description, x.WriteDate }) - // .Where(x => x.Name, OdooOperator.EqualsTo, "Bioboxen 610l") + // .Where(x => x.Name, OdooOperator.EqualsTo, "Bioboxen 610l") .Where(x => x.WriteDate, OdooOperator.GreaterThanOrEqualTo, new DateTime(2020, 12, 2)); var products = await odooClient.GetAsync(filters); @@ -189,28 +204,17 @@ public async Task Should_get_products_with_selected_properties_using_query() #region Create - // [Fact(Skip = "Test for working on Odoo")] [Fact] public async Task Can_Create_customer() { - var name = "dupa"; - var city = "dupa"; - var postalCode = "dupa"; - var vatEu = "test"; - var address = "dupa"; - var isCompany = true; - - CompanyTypeResPartnerOdooEnum? test = CompanyTypeResPartnerOdooEnum.Company; - var model = OdooDictionaryModel.Create(() => new ResPartnerOdooModel() { - Name = name, + Name = "test name", CountryId = 20, - City = city, - Zip = postalCode, - //Vat = vatEu, - Street = address, - CompanyType = test ?? CompanyTypeResPartnerOdooEnum.Individual + City = "test city", + Zip = "12345", + Street = "test address", + CompanyType = CompanyTypeResPartnerOdooEnum.Company }); var odooClient = new OdooClient(TestConfig); @@ -220,6 +224,25 @@ public async Task Can_Create_customer() products.Succeed.Should().BeTrue(); } + [Fact] + public async Task Can_Create_customer_with_dictionary() + { + var model = new OdooDictionaryModel("res.partner") { + { "name", "test name" }, + { "country_id", 20 }, + { "city", "test city" }, + { "zip", "12345" }, + { "street", "test address" }, + { "company_type", "company" }, + }; + + var odooClient = new OdooClient(TestConfig); + + var products = await odooClient.CreateAsync(model); + + products.Succeed.Should().BeTrue(); + } + [Fact] public async Task Can_create_update_get_and_delete_customer() { @@ -506,7 +529,7 @@ public async Task OnChange_test() } [Fact(Skip = "Test for working on Odoo")] - // [Fact] + // [Fact] public async Task Can_create_purchase_order() { var odooClient = new OdooClient(TestConfig); @@ -522,7 +545,7 @@ public async Task Can_create_purchase_order() Name = "test purchase", }); - var lines = new[] { + var lines = new[] { OdooDictionaryModel.Create(() => new PurchaseOrderLineOdooModel() { Name = "test purchase line", @@ -537,8 +560,8 @@ public async Task Can_create_purchase_order() createResult.Succeed.Should().BeTrue(); } - // [Fact(Skip = "Test for working on Odoo")] - [Fact] + // [Fact(Skip = "Test for working on Odoo")] + [Fact] public async Task Can_create_update_and_delete_product() { var odooClient = new OdooClient(TestConfig); diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index 0fd025b..b773c76 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -110,6 +110,20 @@ public OdooClient(OdooConfig config) var tableName = OdooExtensions.GetOdooTableName(); var request = OdooRequestModel.SearchRead(odooConfig, userUid, tableName, query, context); return await CallAndDeserializeAsync(request, cancellationToken); + } + + public async Task> GetAsync(string tableName, OdooQuery query = null, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await ExecuteWitrAccesDenideRetryAsync(userUid => GetAsync(tableName, userUid, query, SelectContext(context, Config.Context), cancellationToken)); + } + public async Task> GetAsync(string tableName, int userUid, OdooQuery query = null, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await GetAsync(tableName, Config, userUid, query, SelectContext(context, Config.Context), cancellationToken); + } + public static async Task> GetAsync(string tableName, OdooConfig odooConfig, int userUid, OdooQuery query = null, OdooContext context = null, CancellationToken cancellationToken = default) + { + var request = OdooRequestModel.SearchRead(odooConfig, userUid, tableName, query, context); + return await CallAndDeserializeAsync(request, cancellationToken); } #endregion From 01f348e3f6a9dc3f0c3cb6729c2702ce18e4fe0e Mon Sep 17 00:00:00 2001 From: Neil Burkholder <24275193+NeilBurkholder@users.noreply.github.com> Date: Sat, 12 Oct 2024 14:36:47 -0400 Subject: [PATCH 05/15] Added support for batch create records --- PortaCapena.OdooJsonRpcClient/OdooClient.cs | 23 +++++++++++++++++++ .../OdooRepository.cs | 11 ++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index b773c76..3cf2648 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -168,7 +168,30 @@ public static async Task> CreateAsync(OdooConfig odooConfig, in var request = OdooRequestModel.Create(odooConfig, userUid, GetTableName(model), model, context); var result = await CallAndDeserializeAsync(request, cancellationToken); return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); + } + + public async Task> CreateAsync(IEnumerable models, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await ExecuteWitrAccesDenideRetryAsync(userUid => CreateAsync(Config, userUid, models, SelectContext(context, Config.Context), cancellationToken)); } + public static async Task> CreateAsync(OdooConfig odooConfig, int userUid, IEnumerable models, OdooContext context = null, CancellationToken cancellationToken = default) + { + var request = OdooRequestModel.Create(odooConfig, userUid, models.First().OdooTableName(), models, context); + var result = await CallAndDeserializeAsync(request, cancellationToken); + return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); + } + public async Task> CreateAsync(IEnumerable models, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await ExecuteWitrAccesDenideRetryAsync(userUid => CreateAsync(Config, userUid, models, SelectContext(context, Config.Context), cancellationToken)); + } + public static async Task> CreateAsync(OdooConfig odooConfig, int userUid, IEnumerable models, OdooContext context = null, CancellationToken cancellationToken = default) + { + var request = OdooRequestModel.Create(odooConfig, userUid, GetTableName(models.First()), models, context); + var result = await CallAndDeserializeAsync(request, cancellationToken); + return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); + } + + #endregion diff --git a/PortaCapena.OdooJsonRpcClient/OdooRepository.cs b/PortaCapena.OdooJsonRpcClient/OdooRepository.cs index 4655550..db0488b 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooRepository.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooRepository.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using PortaCapena.OdooJsonRpcClient.Extensions; using PortaCapena.OdooJsonRpcClient.Models; using PortaCapena.OdooJsonRpcClient.Request; @@ -28,6 +29,14 @@ public async Task> CreateAsync(OdooDictionaryModel model, OdooC { return await OdooClient.CreateAsync(model, context); } + public async Task> CreateAsync(IEnumerable models, OdooContext context = null) + { + return await OdooClient.CreateAsync(models, context); + } + public async Task> CreateAsync(IEnumerable models, OdooContext context = null) + { + return await OdooClient.CreateAsync(models, context); + } public async Task> UpdateAsync(IOdooCreateModel model, long id, OdooContext context = null) { From 8cae40384a8141c832408ac1f2a100c7112583de Mon Sep 17 00:00:00 2001 From: Neil Burkholder <24275193+NeilBurkholder@users.noreply.github.com> Date: Sat, 12 Oct 2024 14:56:01 -0400 Subject: [PATCH 06/15] Fix issues with property mapping --- .../Converters/OdooModelMapper.cs | 5 +++++ PortaCapena.OdooJsonRpcClient/Models/OdooPropertyInfo.cs | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/PortaCapena.OdooJsonRpcClient/Converters/OdooModelMapper.cs b/PortaCapena.OdooJsonRpcClient/Converters/OdooModelMapper.cs index 1d22ca6..8315446 100644 --- a/PortaCapena.OdooJsonRpcClient/Converters/OdooModelMapper.cs +++ b/PortaCapena.OdooJsonRpcClient/Converters/OdooModelMapper.cs @@ -214,6 +214,11 @@ public static string ConvertToDotNetPropertyTypeName(KeyValuePair Date: Mon, 28 Oct 2024 08:41:26 -0400 Subject: [PATCH 07/15] Enabled custom actions --- PortaCapena.OdooJsonRpcClient/OdooClient.cs | 11 +++++++++++ PortaCapena.OdooJsonRpcClient/OdooRepository.cs | 4 ++++ .../Request/OdooRequestModel.cs | 5 +++++ README.md | 6 ++++++ 4 files changed, 26 insertions(+) diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index 3cf2648..aa676fc 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -189,6 +189,17 @@ public static async Task> CreateAsync(OdooConfig odooConfig, var request = OdooRequestModel.Create(odooConfig, userUid, GetTableName(models.First()), models, context); var result = await CallAndDeserializeAsync(request, cancellationToken); return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); + } + public async Task> ActionAsync(string tableName, string action, object param, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await ExecuteWitrAccesDenideRetryAsync(userUid => ActionAsync(Config, userUid, tableName, action, param, SelectContext(context, Config.Context), cancellationToken)); + } + public static async Task> ActionAsync(OdooConfig odooConfig, int userUid, string tableName, string action, object model + , OdooContext context = null, CancellationToken cancellationToken = default) + { + var request = OdooRequestModel.Action(odooConfig, userUid, tableName, action, model, context); + var result = await CallAndDeserializeAsync(request, cancellationToken); + return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); } diff --git a/PortaCapena.OdooJsonRpcClient/OdooRepository.cs b/PortaCapena.OdooJsonRpcClient/OdooRepository.cs index db0488b..e035e20 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooRepository.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooRepository.cs @@ -68,5 +68,9 @@ public async Task> DeleteRangeAsync(T[] models, OdooContext con { return await OdooClient.DeleteRangeAsync(models as IOdooModel[], context); } + public async Task> ActionAsync(string action, object args, OdooContext context = null) + { + return await OdooClient.ActionAsync(TableName, action, args, context); + } } } \ No newline at end of file diff --git a/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs b/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs index 01d08ee..edd80c4 100644 --- a/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs +++ b/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs @@ -95,6 +95,11 @@ public static OdooRequestModel Metadata(OdooConfig config, int uid, string table var param = new OdooRequestParams(config.ApiUrlJson, "object", "execute_kw", config.DbName, uid, config.Password, tableName, OdooOperation.GetMetadata, new object[] { ids }, MapQuery(context)); return new OdooRequestModel(param); } + public static OdooRequestModel Action(OdooConfig config, int uid, string tableName, string action, object model, OdooContext context = null) + { + var param = new OdooRequestParams(config.ApiUrlJson, "object", "execute_kw", config.DbName, uid, config.Password, tableName, action, new[] { model }, MapQuery(context)); + return new OdooRequestModel(param); + } protected static Dictionary MapQuery(OdooContext context, OdooQuery query = null) { diff --git a/README.md b/README.md index 3423198..1cf4f12 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,12 @@ var result = await repository.UpdateAsync(model, productId); var deleteProductResult = await repository.DeleteAsync(productId); ``` +#### Action +Perform any actions on a model. For example use the code below to comfirm a sale order and turn it from a quote to an order. +```C# +var repository = new OdooRepository(config); +var confirmResult = await repository.ActionAsync("action_confirm", orderId); +``` From f3d4cfecf426fcc227f2e6245dd40aaf23961e2a Mon Sep 17 00:00:00 2001 From: Neil Burkholder <24275193+NeilBurkholder@users.noreply.github.com> Date: Tue, 1 Apr 2025 05:15:05 -0400 Subject: [PATCH 08/15] Added ActionCollection --- PortaCapena.OdooJsonRpcClient/OdooClient.cs | 11 +++++++++++ .../Request/OdooRequestModel.cs | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index aa676fc..e2d85b5 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -201,6 +201,17 @@ public static async Task> ActionAsync(OdooConfig odooConfig, var result = await CallAndDeserializeAsync(request, cancellationToken); return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); } + public async Task> ActionCollectionAsync(string tableName, string action, object param, OdooContext context = null, CancellationToken cancellationToken = default) + { + return await ExecuteWitrAccesDenideRetryAsync(userUid => ActionCollectionAsync(Config, userUid, tableName, action, param, SelectContext(context, Config.Context), cancellationToken)); + } + public static async Task> ActionCollectionAsync(OdooConfig odooConfig, int userUid, string tableName, string action, object model + , OdooContext context = null, CancellationToken cancellationToken = default) + { + var request = OdooRequestModel.ActionCollection(odooConfig, userUid, tableName, action, model, context); + var result = await CallAndDeserializeAsync(request, cancellationToken); + return result.Succeed ? result.ToResult(result.Value) : OdooResult.FailedResult(result); + } diff --git a/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs b/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs index edd80c4..9f3cc8e 100644 --- a/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs +++ b/PortaCapena.OdooJsonRpcClient/Request/OdooRequestModel.cs @@ -100,6 +100,11 @@ public static OdooRequestModel Action(OdooConfig config, int uid, string tableNa var param = new OdooRequestParams(config.ApiUrlJson, "object", "execute_kw", config.DbName, uid, config.Password, tableName, action, new[] { model }, MapQuery(context)); return new OdooRequestModel(param); } + public static OdooRequestModel ActionCollection(OdooConfig config, int uid, string tableName, string action, object model, OdooContext context = null) + { + var param = new OdooRequestParams(config.ApiUrlJson, "object", "execute_kw", config.DbName, uid, config.Password, tableName, action, model, MapQuery(context)); + return new OdooRequestModel(param); + } protected static Dictionary MapQuery(OdooContext context, OdooQuery query = null) { From 10d69662523edd50f85a8669aa2ab62d7c832131 Mon Sep 17 00:00:00 2001 From: Neil Burkholder <24275193+NeilBurkholder@users.noreply.github.com> Date: Sat, 5 Apr 2025 17:33:52 -0400 Subject: [PATCH 09/15] Fix for odoo sending empty contents --- PortaCapena.OdooJsonRpcClient/OdooClient.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PortaCapena.OdooJsonRpcClient/OdooClient.cs b/PortaCapena.OdooJsonRpcClient/OdooClient.cs index e2d85b5..99ff85b 100644 --- a/PortaCapena.OdooJsonRpcClient/OdooClient.cs +++ b/PortaCapena.OdooJsonRpcClient/OdooClient.cs @@ -48,6 +48,7 @@ public static string BasicAuthenticationUsernamePassword static OdooClient() { + System.Net.ServicePointManager.Expect100Continue = false; InitializeHttpClient(); } From 73e580900055acd3f3da80cad451f955f3f062cf Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 08:41:01 +0200 Subject: [PATCH 10/15] Update pr_build.yml --- .github/workflows/pr_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 87088da..9c08452 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -14,9 +14,9 @@ jobs: config: 'Release' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 with: dotnet-version: 6.0.x From e60a5dea97871a794290b7f8f93414bf81834e11 Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 08:47:58 +0200 Subject: [PATCH 11/15] Update code-coverage-badge.yml --- .github/workflows/code-coverage-badge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/code-coverage-badge.yml b/.github/workflows/code-coverage-badge.yml index 0a98f0e..fe6c38e 100644 --- a/.github/workflows/code-coverage-badge.yml +++ b/.github/workflows/code-coverage-badge.yml @@ -5,9 +5,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 with: dotnet-version: 6.0.x - name: Restore dependencies From 6a253059d1d414e860512208b52584b930745987 Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 08:49:39 +0200 Subject: [PATCH 12/15] Update codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0c0a6b5..8e21296 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -42,7 +42,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -53,7 +53,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -67,4 +67,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v3 From e5ccc709843600010ce6149141fb48d00985a42b Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 08:55:05 +0200 Subject: [PATCH 13/15] Update pr_build.yml --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 9c08452..18533e3 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -49,7 +49,7 @@ jobs: # upload report as build artifact - name: Upload a Build Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 if: ${{always()}} with: name: 'Test Run' From 6ff7aaabfa2ca2bd798f0f8dd0e5ff00e70c18d9 Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 08:45:20 +0200 Subject: [PATCH 14/15] Update release.yml --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12769e4..7f4fc7a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,9 +11,9 @@ jobs: config: 'Release' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 with: dotnet-version: 6.0.x From 25b76af467c5033726a543dcb741c23b83382155 Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 11 Apr 2025 09:11:39 +0200 Subject: [PATCH 15/15] Update pr_build.yml --- .github/workflows/pr_build.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 18533e3..96c6882 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -56,13 +56,14 @@ jobs: path: ${{github.workspace}}/${{env.file_name}} # add report as PR comment (if PR) - - name: comment PR - uses: machine-learning-apps/pr-comment@master - if: ${{ github.event_name == 'pull_request' }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Comment on PR + uses: peter-evans/create-or-update-comment@v4 + if: github.event_name == 'pull_request' with: - path: ${{env.file_name}} + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.pull_request.number }} + body-path: ${{ env.file_name }} + edit-mode: replace - name: Code Coverage Report uses: irongut/CodeCoverageSummary@v1.3.0