4 Commits
Author SHA1 Message Date
DragonSlayer_14 c20df75bc4 Merge pull request 'Merge testing in main: Release 1.0.5' (#11) from testing into main
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Skipped
Security Scans / Trivy & OSV-Scanner (push) Successful in 58s
Main Release & Publish / Build, Publish Crate to Gitea Registry & Create Release (push) Successful in 1m33s
TruffleHog Secret Scan / TruffleHog (push) Successful in 20s
Reviewed-on: #11
2026-09-12 22:59:03 +00:00
DragonSlayer_14 45d571c487 Merge pull request 'Merge dev in testing: Feat: Fügt Security-Scan-Skripte, Renovate-Konfiguration und CI/CD-Workflows hinzu; Version auf 1.0.5 erhöht' (#10) from dev into testing
Unit-Tests / Unit-Tests (pull_request) Skipped
Security Scans / Trivy & OSV-Scanner (push) Successful in 35s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 19s
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 56s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 35s
TruffleHog Secret Scan / TruffleHog (push) Successful in 29s
Reviewed-on: #10
2026-09-12 22:57:20 +00:00
DragonSlayer_14 ebdeb6dbd0 Merge pull request 'Merge testing in main: Release 1.0.4' (#9) from testing into main
Main Release & Publish / Build, Publish Crate to Gitea Registry & Create Release (push) Successful in 31s
Reviewed-on: #9
2026-08-26 18:27:03 +00:00
DragonSlayer_14 4972318aff Merge pull request 'Merge dev in testing: Ermittelt Programmnamen automatisch aus der program-ctdra-Crate' (#8) from dev into testing
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 32s
Reviewed-on: #8
2026-08-26 18:24:54 +00:00
7 changed files with 5 additions and 210 deletions
-35
View File
@@ -6,43 +6,8 @@ on:
- main - main
jobs: jobs:
detect-changes:
name: Erkenne relevante Code-Änderungen
runs-on: ubuntu-latest
outputs:
code_changed: ${{ steps.filter.outputs.code }}
version_exists: ${{ steps.check-version.outputs.exists }}
steps:
- name: Checkout Repository
uses: actions/checkout@v7
- name: Prüfe auf Änderungen am Programmcode
uses: dorny/paths-filter@v4
id: filter
with:
filters: |
code:
- 'src/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'scripts/**'
- '.cargo/**'
- '.gitea/workflows/main.yaml'
- name: Prüfe ob Version bereits in der Registry existiert
id: check-version
if: steps.filter.outputs.code == 'true'
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO_OWNER: ${{ gitea.repository_owner || github.repository_owner }}
TOKEN: ${{ secrets.PACKAGE_TOKEN || secrets.RELEASE_TOKEN || secrets.PUBLISH_TOKEN || secrets.API_TOKEN || secrets.PAT_TOKEN || secrets.CUSTOM_TOKEN || secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN || github.token }}
run: |
python3 scripts/check-version-published.py
release-and-publish: release-and-publish:
name: Build, Publish Crate to Gitea Registry & Create Release name: Build, Publish Crate to Gitea Registry & Create Release
needs: detect-changes
if: needs.detect-changes.outputs.code_changed == 'true' && needs.detect-changes.outputs.version_exists != 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
-1
View File
@@ -19,7 +19,6 @@ jobs:
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }} RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
RENOVATE_REPOSITORIES: ${{ gitea.repository || github.repository }} RENOVATE_REPOSITORIES: ${{ gitea.repository || github.repository }}
RENOVATE_AUTODISCOVER: "false" RENOVATE_AUTODISCOVER: "false"
RENOVATE_ALLOW_CUSTOM_CRATE_REGISTRIES: "true"
RENOVATE_GIT_AUTHOR: "Renovate Bot <renovate-bot@creativedragonslayer.de>" RENOVATE_GIT_AUTHOR: "Renovate Bot <renovate-bot@creativedragonslayer.de>"
RENOVATE_HOST_RULES: >- RENOVATE_HOST_RULES: >-
[{"hostType":"cargo","matchHost":"${{ gitea.server_url || github.server_url }}","token":"${{ secrets.RENOVATE_TOKEN }}"}] [{"hostType":"cargo","matchHost":"${{ gitea.server_url || github.server_url }}","token":"${{ secrets.RENOVATE_TOKEN }}"}]
-24
View File
@@ -6,32 +6,8 @@ on:
- testing - testing
jobs: jobs:
detect-changes:
name: Erkenne relevante Code-Änderungen
runs-on: ubuntu-latest
outputs:
code_changed: ${{ steps.filter.outputs.code }}
steps:
- name: Checkout Repository
uses: actions/checkout@v7
- name: Prüfe auf Änderungen am Programmcode
uses: dorny/paths-filter@v4
id: filter
with:
filters: |
code:
- 'src/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'scripts/**'
- '.cargo/**'
- '.gitea/workflows/testing.yaml'
build-and-preview: build-and-preview:
name: Build, Check & Create Preview Release name: Build, Check & Create Preview Release
needs: detect-changes
if: needs.detect-changes.outputs.code_changed == 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
-84
View File
@@ -1,84 +0,0 @@
name: Auto Patch-Version-Bump (Dev → Testing PR)
on:
pull_request:
types: [opened]
branches:
- testing
jobs:
detect-changes:
name: Erkenne relevante Änderungen im PR
runs-on: ubuntu-latest
if: ${{ (gitea.head_ref || github.head_ref) == 'dev' }}
outputs:
code_changed: ${{ steps.filter.outputs.code }}
steps:
- name: Checkout Dev-Branch (PR-Head)
uses: actions/checkout@v7
with:
ref: ${{ gitea.head_ref || github.head_ref }}
fetch-depth: 0
- name: Prüfe auf Änderungen an Cargo.toml, Cargo.lock oder src/
uses: dorny/paths-filter@v4
id: filter
with:
base: ${{ gitea.base_ref || github.base_ref }}
filters: |
code:
- 'Cargo.toml'
- 'Cargo.lock'
- 'src/**'
bump-version:
name: Patch-Version erhöhen & auf Dev pushen
needs: detect-changes
if: needs.detect-changes.outputs.code_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout Dev-Branch (PR-Head)
uses: actions/checkout@v7
with:
ref: ${{ gitea.head_ref || github.head_ref }}
fetch-depth: 0
token: ${{ secrets.PACKAGE_TOKEN || secrets.RELEASE_TOKEN || secrets.PUBLISH_TOKEN || secrets.API_TOKEN || secrets.PAT_TOKEN || secrets.CUSTOM_TOKEN || secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN || github.token }}
- name: Ermittle Cargo-Version auf testing & dev
id: versions
run: |
git fetch origin testing --depth=1
TESTING_VERSION="$(git show origin/testing:Cargo.toml | sed -n 's/^version = "\(.*\)"/\1/p' | head -n1)"
DEV_VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
echo "Version auf testing: ${TESTING_VERSION} / Version auf dev: ${DEV_VERSION}"
echo "testing_version=${TESTING_VERSION}" >> "$GITHUB_OUTPUT"
echo "dev_version=${DEV_VERSION}" >> "$GITHUB_OUTPUT"
- name: Patch-Version um 1 erhöhen (Cargo.toml & Cargo.lock)
if: steps.versions.outputs.testing_version == steps.versions.outputs.dev_version
run: |
VERSION="${{ steps.versions.outputs.dev_version }}"
MAJOR="$(echo "$VERSION" | cut -d. -f1)"
MINOR="$(echo "$VERSION" | cut -d. -f2)"
PATCH="$(echo "$VERSION" | cut -d. -f3)"
NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"
echo "Erhöhe Version: ${VERSION} -> ${NEW_VERSION}"
sed -i "0,/^version = \"${VERSION}\"/s//version = \"${NEW_VERSION}\"/" Cargo.toml
PACKAGE_NAME="$(sed -n 's/^name = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
awk -v new="$NEW_VERSION" -v pkg="$PACKAGE_NAME" '
found_name && /^version = "/ {
print "version = \"" new "\""
found_name = 0
next
}
$0 == "name = \"" pkg "\"" { found_name = 1 }
{ print }
' Cargo.lock > Cargo.lock.tmp && mv Cargo.lock.tmp Cargo.lock
git config user.name "Gitea-Bot"
git config user.email "no-reply@creativedragonslayer.de"
git add Cargo.toml Cargo.lock
git commit -m "Chore: Erhöht Patch-Version auf ${NEW_VERSION} für Promotion nach testing"
git push origin HEAD:${{ gitea.head_ref || github.head_ref }}
Generated
+4 -4
View File
@@ -96,9 +96,9 @@ dependencies = [
[[package]] [[package]]
name = "program-ctdra" name = "program-ctdra"
version = "1.0.1" version = "1.0.0"
source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"
checksum = "528d5771916f74bdffb77ad60ea00c0ae4bd85f9a84e920cd65730a082133d67" checksum = "54f20af67f90bf6d10697dd77bb4beb41dafad7fe0fb46aacfc81ad45a8e48bd"
[[package]] [[package]]
name = "quote" name = "quote"
@@ -150,9 +150,9 @@ dependencies = [
[[package]] [[package]]
name = "sudo-ctdra" name = "sudo-ctdra"
version = "1.0.1" version = "1.0.0"
source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"
checksum = "20e576be60eb2050d475d0fbe46f0d09462ba9985ab55c7833e0c2e6d116d341" checksum = "2c2746122bbe36f821de70db3ca4ad24edfb77118fc6a6bc7693082b50d23e5f"
dependencies = [ dependencies = [
"libc", "libc",
] ]
+1
View File
@@ -3,6 +3,7 @@
"extends": ["config:recommended"], "extends": ["config:recommended"],
"timezone": "Europe/Berlin", "timezone": "Europe/Berlin",
"schedule": ["before 6am on monday"], "schedule": ["before 6am on monday"],
"allowCustomCrateRegistries": true,
"baseBranchPatterns": [ "baseBranchPatterns": [
"dev" "dev"
], ],
-62
View File
@@ -1,62 +0,0 @@
#!/usr/bin/env python3
"""Prüft, ob die aktuelle Crate-Version bereits in der Gitea Cargo-Registry existiert.
Liest Name und Version aus Cargo.toml und fragt die Gitea Package-API ab.
Das Ergebnis wird als Step-Output "exists" (true/false) in GITHUB_OUTPUT
geschrieben, damit der Release/Publish-Job komplett übersprungen werden kann,
statt erst nach Build & Tests an einem "Version existiert bereits"-Fehler der
Registry zu scheitern.
"""
import os
import re
import urllib.error
import urllib.request
def read_cargo_field(field, path="Cargo.toml"):
pattern = re.compile(rf'^{field}\s*=\s*"(.*)"')
with open(path) as f:
for line in f:
match = pattern.match(line.strip())
if match:
return match.group(1)
raise SystemExit(f"Feld '{field}' nicht in {path} gefunden.")
def version_exists(gitea_url, owner, name, version, token):
url = f"{gitea_url}/api/v1/packages/{owner}/cargo/{name}/{version}"
req = urllib.request.Request(url, method="GET")
req.add_header("Authorization", f"token {token}")
try:
with urllib.request.urlopen(req, timeout=10) as resp:
return resp.status == 200
except urllib.error.HTTPError as e:
if e.code == 404:
return False
raise
def main():
gitea_url = os.environ["GITEA_URL"].strip().rstrip("/")
owner = os.environ["REPO_OWNER"].strip()
token = os.environ["TOKEN"].strip()
github_output = os.environ["GITHUB_OUTPUT"]
name = read_cargo_field("name")
version = read_cargo_field("version")
print(f"Prüfe {name}@{version} in der Gitea Cargo Registry...")
exists = version_exists(gitea_url, owner, name, version, token)
if exists:
print(f"Version {version} existiert bereits in der Registry. Release/Publish wird übersprungen.")
else:
print(f"Version {version} ist neu.")
with open(github_output, "a") as f:
f.write(f"exists={'true' if exists else 'false'}\n")
if __name__ == "__main__":
main()