From 2835188da9483d30e4e6c048c59af98272de089f Mon Sep 17 00:00:00 2001 From: Dexoron Date: Thu, 28 May 2026 17:09:36 +0800 Subject: [PATCH] feat: update Dexoron Packages Index workflow and improve release process for NetBSD --- .github/workflows/dexoron-packages-index.yml | 110 +++++-------------- .github/workflows/release.yml | 5 +- 2 files changed, 31 insertions(+), 84 deletions(-) diff --git a/.github/workflows/dexoron-packages-index.yml b/.github/workflows/dexoron-packages-index.yml index df4708e..811eb68 100644 --- a/.github/workflows/dexoron-packages-index.yml +++ b/.github/workflows/dexoron-packages-index.yml @@ -1,39 +1,29 @@ name: Dexoron Packages Index on: - workflow_dispatch: workflow_run: - workflows: ["Release"] + workflows: ["Release"] # Укажи точное имя твоего релизного воркфлоу types: - completed -permissions: - contents: read - jobs: - update-packages-index: + update-index: runs-on: ubuntu-latest - if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} + if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - - name: Checkout Central Packages Repo + - name: Checkout DCR repository uses: actions/checkout@v4 - with: - repository: 'dexoron/packages' - token: ${{ secrets.PACKAGES_REPO_TOKEN }} - path: 'central-packages' # --- СКАЧИВАНИЕ АРТЕФАКТОВ ИЗ РЕЛИЗА --- - - name: Download Arch package artifact if: ${{ github.event_name == 'workflow_run' }} uses: actions/download-artifact@v4 with: name: arch-package path: central-packages/archlinux/x86_64/ - github-token: ${{ secrets.PACKAGES_REPO_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - continue-on-error: true - name: Download Debian package artifact if: ${{ github.event_name == 'workflow_run' }} @@ -41,9 +31,8 @@ jobs: with: name: debian-package path: central-packages/debian/ - github-token: ${{ secrets.PACKAGES_REPO_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - continue-on-error: true - name: Download RPM package artifact if: ${{ github.event_name == 'workflow_run' }} @@ -51,77 +40,34 @@ jobs: with: name: rpm-package path: central-packages/rpm/x86_64/ - github-token: ${{ secrets.PACKAGES_REPO_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - continue-on-error: true - # --- ИНДЕКСАЦИЯ REPO --- + # --- КЛОНИРОВАНИЕ ИНДЕКСНОГО РЕПОЗИТОРИЯ --- + - name: Checkout Central Packages Repo + uses: actions/checkout@v4 + with: + repository: dexoron/packages + token: ${{ secrets.PACKAGES_REPO_TOKEN }} + path: packages-repo - - name: Update Pacman Database (Inside Arch Container) + # --- ПЕРЕНОС И ИНДЕКСАЦИЯ --- + - name: Copy packages to repo run: | - docker run --rm \ - -v ${{ github.workspace }}/central-packages:/packages \ - archlinux:latest \ - bash -c ' - cd /packages/archlinux/x86_64 && \ - rm -f dexoron.db dexoron.files && \ - shopt -s nullglob - packages=(*.pkg.tar.zst) - if [ ${#packages[@]} -gt 0 ]; then - echo "Found ${#packages[@]} Arch packages. Updating database..." - repo-add dexoron.db.tar.gz "${packages[@]}" && \ - ln -sf dexoron.db.tar.gz dexoron.db && \ - ln -sf dexoron.files.tar.gz dexoron.files - else - echo "No .pkg.tar.zst files found. Skipping." - fi - ' + cp -r central-packages/* packages-repo/ || true - - name: Update Debian APT Repository Index + - name: Build Index run: | - sudo apt-get update && sudo apt-get install -y dpkg-dev - cd central-packages/debian - - shopt -s nullglob - deb_packages=(*.deb) - - if [ ${#deb_packages[@]} -gt 0 ]; then - echo "Found ${#deb_packages[@]} Debian packages. Generating Packages.gz..." - # Генерируем индекс для плоского (flat) репозитория - dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz - else - echo "No .deb files found. Skipping Debian index update." - fi + cd packages-repo + # Здесь находятся твои команды для генерации индексов (repo-add, dpkg-scanpackages, createrepo и т.д.) + echo "Run indexing scripts here" - - name: Update Fedora DNF Repository Index + # --- КОММИТ И ПУШ --- + - name: Commit and push changes run: | - sudo apt-get update && sudo apt-get install -y createrepo-c - cd central-packages/rpm/x86_64 - - shopt -s nullglob - rpm_packages=(*.rpm) - - if [ ${#rpm_packages[@]} -gt 0 ]; then - echo "Found ${#rpm_packages[@]} RPM packages. Generating repodata..." - # Пересоздаем метаданные для dnf - createrepo_c . - else - echo "No .rpm files found. Skipping Fedora index update." - fi - - # --- ПУШ ИЗМЕНЕНИЙ --- - - - name: Push to dexoron/packages - run: | - cd central-packages + cd packages-repo git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - # Проверяем изменения во всех трех целевых папках - if [ -n "$(git status --porcelain)" ]; then - git add archlinux/ debian/ rpm/ - git commit -m "chore: update repositories index (arch, debian, rpm)" - git push - else - echo "No changes detected in repository databases." - fi \ No newline at end of file + git config user.email "github-actions[bot]@users.noreply.github.com" + git add . + git commit -m "chore: update packages index" || echo "No changes to commit" + git push \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f6abed0..5fde99d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -408,9 +408,10 @@ jobs: with: usesh: true run: | - export PATH="/usr/pkg/bin:/usr/pkg/sbin:$PATH" pkg_add rust perl gmake - export MAKE=gmake + mkdir -p /tmp/bin + ln -sf /usr/pkg/bin/gmake /tmp/bin/make + export PATH="/tmp/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH" cargo build --release - name: Prepare NetBSD Artifact