Docker image build for renpy release automation https://www.renpy.org/latest.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.4 KiB

4 years ago
  1. FROM python:3-slim
  2. LABEL maintainer="Drew Short <warrick@sothr.com>"
  3. ARG RENPY_VERSION
  4. ENV SDL_AUDIODRIVER="dummy" \
  5. SDL_VIDEODRIVER="dummy" \
  6. RENPY_DIR="/renpy" \
  7. RENPY_VERSION=${RENPY_VERSION:-"7.3.5"} \
  8. JDK_VERSION=${JDK_VERSION:-"8u242"} \
  9. JDK_BUILD=${JDK_BUILD:-"b08"} \
  10. JAVA_HOME=${JAVA_HOME:-/opt/java} \
  11. ANDROID_SDK_VERSION=${ANDROID_SDK_VERSION:-"sdk-tools-linux-4333796"} \
  12. ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-"/renpy/rapt/Sdk"} \
  13. ANDROID_HOME=${ANDROID_SDK_ROOT} \
  14. PATH="$PATH:${JAVA_HOME:-/opt/java}/bin"
  15. # Temp directory and volume mount
  16. RUN mkdir -p /tmp /project
  17. # The default expected volume to work with the Ren'Py project
  18. VOLUME /project
  19. # Install required tooling
  20. RUN apt-get -y update \
  21. && apt-get -y --no-install-recommends install \
  22. bzip2 \
  23. ca-certificates \
  24. curl \
  25. faketime \
  26. ffmpeg \
  27. jq \
  28. opus-tools \
  29. parallel \
  30. procps \
  31. tar \
  32. unzip \
  33. wget \
  34. && rm -Rf /var/lib/apt/lists/*
  35. # Install Java 8
  36. RUN cd /tmp \
  37. && curl -LSo jdk${JDK_VERSION}-${JDK_BUILD}.tgz https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk${JDK_VERSION}-${JDK_BUILD}/OpenJDK8U-jdk_x64_linux_hotspot_${JDK_VERSION}${JDK_BUILD}.tar.gz \
  38. && tar -zxf jdk${JDK_VERSION}-${JDK_BUILD}.tgz \
  39. && mkdir -p ${JAVA_HOME} \
  40. && mv ./jdk${JDK_VERSION}-${JDK_BUILD}/* "${JAVA_HOME}" \
  41. && rm -rf "jdk${JDK_VERSION}-${JDK_BUILD}" "${JDK_VERSION}-${JDK_BUILD}.tgz"
  42. # Install RenPy
  43. RUN cd /tmp \
  44. && curl -LSo renpy-${RENPY_VERSION}-sdk.tar.bz2 https://www.renpy.org/dl/${RENPY_VERSION}/renpy-${RENPY_VERSION}-sdk.tar.bz2 \
  45. && curl -LSo renpy-${RENPY_VERSION}-rapt.zip https://www.renpy.org/dl/${RENPY_VERSION}/renpy-${RENPY_VERSION}-rapt.zip \
  46. && curl -LSo renpy-${RENPY_VERSION}-web.zip https://www.renpy.org/dl/${RENPY_VERSION}/renpy-${RENPY_VERSION}-web.zip \
  47. && tar -xf renpy-${RENPY_VERSION}-sdk.tar.bz2 \
  48. && rm renpy-${RENPY_VERSION}-sdk.tar.bz2 \
  49. && mv renpy-${RENPY_VERSION}-sdk ${RENPY_DIR} \
  50. && unzip renpy-${RENPY_VERSION}-rapt.zip -d ${RENPY_DIR} \
  51. && rm renpy-${RENPY_VERSION}-rapt.zip \
  52. && unzip renpy-${RENPY_VERSION}-web.zip -d ${RENPY_DIR} \
  53. && rm renpy-${RENPY_VERSION}-web.zip
  54. # Export a basic configuration for the build
  55. RUN printf "key.alias=android\nkey.store.password=android\nkey.alias.password=android\nkey.store=${RENPY_DIR}/rapt/android.keystore\nsdk.dir=${ANDROID_SDK_ROOT}\n" > ${RENPY_DIR}/rapt/prototype/local.properties \
  56. && mkdir -p ${RENPY_DIR}/rapt/project \
  57. && cp ${RENPY_DIR}/rapt/prototype/local.properties ${RENPY_DIR}/rapt/project/local.properties
  58. # Install the Android SDK for rapt
  59. RUN cd /tmp \
  60. && curl -LSo ${ANDROID_SDK_VERSION}.zip https://dl.google.com/android/repository/${ANDROID_SDK_VERSION}.zip \
  61. && unzip ${ANDROID_SDK_VERSION}.zip -d ./${ANDROID_SDK_VERSION} \
  62. && mkdir -p ${ANDROID_SDK_ROOT} \
  63. && mv ./${ANDROID_SDK_VERSION}/* ${ANDROID_SDK_ROOT} \
  64. && rm -rf ./${ANDROID_SDK_VERSION} ${ANDROID_SDK_VERSION}.zip
  65. # Accept the Android SDK licenses and install the required tooling
  66. RUN cd ${ANDROID_SDK_ROOT} \
  67. && yes y | tools/bin/sdkmanager --licenses \
  68. && yes y | tools/bin/sdkmanager "platforms;android-28" \
  69. && yes y | tools/bin/sdkmanager "build-tools;27.0.3"
  70. # Precache gradle
  71. RUN cd ${RENPY_DIR}/rapt/prototype \
  72. && ./gradlew --version
  73. WORKDIR $RENPY_DIR