name: Dexoron Packages Index on: workflow_dispatch: inputs: tag: description: "Версия (тег) для ручного импорта пакетов (например, v0.6.9)" required: true type: string workflow_run: workflows: ["Release"] types: - completed permissions: contents: read jobs: update-packages-index: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_dispatch' || github.event_workflow_run.conclusion == 'success' }} steps: - name: Checkout Central Packages Repo uses: actions/checkout@v4 with: repository: 'dexoron/packages' token: ${{ secrets.PACKAGES_REPO_TOKEN }} path: 'central-packages' - name: Import GPG Key uses: crazy-max/ghaction-import-gpg@v6 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} # --- Загрузка артефактов (сохранена прежняя логика) --- - name: Download Artifacts if: ${{ github.event_name == 'workflow_run' }} uses: actions/download-artifact@v4 with: path: central-packages/ github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - name: Download Packages from Release Assets if: ${{ github.event_name == 'workflow_dispatch' }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAG: ${{ inputs.tag }} run: | gh release download "$TAG" --repo dexoron/dcr --pattern "*.pkg.tar.zst" --dir central-packages/archlinux/x86_64/ --clobber gh release download "$TAG" --repo dexoron/dcr --pattern "*.deb" --dir central-packages/debian/ --clobber gh release download "$TAG" --repo dexoron/dcr --pattern "*.rpm" --dir central-packages/fedora/x86_64/ --clobber # --- ИНДЕКСАЦИЯ И ПОДПИСЬ --- - name: Update Pacman Database run: | docker run --rm \ -v ${{ github.workspace }}/central-packages:/packages \ -v ~/.gnupg:/root/.gnupg \ archlinux:latest \ bash -c ' cd /packages/archlinux/x86_64 && \ packages=(*.pkg.tar.zst) && \ repo-add --sign dexoron.db.tar.gz "${packages[@]}" && \ ln -sf dexoron.db.tar.gz dexoron.db && \ ln -sf dexoron.files.tar.gz dexoron.files ' - name: Update Debian APT Repository Index run: | sudo apt-get update && sudo apt-get install -y dpkg-dev cd central-packages/debian dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz echo "Origin: Dexoron" > Release echo "Suite: stable" >> Release echo "Architectures: amd64" >> Release echo "Components: main" >> Release echo "Date: $(date -uR)" >> Release echo "SHA256:" >> Release echo " $(sha256sum Packages.gz | awk '{print $1" "$2}')" >> Release gpg --batch --yes --pinentry-mode loopback --local-user 74322D39483E9C9E8C86C0AA0770A5C2A2A82DAC --detach-sign --armor --output Release.gpg Release gpg --batch --yes --pinentry-mode loopback --local-user 74322D39483E9C9E8C86C0AA0770A5C2A2A82DAC --clearsign --output InRelease Release - name: Update Fedora DNF Repository Index run: | sudo apt-get update && sudo apt-get install -y createrepo-c cd central-packages/fedora/x86_64 createrepo_c . gpg --batch --yes --detach-sign --armor --output repodata/repomd.xml.asc repodata/repomd.xml - name: Push to dexoron/packages run: | cd central-packages git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add . if ! git diff --cached --quiet; then git commit -m "chore: update and sign repositories" git push fi