build-packages.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. name: Build XBPS Packages
  2. on:
  3. workflow_dispatch:
  4. push:
  5. paths:
  6. - "srcpkgs/**"
  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"
  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: Delete existing release assets
  42. env:
  43. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  44. run: |
  45. # Get the release ID for the 'latest' tag
  46. RELEASE_ID=$(gh api \
  47. -H "Accept: application/vnd.github+json" \
  48. /repos/$GITHUB_REPOSITORY/releases/tags/latest \
  49. --jq '.id' || echo "")
  50. if [ ! -z "$RELEASE_ID" ]; then
  51. # Get all assets for this release
  52. assets=$(gh api \
  53. -H "Accept: application/vnd.github+json" \
  54. /repos/$GITHUB_REPOSITORY/releases/$RELEASE_ID/assets \
  55. --jq '.[].id' || echo "")
  56. # Delete each asset
  57. for asset_id in $assets; do
  58. gh api \
  59. --method DELETE \
  60. -H "Accept: application/vnd.github+json" \
  61. /repos/$GITHUB_REPOSITORY/releases/assets/$asset_id
  62. done
  63. echo "All assets from the latest release have been deleted"
  64. else
  65. echo "No release with tag 'latest' found or unable to access release"
  66. fi
  67. - name: Setup and build packages
  68. run: |
  69. # Setup void-packages
  70. cp -r custom-packages/srcpkgs/* void-packages/srcpkgs/
  71. cd void-packages
  72. chown -R builder:builder . &&
  73. ln -s "$(pwd)" /hostrepo
  74. # Use the scripts from common/travis
  75. sudo -Eu builder bash common/travis/set_mirror.sh &&
  76. sudo -Eu builder bash common/travis/prepare.sh &&
  77. bash common/travis/fetch-xtools.sh
  78. # Build packages
  79. mkdir -p ~/packages ~/hostdir
  80. chown -R builder:builder ~/packages &&
  81. chown -R builder:builder ~/hostdir &&
  82. for pkg in `echo ${PACKAGES} | tr ',' ' '`; do
  83. pkg_trim=$(echo "$pkg" | xargs)
  84. sudo -Eu builder ./xbps-src -j$(nproc) -s -H ~/hostdir pkg "$pkg_trim"
  85. cp ~/hostdir/binpkgs/"$pkg_trim"*.xbps ~/packages/
  86. done
  87. - name: Sign and package
  88. env:
  89. PRIVATE_PEM: ${{ secrets.PRIVATE_PEM }}
  90. PRIVATE_PEM_PASSPHRASE: ${{ secrets.PRIVATE_PEM_PASSPHRASE }}
  91. run: |
  92. cd ~/packages
  93. xbps-rindex -a *
  94. temp_key=$(mktemp)
  95. echo "$PRIVATE_PEM" > "$temp_key"
  96. export XBPS_PASSPHRASE=$PRIVATE_PEM_PASSPHRASE
  97. chmod 600 "$temp_key"
  98. xbps-rindex --privkey "$temp_key" --sign --signedby "void-packages-github-actions" ~/packages
  99. xbps-rindex --privkey "$temp_key" --sign-pkg ~/packages/*.xbps
  100. rm -f "$temp_key"
  101. tar -czvf xbps_packages.tar.gz *
  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