Compare commits
1 Commits
2026.02.14
...
2026.02.14
| Author | SHA1 | Date | |
|---|---|---|---|
| a7695bfb7e |
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: [runner]
|
||||
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
|
||||
steps:
|
||||
- uses: https://git.sh-edraft.de/sh-edraft.de/actions/set-version@dev
|
||||
- uses: https://git.sh-edraft.de/sh-edraft.de/actions/set-version@v1
|
||||
with:
|
||||
version_suffix: dev
|
||||
env:
|
||||
@@ -31,42 +31,35 @@ jobs:
|
||||
with:
|
||||
name: version
|
||||
|
||||
- name: Build single file executables
|
||||
- name: Build package
|
||||
run: |
|
||||
cd sh.actions/sh.actions.package-cleanup
|
||||
dotnet build -c Release -p:Version=$(cat ../../version.txt)
|
||||
|
||||
# Build for Linux x64
|
||||
dotnet publish -c Release -r linux-x64 -p:Version=$(cat ../../version.txt) -o publish/linux-x64
|
||||
- name: Configure nuget
|
||||
run: |
|
||||
dotnet nuget add source --name git_sh-edraft_de --username ${{ secrets.CI_USERNAME }} --password ${{ secrets.CI_ACCESS_TOKEN }} --store-password-in-clear-text https://git.sh-edraft.de/api/packages/sh-edraft.de/nuget/index.json
|
||||
|
||||
- name: Upload to Gitea Generic Package Registry
|
||||
- name: Upload
|
||||
run: |
|
||||
cd sh.actions/sh.actions.package-cleanup
|
||||
curl -X PUT \
|
||||
-H "Authorization: token ${{ secrets.CI_ACCESS_TOKEN }}" \
|
||||
-T publish/linux-x64/sh.actions.package-cleanup \
|
||||
"https://git.sh-edraft.de/api/packages/sh-edraft.de/generic/package-cleanup/$(cat ../../version.txt)/package-cleanup-linux-x64"
|
||||
VERSION_FIXED=$(cat ../../version.txt | sed 's/\.0\([0-9]\)/.\1/g' | sed 's/\.0-/-/g')
|
||||
dotnet nuget push --source git_sh-edraft_de bin/Release/sh.actions.package-cleanup.$VERSION_FIXED.nupkg
|
||||
|
||||
# test:
|
||||
# runs-on: [runner]
|
||||
# needs: build
|
||||
# container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
|
||||
# steps:
|
||||
# - name: Download and test package-cleanup tool
|
||||
# shell: bash
|
||||
# run: |
|
||||
# # Create tools directory
|
||||
# mkdir -p .tools
|
||||
test:
|
||||
runs-on: [runner]
|
||||
needs: build
|
||||
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
|
||||
steps:
|
||||
- name: Install package-cleanup tool
|
||||
shell: bash
|
||||
run: |
|
||||
dotnet tool install \
|
||||
--tool-path .tools \
|
||||
sh.actions.package-cleanup \
|
||||
--add-source https://git.sh-edraft.de/api/packages/sh-edraft.de/nuget/index.json
|
||||
|
||||
# # Download the Linux x64 version (since we're running on Linux)
|
||||
# VERSION=$(curl -s https://git.sh-edraft.de/api/packages/sh-edraft.de/generic/package-cleanup | jq -r '.versions[0].name')
|
||||
# curl -L -H "Authorization: token ${{ secrets.CI_ACCESS_TOKEN }}" \
|
||||
# -o .tools/package-cleanup \
|
||||
# "https://git.sh-edraft.de/api/packages/sh-edraft.de/generic/package-cleanup/$VERSION/package-cleanup-linux-x64"
|
||||
|
||||
# # Make executable
|
||||
# chmod +x .tools/package-cleanup
|
||||
|
||||
# - name: Run package-cleanup
|
||||
# shell: bash
|
||||
# run: |
|
||||
# ./.tools/package-cleanup
|
||||
- name: Run package-cleanup
|
||||
shell: bash
|
||||
run: |
|
||||
./.tools/package-cleanup
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
namespace sh.actions.package_cleanup.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Konfiguration für Gitea-Verbindung
|
||||
/// </summary>
|
||||
public class GiteaConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Basis-URL der Gitea-Instanz (z.B. https://git.example.com)
|
||||
/// </summary>
|
||||
public string GiteaUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// API-Token für Authentifizierung
|
||||
/// </summary>
|
||||
public string ApiToken { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Owner/Username des Pakets
|
||||
/// </summary>
|
||||
public string Owner { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
namespace sh.actions.package_cleanup.Models;
|
||||
|
||||
public class GiteaPackage
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string Version { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty;
|
||||
public DateTime CreatedAt { get; set; }
|
||||
}
|
||||
@@ -1,65 +1,2 @@
|
||||
// See https://aka.ms/new-console-template for more information
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using sh.actions.package_cleanup.Models;
|
||||
using sh.actions.package_cleanup.Service;
|
||||
|
||||
Console.WriteLine("Hello, World!");
|
||||
//
|
||||
// // Setup Dependency Injection
|
||||
// var services = new ServiceCollection();
|
||||
//
|
||||
// // Add Logging
|
||||
// services.AddLogging(builder =>
|
||||
// builder.AddConsole()
|
||||
// .SetMinimumLevel(LogLevel.Information)
|
||||
// );
|
||||
//
|
||||
// // Load configuration from environment variables or appsettings
|
||||
// var giteaUrl = Environment.GetEnvironmentVariable("GITEA_URL") ?? "https://git.example.com";
|
||||
// var apiToken = Environment.GetEnvironmentVariable("GITEA_API_TOKEN") ?? string.Empty;
|
||||
// var owner = Environment.GetEnvironmentVariable("GITEA_OWNER") ?? "sh-edraft";
|
||||
//
|
||||
// var giteaConfig = new GiteaConfig
|
||||
// {
|
||||
// GiteaUrl = giteaUrl,
|
||||
// ApiToken = apiToken,
|
||||
// Owner = owner
|
||||
// };
|
||||
//
|
||||
// services.AddSingleton(giteaConfig);
|
||||
//
|
||||
// // Add HttpClient
|
||||
// services.AddHttpClient<IGiteaPackageService, GiteaPackageService>();
|
||||
//
|
||||
// // Build service provider
|
||||
// var serviceProvider = services.BuildServiceProvider();
|
||||
//
|
||||
// try
|
||||
// {
|
||||
// // Get the service and execute
|
||||
// var packageService = serviceProvider.GetRequiredService<IGiteaPackageService>();
|
||||
// var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
|
||||
//
|
||||
// logger.LogInformation("Starting package cleanup tool");
|
||||
// logger.LogInformation("Gitea URL: {GiteaUrl}", giteaUrl);
|
||||
// logger.LogInformation("Owner: {Owner}", owner);
|
||||
//
|
||||
// using var cts = new CancellationTokenSource();
|
||||
// var packages = await packageService.GetPackagesByOwnerAsync(cts.Token);
|
||||
//
|
||||
// logger.LogInformation("Retrieved {Count} packages", packages.Count());
|
||||
//
|
||||
// foreach (var package in packages)
|
||||
// {
|
||||
// logger.LogInformation("Package: {Name} (Version: {Version})", package.Name, package.Version);
|
||||
// }
|
||||
//
|
||||
// logger.LogInformation("Package cleanup tool completed successfully");
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
|
||||
// logger.LogError(ex, "Application error");
|
||||
// Environment.Exit(1);
|
||||
// }
|
||||
Console.WriteLine("Hello, World! from ci");
|
||||
|
||||
1
sh.actions/sh.actions.package-cleanup/README.md
Normal file
1
sh.actions/sh.actions.package-cleanup/README.md
Normal file
@@ -0,0 +1 @@
|
||||
# Gitea package cleanup
|
||||
@@ -1,48 +1,6 @@
|
||||
namespace sh.actions.package_cleanup.Service;
|
||||
|
||||
using System.Net.Http.Json;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using sh.actions.package_cleanup.Models;
|
||||
|
||||
public class GiteaPackageService(HttpClient httpClient, GiteaConfig config, ILogger<GiteaPackageService> logger)
|
||||
: IGiteaPackageService
|
||||
public class GiteaPackageService : IGiteaPackageService
|
||||
{
|
||||
public async Task<IEnumerable<GiteaPackage>> GetPackagesByOwnerAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
var url = $"{config.GiteaUrl.TrimEnd('/')}/api/v1/packages/{config.Owner}";
|
||||
|
||||
logger.LogInformation("Fetching packages from Gitea: {Url}", url);
|
||||
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
||||
|
||||
// Add authentication if token is provided
|
||||
if (!string.IsNullOrEmpty(config.ApiToken))
|
||||
{
|
||||
request.Headers.Add("Authorization", $"token {config.ApiToken}");
|
||||
}
|
||||
|
||||
var response = await httpClient.SendAsync(request, cancellationToken);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
var packages =
|
||||
await response.Content.ReadFromJsonAsync<List<GiteaPackage>>(cancellationToken: cancellationToken)
|
||||
?? new List<GiteaPackage>();
|
||||
|
||||
logger.LogInformation("Successfully fetched {Count} packages", packages.Count);
|
||||
|
||||
return packages;
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
logger.LogError(ex, "Error fetching packages from Gitea");
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Unexpected error fetching packages");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
namespace sh.actions.package_cleanup.Service;
|
||||
|
||||
using sh.actions.package_cleanup.Models;
|
||||
|
||||
public interface IGiteaPackageService
|
||||
{
|
||||
Task<IEnumerable<GiteaPackage>> GetPackagesByOwnerAsync(CancellationToken cancellationToken = default);
|
||||
|
||||
}
|
||||
@@ -6,26 +6,29 @@
|
||||
<RootNamespace>sh.actions.package_cleanup</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version Condition="'$(Version)' == ''">0.0.1</Version>
|
||||
|
||||
<!-- Single File Publishing -->
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
<SelfContained>true</SelfContained>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||
<PublishTrimmed>true</PublishTrimmed>
|
||||
<TrimMode>full</TrimMode>
|
||||
<!-- NuGet Package Information -->
|
||||
<PackAsTool>true</PackAsTool>
|
||||
<ToolCommandName>package-cleanup</ToolCommandName>
|
||||
|
||||
<PackageId>sh.actions.package-cleanup</PackageId>
|
||||
<Version Condition="'$(Version)' == ''">0.0.1</Version>
|
||||
<Title>sh-edraft gitea package cleanup</Title>
|
||||
<Description>Tool to cleanup gitea packages</Description>
|
||||
<Authors>edraft</Authors>
|
||||
<PackageProjectUrl>https://git.sh-edraft.de/sh-edraft.de/actions</PackageProjectUrl>
|
||||
<RepositoryUrl>https://git.sh-edraft.de/sh-edraft.de/actions</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="10.0.0" />
|
||||
<PackageReference Include="System.Net.Http.Json" Version="10.0.0" />
|
||||
<None Include="README.md" Pack="true" PackagePath="\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user