Skip to content

.github/workflows/apt-repo.yml #12

.github/workflows/apt-repo.yml

.github/workflows/apt-repo.yml #12

Workflow file for this run

on: workflow_dispatch
jobs:
publish:
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
name: Publish apt repo
runs-on: ubuntu-latest
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
KEY_ID: ${{ secrets.KEY_ID }}
CODENAMES: "trixie"
steps:
- name: Install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo rm -f /var/lib/man-db/auto-update
sudo apt-get update
sudo apt-get install -y reprepro gnupg jq
- name: Set up GPG
run: |
echo "$GPG_PRIVATE_KEY" | gpg --batch --import
echo "$KEY_ID:6:" | gpg --batch --import-ownertrust --pinentry-mode=loopback
- name: Set up APT repo
run: |
mkdir -p repo/conf
for codename in ${CODENAMES}; do
cat <<EOF >>repo/conf/distributions
Codename: ${codename}
Components: ${codename}
Architectures: amd64 arm64
Contents:
Origin: GitHub
Label: uffd
SignWith: ${KEY_ID}
EOF
done
gpg --batch --export "$KEY_ID" > repo/pubkey.gpg
touch repo/index.html
- name: Download all artifacts
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
export RELEASES="$(gh -R ${{ github.repository }} release list --json tagName -t "{{range .}}{{.tagName}} {{end}}")"
for release in $RELEASES; do
echo $release
rm -rf debtmp || true
mkdir debtmp
gh -R ${{ github.repository }} release download --dir debtmp --pattern '*.deb' "$release"
for codename in ${CODENAMES}; do
echo "- $codename"
for f in debtmp/*${codename}*.deb; do
echo "- - $f"
reprepro -C "$codename" -Vb repo includedeb "$codename" "$f"
done
done
done
- name: Upload GH Pages Artifact
uses: actions/upload-pages-artifact@v3
with:
path: repo/
- name: Publish to Pages
id: deployment
uses: actions/deploy-pages@v4