gen-images.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. name: Build void images
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. datecode:
  6. description: "Override datecode for images"
  7. required: false
  8. type: string
  9. mirror:
  10. description: "Mirror to use"
  11. default: "https://repo-ci.voidlinux.org/current"
  12. required: false
  13. type: string
  14. live_archs:
  15. description: "Archs to build live ISOs for"
  16. default: "x86_64 x86_64-musl i686"
  17. required: false
  18. type: string
  19. live_flavors:
  20. description: "Flavors to build live ISOs for"
  21. default: "base xfce"
  22. required: false
  23. type: string
  24. rootfs:
  25. description: "Archs to build ROOTFSes for"
  26. default: "x86_64 x86_64-musl i686 armv6l armv6l-musl armv7l armv7l-musl aarch64 aarch64-musl"
  27. required: false
  28. type: string
  29. platformfs:
  30. description: "Platforms to build PLATFORMFSes for"
  31. default: "rpi-armv6l rpi-armv6l-musl rpi-armv7l rpi-armv7l-musl rpi-aarch64 rpi-aarch64-musl"
  32. required: false
  33. type: string
  34. sbc_imgs:
  35. description: "Platforms to build SBC images for"
  36. default: "rpi-armv6l rpi-armv6l-musl rpi-armv7l rpi-armv7l-musl rpi-aarch64 rpi-aarch64-musl"
  37. required: false
  38. type: string
  39. concurrency:
  40. group: ${{ github.workflow }}-${{ github.ref }}
  41. cancel-in-progress: true
  42. jobs:
  43. build:
  44. name: Build
  45. runs-on: ubuntu-latest
  46. defaults:
  47. run:
  48. shell: bash
  49. container:
  50. image: 'ghcr.io/void-linux/void-linux:20230204RC01-full-x86_64'
  51. options: --privileged
  52. volumes:
  53. - /dev:/dev
  54. env:
  55. PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
  56. DATECODE: "${{ inputs.datecode }}"
  57. LIVE_ARCHS: "${{ inputs.live_archs }}"
  58. LIVE_FLAVORS: "${{ inputs.live_flavors }}"
  59. ROOTFS_ARCHS: "${{ inputs.rootfs }}"
  60. PLATFORMS: "${{ inputs.platformfs }}"
  61. SBC_IMGS: "${{ inputs.sbc_imgs }}"
  62. REPO: "${{ inputs.mirror }}"
  63. steps:
  64. - name: Prepare container
  65. shell: sh
  66. run: |
  67. # Switch to repo-ci mirror
  68. mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
  69. sed -i 's|https://repo-default.voidlinux.org/current|'"$REPO"'|g' /etc/xbps.d/*-repository-*.conf
  70. # Sync and upgrade once, assume error comes from xbps update
  71. xbps-install -Syu || xbps-install -yu xbps
  72. # Upgrade again (in case there was a xbps update)
  73. xbps-install -yu
  74. # Install depedencies
  75. xbps-install -yu bash make git kmod xz lzo qemu-user-static outils dosfstools e2fsprogs
  76. - name: Clone and checkout
  77. uses: classabbyamp/treeless-checkout-action@v1
  78. - name: Prepare environment
  79. run: |
  80. echo "DATECODE=$(date -u "+%Y%m%d")" >> $GITHUB_ENV
  81. echo "MKLIVE_REV=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
  82. - name: Build live ISOs
  83. run: |
  84. if ! [[ "$LIVE_ARCHS" = "none" || "$LIVE_FLAVORS" = "none" ]]; then
  85. make live-iso-all{-print,} \
  86. LIVE_ARCHS="$LIVE_ARCHS" LIVE_FLAVORS="$LIVE_FLAVORS" \
  87. SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE
  88. else
  89. echo "Nothing to do..."
  90. fi
  91. - name: Build ROOTFSes
  92. run: |
  93. if ! [ "$ROOTFS_ARCHS" = "none" ]; then
  94. make rootfs-all{-print,} \
  95. SUDO= ARCHS="$ROOTFS_ARCHS" REPOSITORY="$REPO" DATECODE=$DATECODE
  96. else
  97. echo "Nothing to do..."
  98. fi
  99. - name: Build PLATFORMFSes
  100. run: |
  101. if ! [ "$PLATFORMS" = "none" ]; then
  102. make platformfs-all{-print,} \
  103. SUDO= PLATFORMS="$PLATFORMS" REPOSITORY="$REPO" DATECODE=$DATECODE
  104. else
  105. echo "Nothing to do..."
  106. fi
  107. - name: Build SBC images
  108. run: |
  109. if ! [ "$SBC_IMGS" = "none" ]; then
  110. make images-all-sbc{-print,} \
  111. SUDO= SBC_IMGS="$SBC_IMGS" REPOSITORY="$REPO" DATECODE=$DATECODE
  112. else
  113. echo "Nothing to do..."
  114. fi
  115. - name: Prepare artifacts for upload
  116. run: |
  117. make dist checksum DATECODE=$DATECODE
  118. - name: Upload artifacts
  119. uses: actions/upload-artifact@v3
  120. with:
  121. name: void-live-${{ env.DATECODE }}
  122. path: distdir-${{ env.DATECODE }}/*
  123. if-no-files-found: error