action.yml 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. name: 'Build Boot Images'
  2. description: 'Creates boot artifacts (boot.img, boot-gz.img, boot-lz4.img) and stores them in boot-artifacts/'
  3. runs:
  4. using: composite
  5. steps:
  6. - shell: bash
  7. working-directory: ${{ github.workspace }}
  8. run: |
  9. set -euo pipefail
  10. mkdir -p bootimgs
  11. mkdir -p boot-artifacts
  12. if [ -f "$GITHUB_WORKSPACE/kernel/out/$ANDROID_VERSION-$KERNEL_VERSION/dist/Image" ]; then
  13. cp "$GITHUB_WORKSPACE/kernel/out/$ANDROID_VERSION-$KERNEL_VERSION/dist/Image" "$GITHUB_WORKSPACE/bootimgs/Image"
  14. cp "$GITHUB_WORKSPACE/kernel/out/$ANDROID_VERSION-$KERNEL_VERSION/dist/Image.lz4" "$GITHUB_WORKSPACE/bootimgs/Image.lz4"
  15. else
  16. cp "$GITHUB_WORKSPACE/kernel/bazel-bin/common/kernel_aarch64/Image" "$GITHUB_WORKSPACE/bootimgs/Image"
  17. cp "$GITHUB_WORKSPACE/kernel/bazel-bin/common/kernel_aarch64/Image.lz4" "$GITHUB_WORKSPACE/bootimgs/Image.lz4"
  18. fi
  19. gzip -n -k -f -9 "$GITHUB_WORKSPACE/bootimgs/Image" > "$GITHUB_WORKSPACE/bootimgs/Image.gz"
  20. cd "$GITHUB_WORKSPACE/bootimgs"
  21. case "$ANDROID_VERSION" in
  22. android12)
  23. GKI_URL="https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-${OS_PATCH_LEVEL}_r1.zip"
  24. FALLBACK_URL="https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip"
  25. status="$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null || true)"
  26. if [ "$status" = "200" ]; then
  27. curl -L -o gki-kernel.zip "$GKI_URL"
  28. else
  29. curl -L -o gki-kernel.zip "$FALLBACK_URL"
  30. fi
  31. unzip -q gki-kernel.zip
  32. rm -f gki-kernel.zip
  33. if [ -f "./boot-5.10.img" ]; then
  34. BOOT_IMG="./boot-5.10.img"
  35. else
  36. BOOT_IMG="$(ls -1 ./boot-*.img 2>/dev/null | head -n 1 || true)"
  37. fi
  38. if [ -z "${BOOT_IMG:-}" ]; then
  39. exit 1
  40. fi
  41. "$UNPACK_BOOTIMG" --boot_img="$PWD/$BOOT_IMG"
  42. ;;
  43. esac
  44. for kernel_image in Image Image.gz Image.lz4; do
  45. case "$kernel_image" in
  46. Image) output_image="boot.img" ;;
  47. Image.gz) output_image="boot-gz.img" ;;
  48. Image.lz4) output_image="boot-lz4.img" ;;
  49. esac
  50. if [ "$ANDROID_VERSION" = "android12" ]; then
  51. "$MKBOOTIMG" --header_version 4 --kernel "$kernel_image" --output "$output_image" --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "$OS_PATCH_LEVEL"
  52. else
  53. "$MKBOOTIMG" --header_version 4 --kernel "$kernel_image" --output "$output_image"
  54. fi
  55. "$AVBTOOL" add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image "$output_image" --algorithm SHA256_RSA2048 --key "$BOOT_SIGN_KEY_PATH"
  56. cp "$output_image" "$GITHUB_WORKSPACE/boot-artifacts/${FILE_NAME}-${output_image}"
  57. done