Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Skipped
Code Quality (Auto-Format & Clippy-Fix) / Formatierung & Clippy automatisch beheben (push) Successful in 1m6s
Security Scans / Trivy & OSV-Scanner (push) Successful in 1m15s
Nightly Build & Publish / Erkenne relevante Code-Änderungen (push) Successful in 12s
TruffleHog Secret Scan / TruffleHog (push) Successful in 23s
Nightly Build & Publish / Build & Publish Nightly-Crate zur Gitea Registry (push) Successful in 2m41s
- Neuer Workflow "nightly-pr.yaml": Erstellt und merged taeglich automatisch einen Pull Request von dev nach nightly (09:00 Uhr Europe/Berlin); legt den nightly-Branch bei Bedarf initial von dev an. - Neuer Workflow "nightly.yaml": Testet, paketiert und veroeffentlicht bei Aenderungen auf nightly eine Pre-Release-Version (-nightly.<Zeitstempel>) in die Gitea Cargo Registry; erstellt bewusst kein Gitea-Release. - testing.yaml veroeffentlicht nun zusaetzlich eine Pre-Release-Version (-testing.<Zeitstempel>) in die Gitea Cargo Registry, zusaetzlich zum bisherigen Preview-Release mit Crate-Anhang. - Beide Versions-Suffixe sind SemVer-Pre-Releases, wodurch Renovates Standardverhalten (ignoreUnstable) sie automatisch ignoriert. - CRON_TZ=Europe/Berlin in security-scan.yaml und trufflehog-scan.yaml ergaenzt: Gitea Actions interpretiert schedule-Cron sonst in der lokalen Zeitzone des Gitea-Servers statt in der beabsichtigten Zeitzone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
98 lines
3.5 KiB
YAML
98 lines
3.5 KiB
YAML
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
|