build-packages.yml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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"
  15. jobs:
  16. build-packages:
  17. runs-on: ubuntu-latest
  18. container:
  19. image: ghcr.io/void-linux/void-buildroot-glibc:latest
  20. steps:
  21. - name: Setup environment
  22. run: |
  23. export PATH="/usr/libexec/chroot-git:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin"
  24. mkdir -p /etc/xbps.d
  25. cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
  26. sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
  27. xbps-install -Syu xbps
  28. xbps-install -Syu
  29. xbps-install -y tar curl openssh unzip git jq github-cli
  30. - name: Checkout repositories
  31. uses: actions/checkout@v4
  32. with:
  33. repository: void-linux/void-packages
  34. path: void-packages
  35. - name: Checkout custom packages
  36. uses: actions/checkout@v4
  37. with:
  38. path: custom-packages
  39. - name: Delete existing release assets
  40. env:
  41. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  42. run: |
  43. # Get the release ID for the 'latest' tag
  44. RELEASE_ID=$(gh api \
  45. -H "Accept: application/vnd.github+json" \
  46. /repos/$GITHUB_REPOSITORY/releases/tags/latest \
  47. --jq '.id' || echo "")
  48. if [ ! -z "$RELEASE_ID" ]; then
  49. # Get all assets for this release
  50. assets=$(gh api \
  51. -H "Accept: application/vnd.github+json" \
  52. /repos/$GITHUB_REPOSITORY/releases/$RELEASE_ID/assets \
  53. --jq '.[].id' || echo "")
  54. # Delete each asset
  55. for asset_id in $assets; do
  56. gh api \
  57. --method DELETE \
  58. -H "Accept: application/vnd.github+json" \
  59. /repos/$GITHUB_REPOSITORY/releases/assets/$asset_id
  60. done
  61. echo "All assets from the latest release have been deleted"
  62. else
  63. echo "No release with tag 'latest' found or unable to access release"
  64. fi
  65. - name: Setup and build packages
  66. run: |
  67. # Setup void-packages
  68. cp -r custom-packages/srcpkgs/* void-packages/srcpkgs/
  69. cd void-packages
  70. ln -s "$(pwd)" /hostrepo
  71. ./common/travis/set_mirror.sh
  72. ./common/travis/prepare.sh
  73. ./common/travis/fetch-xtools.sh
  74. # Build packages
  75. mkdir -p ~/packages
  76. IFS=',' read -ra PKGS <<< "${PACKAGES}"
  77. for pkg in "${PKGS[@]}"; do
  78. pkg_trim=$(echo "$pkg" | xargs)
  79. ./xbps-src -j$(nproc) -s -H ~/hostdir pkg "$pkg_trim"
  80. cp ~/hostdir/binpkgs/"$pkg_trim"*.xbps ~/packages/
  81. done
  82. - name: Sign and package
  83. env:
  84. PRIVATE_PEM: ${{ secrets.PRIVATE_PEM }}
  85. PRIVATE_PEM_PASSPHRASE: ${{ secrets.PRIVATE_PEM_PASSPHRASE }}
  86. run: |
  87. cd ~/packages
  88. xbps-rindex -a *
  89. temp_key=$(mktemp)
  90. echo "$PRIVATE_PEM" > "$temp_key"
  91. export XBPS_PASSPHRASE=$PRIVATE_PEM_PASSPHRASE
  92. chmod 600 "$temp_key"
  93. xbps-rindex --privkey "$temp_key" --sign --signedby "void-packages-github-actions" ~/packages
  94. xbps-rindex --privkey "$temp_key" --sign-pkg ~/packages/*.xbps
  95. rm -f "$temp_key"
  96. tar -czvf xbps_packages.tar.gz *
  97. ls -lah
  98. - name: Create Release
  99. uses: softprops/action-gh-release@v1
  100. env:
  101. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  102. with:
  103. files: |
  104. /github/home/packages/*.xbps
  105. /github/home/packages/*.sig2
  106. /github/home/packages/x86_64-repodata
  107. /github/home/packages/xbps_packages.tar.gz
  108. tag_name: latest
  109. name: Latest Build
  110. body: |
  111. Latest build of XBPS packages
  112. Built on: ${{ github.event.repository.updated_at }}
  113. prerelease: false