diff --git a/.gitea/workflows/renovate.yaml b/.gitea/workflows/renovate.yaml index bc2f748..ccbdcb2 100644 --- a/.gitea/workflows/renovate.yaml +++ b/.gitea/workflows/renovate.yaml @@ -9,7 +9,7 @@ jobs: renovate: name: Dependency-Updates prüfen & Pull Requests erstellen runs-on: ubuntu-latest - container: ghcr.io/renovatebot/renovate:44.82.3 + container: ghcr.io/renovatebot/renovate:44.83.0 steps: - name: Renovate ausführen run: renovate diff --git a/.gitea/workflows/testing-to-main-pr.yaml b/.gitea/workflows/testing-to-main-pr.yaml new file mode 100644 index 0000000..f26a71d --- /dev/null +++ b/.gitea/workflows/testing-to-main-pr.yaml @@ -0,0 +1,111 @@ +name: Auto-PR (Testing → Main) + +on: + push: + branches: + - testing + +jobs: + create-pr: + name: Erstelle automatisch PR von testing nach main + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - name: Prüfe auf bereits offenen PR nach main + id: check_pr + 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") + EXISTS=$(echo "$OPEN_PRS" | jq -r '[.[] | select(.base.ref == "main" and .head.ref == "testing")] | length') + echo "Bereits offene testing→main PRs: ${EXISTS}" + echo "exists=${EXISTS}" >> "$GITHUB_OUTPUT" + + - name: Ermittle Versionen auf main & testing + id: versions + if: steps.check_pr.outputs.exists == '0' + run: | + git fetch origin main + MAIN_VERSION="$(git show origin/main:Cargo.toml | sed -n 's/^version = "\(.*\)"/\1/p' | head -n1)" + TESTING_VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" + echo "Version auf main: ${MAIN_VERSION} / Version auf testing: ${TESTING_VERSION}" + echo "main_version=${MAIN_VERSION}" >> "$GITHUB_OUTPUT" + echo "testing_version=${TESTING_VERSION}" >> "$GITHUB_OUTPUT" + + - name: Ermittle geänderte Kategorien (main...testing) + id: categories + if: steps.check_pr.outputs.exists == '0' && steps.versions.outputs.main_version == steps.versions.outputs.testing_version + run: | + CHANGED_FILES="$(git diff --name-only origin/main...HEAD)" + echo "Geänderte Dateien main...testing:" + echo "$CHANGED_FILES" + + WORKFLOWS="false" + CONFIG="false" + DOCS="false" + + if echo "$CHANGED_FILES" | grep -q '^\.gitea/workflows/'; then + WORKFLOWS="true" + fi + if echo "$CHANGED_FILES" | grep -qE '^(renovate\.json|qodana\.yaml|Cargo\.toml|Cargo\.lock|\.cargo/)'; then + CONFIG="true" + fi + if echo "$CHANGED_FILES" | grep -qE '(^|/)[^/]+\.md$|^LICENSE$'; then + DOCS="true" + fi + + echo "workflows=${WORKFLOWS}" >> "$GITHUB_OUTPUT" + echo "config=${CONFIG}" >> "$GITHUB_OUTPUT" + echo "docs=${DOCS}" >> "$GITHUB_OUTPUT" + + - name: Bestimme PR-Titel + id: title + if: steps.check_pr.outputs.exists == '0' + run: | + if [ "${{ steps.versions.outputs.main_version }}" != "${{ steps.versions.outputs.testing_version }}" ]; then + TITLE="Merge testing in main: Release ${{ steps.versions.outputs.testing_version }}" + else + PARTS=() + [ "${{ steps.categories.outputs.workflows }}" = "true" ] && PARTS+=("Workflows") + [ "${{ steps.categories.outputs.config }}" = "true" ] && PARTS+=("Konfigurationen") + [ "${{ steps.categories.outputs.docs }}" = "true" ] && PARTS+=("Dokumentation") + + if [ ${#PARTS[@]} -eq 0 ]; then + TITLE="Merge testing in main" + else + JOINED="" + for PART in "${PARTS[@]}"; do + if [ -z "$JOINED" ]; then + JOINED="$PART" + else + JOINED="${JOINED} & ${PART}" + fi + done + TITLE="Merge testing in main: ${JOINED} aktualisiert" + fi + fi + echo "Ermittelter PR-Titel: ${TITLE}" + echo "title=${TITLE}" >> "$GITHUB_OUTPUT" + + - name: Erstelle PR (testing -> main) + if: steps.check_pr.outputs.exists == '0' + 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 }} + TITLE: ${{ steps.title.outputs.title }} + run: | + PAYLOAD=$(jq -n --arg title "$TITLE" --arg head "testing" --arg base "main" \ + '{title: $title, head: $head, base: $base}') + curl -f -s -S -X POST \ + -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/json" \ + -d "$PAYLOAD" \ + "${GITEA_URL}/api/v1/repos/${REPO}/pulls" + echo "PR erstellt: ${TITLE}" diff --git a/.gitea/workflows/version-bump.yaml b/.gitea/workflows/version-bump.yaml new file mode 100644 index 0000000..dd25604 --- /dev/null +++ b/.gitea/workflows/version-bump.yaml @@ -0,0 +1,84 @@ +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 }} diff --git a/Cargo.lock b/Cargo.lock index 754fac7..a2c16e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,9 +45,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "config-ctdra" -version = "1.0.4" +version = "1.0.6" source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" -checksum = "f7b3e25b95d4cdb6fc856f2af0106d4558b882c2f10798db46181e51827749a4" +checksum = "83eb23d473fce79e8234ad66baf210289b5c9e4c4a587273b4df7deceb73f416" dependencies = [ "confy", "program-ctdra", @@ -76,7 +76,7 @@ checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" [[package]] name = "docker-update" -version = "1.2.2" +version = "1.2.3" dependencies = [ "config-ctdra", "logger-ctdra", @@ -175,9 +175,9 @@ checksum = "9d0f24f33af482526a4e3f9b47f0abb2c6377a1713c8aa4a8106994689a4cfa5" [[package]] name = "logger-ctdra" -version = "1.0.3" +version = "1.0.5" source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" -checksum = "af9ea239d80163c80b12cae5f74c0c2824199921dedafba74678e96a11a8b15e" +checksum = "ce612b7d943b77060fa36eab0c85782e650c4cf023e9d560bef791951ed92cad" dependencies = [ "program-ctdra", "time", @@ -313,9 +313,9 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "sudo-ctdra" -version = "1.0.0" +version = "1.0.1" source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" -checksum = "2c2746122bbe36f821de70db3ca4ad24edfb77118fc6a6bc7693082b50d23e5f" +checksum = "20e576be60eb2050d475d0fbe46f0d09462ba9985ab55c7833e0c2e6d116d341" dependencies = [ "libc 1.0.0-alpha.4", ] diff --git a/Cargo.toml b/Cargo.toml index a114189..4c430d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "docker-update" -version = "1.2.2" +version = "1.2.3" edition = "2024" authors = ['DragonSlayer_14'] readme = "README.md"