4 Commits
Author SHA1 Message Date
DragonSlayer_14 96b63488e3 Merge pull request 'Merge dev in testing: Aktualisiert Workflows' (#9) from dev into testing
Unit-Tests / Unit-Tests (pull_request) Skipped
Testing Build, Check & Preview Release / Erkenne relevante Code-Änderungen (push) Successful in 12s
Auto-PR (Testing → Main) / Erstelle automatisch PR von testing nach main (push) Successful in 18s
Security Scans / Trivy & OSV-Scanner (push) Successful in 43s
TruffleHog Secret Scan / TruffleHog (push) Successful in 26s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 28s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 55s
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 1m3s
Reviewed-on: #9
2026-09-13 12:41:12 +00:00
DragonSlayer_14 5f4def5190 Merge pull request 'Merge dev in testing: Passt Workflows an' (#6) from dev into testing
Testing Build, Check & Preview Release / Erkenne relevante Code-Änderungen (push) Successful in 10s
Unit-Tests / Unit-Tests (pull_request) Skipped
TruffleHog Secret Scan / TruffleHog (push) Successful in 20s
Security Scans / Trivy & OSV-Scanner (push) Successful in 40s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 24s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 51s
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 1m0s
Reviewed-on: #6
2026-09-13 10:13:37 +00:00
DragonSlayer_14 ebf00fd1b0 Merge pull request 'Merge dev in testing: Feat: Fügt CI/CD-Workflows, Sicherheitsprüfungen und Abhängigkeitsmanagement hinzu.' (#3) from dev into testing
Security Scans / Trivy & OSV-Scanner (push) Successful in 38s
Unit-Tests / Unit-Tests (pull_request) Skipped
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 40s
TruffleHog Secret Scan / TruffleHog (push) Successful in 16s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 16s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 22s
Reviewed-on: #3
2026-09-12 22:54:42 +00:00
DragonSlayer_14 f906ec3e6f Merge pull request 'Merge dev in testing: Feat: Erstellt die Crate' (#1) from dev into testing
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 18s
Reviewed-on: #1
2026-08-26 17:08:35 +00:00
10 changed files with 54 additions and 332 deletions
+9 -7
View File
@@ -24,14 +24,16 @@ jobs:
components: clippy, rustfmt components: clippy, rustfmt
cache: false cache: false
# Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit (Dateien
# werden wiederhergestellt), Cargo kompiliert die Abhängigkeiten aber oft trotzdem neu:
# Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien dieselbe
# Mtime, wodurch Cargos Fingerprinting nicht mehr zuverlässig erkennen kann, was
# älter/neuer als was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist
# genau dafür gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore).
- name: Cache Cargo-Abhängigkeiten & Build-Artefakte - name: Cache Cargo-Abhängigkeiten & Build-Artefakte
uses: Swatinem/rust-cache@v2 uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-
- name: Formatierung automatisch beheben - name: Formatierung automatisch beheben
run: cargo fmt run: cargo fmt
+9 -7
View File
@@ -54,14 +54,16 @@ jobs:
toolchain: stable toolchain: stable
cache: false cache: false
# Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit (Dateien
# werden wiederhergestellt), Cargo kompiliert die Abhängigkeiten aber oft trotzdem neu:
# Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien dieselbe
# Mtime, wodurch Cargos Fingerprinting nicht mehr zuverlässig erkennen kann, was
# älter/neuer als was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist
# genau dafür gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore).
- name: Cache Cargo-Abhängigkeiten & Build-Artefakte - name: Cache Cargo-Abhängigkeiten & Build-Artefakte
uses: Swatinem/rust-cache@v2 uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-
- name: Run Tests - name: Run Tests
run: | run: |
-91
View File
@@ -1,91 +0,0 @@
name: Nightly Auto-Merge (Dev → Nightly)
on:
schedule:
# Gitea Actions interpretiert 'schedule'-Cron standardmaessig in der lokalen
# Zeitzone des Gitea-Servers (anders als GitHub Actions, das immer UTC nutzt).
# Das CRON_TZ-Praefix ist eine Gitea-Erweiterung und legt die Zeitzone explizit
# und DST-sicher fest, unabhaengig von der Server-Konfiguration.
- cron: "CRON_TZ=Europe/Berlin 0 9 * * *"
workflow_dispatch:
jobs:
merge-dev-into-nightly:
name: Erstelle & merge automatisch PR von dev nach nightly
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v7
with:
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: Stelle sicher, dass der nightly-Branch existiert
run: |
git fetch origin dev
if git ls-remote --exit-code --heads origin nightly > /dev/null 2>&1; then
echo "nightly-Branch existiert bereits."
else
echo "nightly-Branch existiert noch nicht, erstelle ihn initial von dev..."
git push origin origin/dev:refs/heads/nightly
fi
- name: Prüfe auf Unterschiede zwischen dev und nightly
id: diff
run: |
git fetch origin nightly
if git diff --quiet origin/nightly origin/dev; then
echo "Keine Unterschiede zwischen dev und nightly, überspringe."
echo "has_changes=false" >> "$GITHUB_OUTPUT"
else
echo "has_changes=true" >> "$GITHUB_OUTPUT"
fi
- name: Prüfe auf bereits offenen PR nach nightly
id: check_pr
if: steps.diff.outputs.has_changes == 'true'
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO: ${{ gitea.repository || github.repository }}
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: |
OPEN_PRS=$(curl -s -H "Authorization: token ${TOKEN}" "${GITEA_URL}/api/v1/repos/${REPO}/pulls?state=open&limit=50")
PR_NUMBER=$(echo "$OPEN_PRS" | jq -r '[.[] | select(.base.ref == "nightly" and .head.ref == "dev")][0].number // empty')
echo "Bereits offener dev→nightly PR: ${PR_NUMBER:-keiner}"
echo "pr_number=${PR_NUMBER}" >> "$GITHUB_OUTPUT"
- name: Erstelle PR (dev -> nightly)
id: create_pr
if: steps.diff.outputs.has_changes == 'true' && steps.check_pr.outputs.pr_number == ''
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO: ${{ gitea.repository || github.repository }}
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: |
DATE="$(date -u +%Y-%m-%d)"
PAYLOAD=$(jq -n --arg title "Nightly-Build: Merge dev in nightly (${DATE})" --arg head "dev" --arg base "nightly" \
'{title: $title, head: $head, base: $base}')
RESP=$(curl -f -s -S -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \
-d "$PAYLOAD" \
"${GITEA_URL}/api/v1/repos/${REPO}/pulls")
PR_NUMBER=$(echo "$RESP" | jq -r '.number')
echo "PR #${PR_NUMBER} erstellt."
echo "pr_number=${PR_NUMBER}" >> "$GITHUB_OUTPUT"
- name: Merge PR automatisch
if: steps.diff.outputs.has_changes == 'true'
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO: ${{ gitea.repository || github.repository }}
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 }}
PR_NUMBER: ${{ steps.create_pr.outputs.pr_number || steps.check_pr.outputs.pr_number }}
run: |
echo "Merge PR #${PR_NUMBER} automatisch (dev -> nightly)..."
curl -f -s -S -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"Do": "merge"}' \
"${GITEA_URL}/api/v1/repos/${REPO}/pulls/${PR_NUMBER}/merge"
echo "PR #${PR_NUMBER} erfolgreich gemerged."
-97
View File
@@ -1,97 +0,0 @@
name: Nightly Build & Publish
on:
push:
branches:
- nightly
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/nightly.yaml'
build-and-publish:
name: Build & Publish Nightly-Crate zur Gitea Registry
needs: detect-changes
if: needs.detect-changes.outputs.code_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v7
- name: Install Rust Toolchain
uses: actions-rust-lang/setup-rust-toolchain@v2
with:
toolchain: stable
cache: false
- name: Cache Cargo-Abhängigkeiten & Build-Artefakte
uses: Swatinem/rust-cache@v2
- name: Run Tests
run: |
cargo test
- name: Compiler Check
run: |
cargo check --all-targets
# Nightly-Builds duerfen nie als regulaeres Update erscheinen: Ein SemVer-Pre-Release-
# Suffix (-nightly.<Zeitstempel>) sorgt dafuer, dass Renovates Standardverhalten
# (ignoreUnstable: true) diese Version automatisch ignoriert, solange die Basis-Version
# in Cargo.toml selbst kein Pre-Release ist. Die Aenderung ist rein fuer den Build-
# Workspace bestimmt und wird nie zurueck in den Branch committet.
- name: Ermittle & setze Nightly-Version (temporär, wird nicht committet)
id: nightly_version
run: |
BASE_VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
TIMESTAMP="$(date -u +%Y%m%d%H%M)"
NIGHTLY_VERSION="${BASE_VERSION}-nightly.${TIMESTAMP}"
echo "Basis-Version: ${BASE_VERSION} -> Nightly-Version: ${NIGHTLY_VERSION}"
sed -i "0,/^version = \"${BASE_VERSION}\"/s//version = \"${NIGHTLY_VERSION}\"/" Cargo.toml
echo "version=${NIGHTLY_VERSION}" >> "$GITHUB_OUTPUT"
- name: Package Crate
run: |
cargo package --allow-dirty
- name: Publish Nightly-Crate zur Gitea Package Registry
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: |
mkdir -p ~/.cargo
cat <<EOF > ~/.cargo/config.toml
[registries.gitea]
index = "sparse+${GITEA_URL}/api/packages/${REPO_OWNER}/cargo/"
EOF
cat <<EOF > ~/.cargo/credentials.toml
[registries.gitea]
token = "Bearer ${TOKEN}"
EOF
export CARGO_REGISTRIES_GITEA_INDEX="sparse+${GITEA_URL}/api/packages/${REPO_OWNER}/cargo/"
export CARGO_REGISTRIES_GITEA_TOKEN="Bearer ${TOKEN}"
echo "Veröffentliche Nightly-Crate ${{ steps.nightly_version.outputs.version }} in Gitea Cargo Package Registry..."
cargo publish --registry gitea --allow-dirty
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
renovate: renovate:
name: Dependency-Updates prüfen & Pull Requests erstellen name: Dependency-Updates prüfen & Pull Requests erstellen
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:44.103.6 container: ghcr.io/renovatebot/renovate:44.83.0
steps: steps:
- name: Renovate ausführen - name: Renovate ausführen
run: renovate run: renovate
+6 -19
View File
@@ -8,7 +8,7 @@ on:
- dev - dev
pull_request: pull_request:
schedule: schedule:
- cron: "CRON_TZ=Europe/Berlin 0 5 * * 1" - cron: "0 5 * * 1"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,20 +17,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
TRIVY_VERSION: "0.74.0" TRIVY_VERSION: "0.74.0"
OSV_SCANNER_VERSION: "2.6.0" OSV_SCANNER_VERSION: "2.5.1"
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v7 uses: actions/checkout@v7
- name: Architektur des Runners ermitteln
id: detect-arch
run: |
case "$(uname -m)" in
x86_64) echo "arch=amd64" >> "$GITHUB_OUTPUT" ;;
aarch64|arm64) echo "arch=arm64" >> "$GITHUB_OUTPUT" ;;
*) echo "Nicht unterstützte Architektur: $(uname -m)" >&2; exit 1 ;;
esac
- name: Lokales bin-Verzeichnis zum PATH hinzufügen - name: Lokales bin-Verzeichnis zum PATH hinzufügen
run: | run: |
mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/bin"
@@ -41,17 +32,13 @@ jobs:
uses: actions/cache@v6 uses: actions/cache@v6
with: with:
path: ~/.local/bin/trivy path: ~/.local/bin/trivy
key: trivy-bin-${{ runner.os }}-${{ steps.detect-arch.outputs.arch }}-${{ env.TRIVY_VERSION }} key: trivy-bin-${{ runner.os }}-${{ env.TRIVY_VERSION }}
- name: Install Trivy - name: Install Trivy
if: steps.cache-trivy.outputs.cache-hit != 'true' if: steps.cache-trivy.outputs.cache-hit != 'true'
run: | run: |
case "${{ steps.detect-arch.outputs.arch }}" in
amd64) TRIVY_ARCH="64bit" ;;
arm64) TRIVY_ARCH="ARM64" ;;
esac
curl -fsSL -o trivy.tar.gz \ curl -fsSL -o trivy.tar.gz \
"https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-${TRIVY_ARCH}.tar.gz" "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz"
tar -xzf trivy.tar.gz trivy tar -xzf trivy.tar.gz trivy
chmod +x trivy chmod +x trivy
mv trivy "$HOME/.local/bin/trivy" mv trivy "$HOME/.local/bin/trivy"
@@ -83,13 +70,13 @@ jobs:
uses: actions/cache@v6 uses: actions/cache@v6
with: with:
path: ~/.local/bin/osv-scanner path: ~/.local/bin/osv-scanner
key: osv-scanner-bin-${{ runner.os }}-${{ steps.detect-arch.outputs.arch }}-${{ env.OSV_SCANNER_VERSION }} key: osv-scanner-bin-${{ runner.os }}-${{ env.OSV_SCANNER_VERSION }}
- name: Install OSV-Scanner - name: Install OSV-Scanner
if: steps.cache-osv-scanner.outputs.cache-hit != 'true' if: steps.cache-osv-scanner.outputs.cache-hit != 'true'
run: | run: |
curl -fsSL -o "$HOME/.local/bin/osv-scanner" \ curl -fsSL -o "$HOME/.local/bin/osv-scanner" \
"https://github.com/google/osv-scanner/releases/download/v${OSV_SCANNER_VERSION}/osv-scanner_linux_${{ steps.detect-arch.outputs.arch }}" "https://github.com/google/osv-scanner/releases/download/v${OSV_SCANNER_VERSION}/osv-scanner_linux_amd64"
chmod +x "$HOME/.local/bin/osv-scanner" chmod +x "$HOME/.local/bin/osv-scanner"
- name: Run OSV-Scanner - name: Run OSV-Scanner
+11 -54
View File
@@ -43,14 +43,16 @@ jobs:
toolchain: stable toolchain: stable
cache: false cache: false
# Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit (Dateien
# werden wiederhergestellt), Cargo kompiliert die Abhängigkeiten aber oft trotzdem neu:
# Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien dieselbe
# Mtime, wodurch Cargos Fingerprinting nicht mehr zuverlässig erkennen kann, was
# älter/neuer als was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist
# genau dafür gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore).
- name: Cache Cargo-Abhängigkeiten & Build-Artefakte - name: Cache Cargo-Abhängigkeiten & Build-Artefakte
uses: Swatinem/rust-cache@v2 uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-
- name: Run Tests - name: Run Tests
run: | run: |
@@ -60,54 +62,9 @@ jobs:
run: | run: |
cargo check --all-targets cargo check --all-targets
- name: Ermittle Basis-Version (für Release-Tag)
id: base_version
run: |
BASE_VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
echo "version=${BASE_VERSION}" >> "$GITHUB_OUTPUT"
# Testing-Builds duerfen nie als regulaeres Update erscheinen: Ein SemVer-Pre-Release-
# Suffix (-testing.<Zeitstempel>) sorgt dafuer, dass Renovates Standardverhalten
# (ignoreUnstable: true) diese Version automatisch ignoriert, solange die Basis-Version
# in Cargo.toml selbst kein Pre-Release ist. Die Aenderung ist rein fuer den Build-
# Workspace bestimmt und wird nie zurueck in den Branch committet; der Release-Tag
# weiter unten nutzt bewusst die zuvor ermittelte Basis-Version, damit er stabil bleibt.
- name: Ermittle & setze Testing-Version (temporär, wird nicht committet)
id: testing_version
run: |
BASE_VERSION="${{ steps.base_version.outputs.version }}"
TIMESTAMP="$(date -u +%Y%m%d%H%M)"
TESTING_VERSION="${BASE_VERSION}-testing.${TIMESTAMP}"
echo "Basis-Version: ${BASE_VERSION} -> Testing-Version: ${TESTING_VERSION}"
sed -i "0,/^version = \"${BASE_VERSION}\"/s//version = \"${TESTING_VERSION}\"/" Cargo.toml
echo "version=${TESTING_VERSION}" >> "$GITHUB_OUTPUT"
- name: Package Crate - name: Package Crate
run: | run: |
cargo package --allow-dirty cargo package
- name: Publish Testing-Crate zur Gitea Package Registry
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: |
mkdir -p ~/.cargo
cat <<EOF > ~/.cargo/config.toml
[registries.gitea]
index = "sparse+${GITEA_URL}/api/packages/${REPO_OWNER}/cargo/"
EOF
cat <<EOF > ~/.cargo/credentials.toml
[registries.gitea]
token = "Bearer ${TOKEN}"
EOF
export CARGO_REGISTRIES_GITEA_INDEX="sparse+${GITEA_URL}/api/packages/${REPO_OWNER}/cargo/"
export CARGO_REGISTRIES_GITEA_TOKEN="Bearer ${TOKEN}"
echo "Veröffentliche Testing-Crate ${{ steps.testing_version.outputs.version }} in Gitea Cargo Package Registry..."
cargo publish --registry gitea --allow-dirty
- name: Create Gitea Pre-Release and Upload Assets - name: Create Gitea Pre-Release and Upload Assets
env: env:
@@ -116,7 +73,7 @@ jobs:
REPO_NAME: ${{ gitea.repository_name || github.event.repository.name }} REPO_NAME: ${{ gitea.repository_name || github.event.repository.name }}
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 }} 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: | run: |
VERSION="${{ steps.base_version.outputs.version }}" VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
TAG_NAME="v${VERSION}-preview" TAG_NAME="v${VERSION}-preview"
RELEASE_TITLE="Preview Release ${TAG_NAME}" RELEASE_TITLE="Preview Release ${TAG_NAME}"
RELEASE_NOTES="Automatisches Preview-Release für ${REPO_NAME} Crate ${VERSION} (Branch: Testing)." RELEASE_NOTES="Automatisches Preview-Release für ${REPO_NAME} Crate ${VERSION} (Branch: Testing)."
+4 -13
View File
@@ -4,7 +4,7 @@ on:
push: push:
pull_request: pull_request:
schedule: schedule:
- cron: "CRON_TZ=Europe/Berlin 0 6 * * 1" - cron: "0 6 * * 1"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -12,22 +12,13 @@ jobs:
name: TruffleHog name: TruffleHog
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
TRUFFLEHOG_VERSION: "3.97.5" TRUFFLEHOG_VERSION: "3.97.4"
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v7 uses: actions/checkout@v7
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Architektur des Runners ermitteln
id: detect-arch
run: |
case "$(uname -m)" in
x86_64) echo "arch=amd64" >> "$GITHUB_OUTPUT" ;;
aarch64|arm64) echo "arch=arm64" >> "$GITHUB_OUTPUT" ;;
*) echo "Nicht unterstützte Architektur: $(uname -m)" >&2; exit 1 ;;
esac
- name: Lokales bin-Verzeichnis zum PATH hinzufügen - name: Lokales bin-Verzeichnis zum PATH hinzufügen
run: | run: |
mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/bin"
@@ -38,13 +29,13 @@ jobs:
uses: actions/cache@v6 uses: actions/cache@v6
with: with:
path: ~/.local/bin/trufflehog path: ~/.local/bin/trufflehog
key: trufflehog-bin-${{ runner.os }}-${{ steps.detect-arch.outputs.arch }}-${{ env.TRUFFLEHOG_VERSION }} key: trufflehog-bin-${{ runner.os }}-${{ env.TRUFFLEHOG_VERSION }}
- name: Install TruffleHog - name: Install TruffleHog
if: steps.cache-trufflehog.outputs.cache-hit != 'true' if: steps.cache-trufflehog.outputs.cache-hit != 'true'
run: | run: |
curl -fsSL -o trufflehog.tar.gz \ curl -fsSL -o trufflehog.tar.gz \
"https://github.com/trufflesecurity/trufflehog/releases/download/v${TRUFFLEHOG_VERSION}/trufflehog_${TRUFFLEHOG_VERSION}_linux_${{ steps.detect-arch.outputs.arch }}.tar.gz" "https://github.com/trufflesecurity/trufflehog/releases/download/v${TRUFFLEHOG_VERSION}/trufflehog_${TRUFFLEHOG_VERSION}_linux_amd64.tar.gz"
tar -xzf trufflehog.tar.gz trufflehog tar -xzf trufflehog.tar.gz trufflehog
chmod +x trufflehog chmod +x trufflehog
mv trufflehog "$HOME/.local/bin/trufflehog" mv trufflehog "$HOME/.local/bin/trufflehog"
+9 -8
View File
@@ -8,7 +8,6 @@ on:
- reopened - reopened
branches: branches:
- testing - testing
- dev
jobs: jobs:
test: test:
@@ -24,14 +23,16 @@ jobs:
toolchain: stable toolchain: stable
cache: false cache: false
# Ein rohes 'actions/cache' auf target/ liefert zwar einen technischen Cache-Hit (Dateien
# werden wiederhergestellt), Cargo kompiliert die Abhängigkeiten aber oft trotzdem neu:
# Der tar-basierte Restore-Vorgang setzt bei allen wiederhergestellten Dateien dieselbe
# Mtime, wodurch Cargos Fingerprinting nicht mehr zuverlässig erkennen kann, was
# älter/neuer als was ist, und sicherheitshalber alles neu baut. Swatinem/rust-cache ist
# genau dafür gebaut (u. a. gezielte Mtime-Korrektur nach dem Restore).
- name: Cache Cargo-Abhängigkeiten & Build-Artefakte - name: Cache Cargo-Abhängigkeiten & Build-Artefakte
uses: Swatinem/rust-cache@v2 uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-
- name: Run Tests - name: Run Tests
run: cargo test run: cargo test
+5 -35
View File
@@ -1,59 +1,29 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json", "$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [ "extends": ["config:recommended"],
"config:recommended"
],
"timezone": "Europe/Berlin", "timezone": "Europe/Berlin",
"schedule": [ "schedule": ["before 6am on monday"],
"before 6am"
],
"baseBranchPatterns": [ "baseBranchPatterns": [
"dev" "dev"
], ],
"packageRules": [ "packageRules": [
{ {
"matchFileNames": [ "matchFileNames": [".gitea/workflows/**"],
".gitea/workflows/**"
],
"groupName": "Gitea Actions", "groupName": "Gitea Actions",
"separateMajorMinor": false, "separateMajorMinor": false,
"separateMinorPatch": false "separateMinorPatch": false
}, },
{ {
"matchManagers": [ "matchManagers": ["cargo"],
"cargo"
],
"groupName": "Cargo Dependencies", "groupName": "Cargo Dependencies",
"separateMajorMinor": false, "separateMajorMinor": false,
"separateMinorPatch": false "separateMinorPatch": false
}, },
{ {
"matchManagers": [ "matchManagers": ["dockerfile", "docker-compose"],
"dockerfile",
"docker-compose"
],
"groupName": "Docker-Images", "groupName": "Docker-Images",
"separateMajorMinor": false, "separateMajorMinor": false,
"separateMinorPatch": false "separateMinorPatch": false
},
{
"description": "Patch-/Minor-/Digest-Updates automatisch mergen, sobald alle CI-Checks (inkl. Unit-Tests) erfolgreich sind - Major-Updates sind unten explizit ausgenommen (siehe nächste Regel).",
"matchUpdateTypes": [
"patch",
"minor",
"digest",
"lockFileMaintenance"
],
"automerge": true,
"automergeType": "pr",
"platformAutomerge": true
},
{
"description": "Major-Updates immer manuell prüfen, da potenziell brechende Änderungen.",
"matchUpdateTypes": [
"major"
],
"automerge": false
} }
], ],
"customManagers": [ "customManagers": [