build-packages.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. name: Build XBPS Packages
  2. on:
  3. workflow_dispatch:
  4. schedule:
  5. # Runs at 00:00 UTC every Friday
  6. - cron: '0 0 * * 5'
  7. permissions:
  8. contents: write
  9. packages: write
  10. env:
  11. ARCH: x86_64
  12. HOST: x86_64
  13. PLATFORM: linux/amd64
  14. PACKAGES: "brave,ferdium,librewolf,vscodium,obsidian,onlyoffice,freetube,tutanota-desktop,drawio-desktop,sklauncher,cinny-desktop,pika-backup,zen-browser,PrismLauncher-Cracked"
  15. jobs:
  16. build-packages:
  17. runs-on: ubuntu-latest
  18. container:
  19. image: ghcr.io/void-linux/void-glibc-full:20250227R1
  20. options: --privileged
  21. steps:
  22. - name: Setup environment
  23. run: |
  24. export PATH="/usr/libexec/chroot-git:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin"
  25. mkdir -p /etc/xbps.d
  26. cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
  27. sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
  28. xbps-install -Syu xbps
  29. xbps-install -Syu
  30. xbps-install -y tar curl openssh unzip git jq github-cli bash shadow sudo
  31. useradd -G xbuilder -M builder
  32. - name: Checkout repositories
  33. uses: actions/checkout@v4
  34. with:
  35. repository: void-linux/void-packages
  36. path: void-packages
  37. - name: Checkout custom packages
  38. uses: actions/checkout@v4
  39. with:
  40. path: custom-packages
  41. - name: Setup and build packages
  42. run: |
  43. # Setup void-packages
  44. cp -r custom-packages/srcpkgs/* void-packages/srcpkgs/
  45. cd void-packages
  46. chown -R builder:builder . &&
  47. ln -s "$(pwd)" /hostrepo
  48. # Use the scripts from common/travis
  49. sudo -Eu builder bash common/travis/set_mirror.sh &&
  50. sudo -Eu builder bash common/travis/prepare.sh &&
  51. bash common/travis/fetch-xtools.sh
  52. # Build packages
  53. mkdir -p ~/packages ~/hostdir
  54. chown -R builder:builder ~/packages &&
  55. chown -R builder:builder ~/hostdir &&
  56. for pkg in `echo ${PACKAGES} | tr ',' ' '`; do
  57. pkg_trim=$(echo "$pkg" | xargs)
  58. sudo -Eu builder ./xbps-src -j$(nproc) -s -H ~/hostdir pkg "$pkg_trim"
  59. cp ~/hostdir/binpkgs/"$pkg_trim"*.xbps ~/packages/
  60. done
  61. - name: Sign and package
  62. env:
  63. PRIVATE_PEM: ${{ secrets.PRIVATE_PEM }}
  64. PRIVATE_PEM_PASSPHRASE: ${{ secrets.PRIVATE_PEM_PASSPHRASE }}
  65. run: |
  66. cd ~/packages
  67. xbps-rindex -a *
  68. temp_key=$(mktemp)
  69. echo "$PRIVATE_PEM" > "$temp_key"
  70. export XBPS_PASSPHRASE=$PRIVATE_PEM_PASSPHRASE
  71. chmod 600 "$temp_key"
  72. xbps-rindex --privkey "$temp_key" --sign --signedby "void-packages-github-actions" ~/packages
  73. xbps-rindex --privkey "$temp_key" --sign-pkg ~/packages/*.xbps
  74. rm -f "$temp_key"
  75. tar -czvf xbps_packages.tar.gz *
  76. - name: Delete existing release assets
  77. env:
  78. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  79. run: |
  80. # Get the release ID for the 'latest' tag
  81. RELEASE_ID=$(gh api \
  82. -H "Accept: application/vnd.github+json" \
  83. /repos/$GITHUB_REPOSITORY/releases/tags/latest \
  84. --jq '.id' || echo "")
  85. if [ ! -z "$RELEASE_ID" ]; then
  86. # Get all assets for this release
  87. assets=$(gh api \
  88. -H "Accept: application/vnd.github+json" \
  89. /repos/$GITHUB_REPOSITORY/releases/$RELEASE_ID/assets \
  90. --jq '.[].id' || echo "")
  91. # Delete each asset
  92. for asset_id in $assets; do
  93. gh api \
  94. --method DELETE \
  95. -H "Accept: application/vnd.github+json" \
  96. /repos/$GITHUB_REPOSITORY/releases/assets/$asset_id
  97. done
  98. echo "All assets from the latest release have been deleted"
  99. else
  100. echo "No release with tag 'latest' found or unable to access release"
  101. fi
  102. - name: Create Release
  103. uses: softprops/action-gh-release@v1
  104. env:
  105. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  106. with:
  107. files: |
  108. /github/home/packages/*.xbps
  109. /github/home/packages/*.sig2
  110. /github/home/packages/x86_64-repodata
  111. /github/home/packages/xbps_packages.tar.gz
  112. tag_name: latest
  113. name: Latest Build
  114. body: |
  115. Latest build of XBPS packages
  116. Built on: ${{ github.event.repository.updated_at }}
  117. prerelease: false