Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade to Redwood #24

Merged
merged 4 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@ on:
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.12']
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.8
python-version: ${{ matrix.python-version }}
- name: Upgrade pip
run: python -m pip install --upgrade pip setuptools
- name: Install dependencies
run: |
pip install .[dev]
- name: Test lint, types, and format
run: make test
run: make test
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ instructions, because git commits are used to generate release notes:

<!-- scriv-insert-here -->

<a id='changelog-18.0.0'></a>
## v18.0.0 (2024-06-20)

- 💥[Feature] Upgrade to redwood (by @dawoudsheraz)
- [Bugfix] Make plugin compatible with Python 3.12 by removing dependency on `pkg_resources`. (by @regisb)
- 💥[Feature] Upgrade the deprecated [edx-app-android](https://github.com/openedx-unsupported/edx-app-android) to [openedx-app-android](https://github.com/openedx/openedx-app-android). (by @hamza-56)
- [Feature] Update the tutor.yaml configuration to align with the new app’s default settings. See the default configuration here: [default_config/prod/config.yaml](https://github.com/openedx/openedx-app-android/blob/main/default_config/prod/config.yaml) (by @cmltawt0).
- [Feature] Enhanced `ANDROID_APP_VERSION` logic to dynamically set the version based on `OPENEDX_COMMON_VERSION`: for nightly builds, `ANDROID_APP_VERSION` is set to main. For other builds, `ANDROID_APP_VERSION` is set to the value of `OPENEDX_COMMON_VERSION`. (by @hamza-56)


<a id='changelog-17.0.0'></a>
## v17.0.0 (2023-12-09)

Expand Down
8 changes: 4 additions & 4 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,16 @@ The ``.apk`` file will then be available for download at http(s)://mobile.LMS_HO
Building a custom Android app
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Android app is built from the `official edx-app-android repository <https://github.com/edx/edx-app-android/>`__. To change this repository or the app version, you can simply build a different docker image with::
The Android app is built from the `official openedx-app-android repository <https://github.com/openedx/openedx-app-android/>`__. To change this repository or the app version, you can simply build a different docker image with::

tutor images build \
--build-arg ANDROID_APP_REPOSITORY=https://github.com/mycustomfork/edx-app-android \
--build-arg ANDROID_APP_REPOSITORY=https://github.com/mycustomfork/openedx-app-android \
--build-arg ANDROID_APP_VERSION=master \
android

Alternatively, you can build an image from a local checked-out fork of edx-app-android::
Alternatively, you can build an image from a local checked-out fork of openedx-app-android::

tutor mounts add /path/to/edx-app-android
tutor mounts add /path/to/openedx-app-android
tutor local launch

Making courses visible in app
Expand Down
1 change: 0 additions & 1 deletion changelog.d/20240212_115536_regis_pkg_resources.md

This file was deleted.

4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def load_about():
packages=find_packages(exclude=["tests*"]),
include_package_data=True,
python_requires=">=3.8",
install_requires=["tutor>=17.0.0,<18.0.0"],
extras_require={"dev": ["tutor[dev]>=17.0.0,<18.0.0"]},
install_requires=["tutor>=18.0.0,<19.0.0"],
extras_require={"dev": ["tutor[dev]>=18.0.0,<19.0.0"]},
entry_points={
"tutor.plugin.v1": [
"android = tutorandroid.plugin"
Expand Down
2 changes: 1 addition & 1 deletion tutorandroid/__about__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "17.0.0"
__version__ = "18.0.0"
4 changes: 2 additions & 2 deletions tutorandroid/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@ def _build_custom_android_app(
mounts: list[tuple[str, str]], host_path: str
) -> list[tuple[str, str]]:
path_basename = os.path.basename(host_path)
if path_basename == "edx-app-android":
if path_basename == "openedx-app-android":
# Bind-mount repo at build-time
mounts.append(("android", "edx-app-android"))
mounts.append(("android", "openedx-app-android"))
return mounts


Expand Down
30 changes: 15 additions & 15 deletions tutorandroid/templates/android/build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ FROM base AS sdk
# Install Android SDK
# Inspired from https://github.com/LiveXP/docker-android-sdk/blob/master/Dockerfile
# Get sdk version from here: https://developer.android.com/studio#command-tools
ENV ANDROID_SDK_VERSION 10406996
ENV ANDROID_SDK_VERSION 11076708
ENV ANDROID_SDK_PATH /app/android-sdk
ENV ANDROID_HOME /app/android-sdk
RUN mkdir ${ANDROID_HOME}
Expand All @@ -28,27 +28,25 @@ RUN wget --quiet https://dl.google.com/android/repository/commandlinetools-linux
# Accept licenses
# https://developer.android.com/studio/command-line/sdkmanager
# Check target version: https://github.com/edx/edx-app-android/blob/master/constants.gradle
ARG ANDROID_API_LEVEL=33
ARG ANDROID_API_LEVEL=34
RUN yes | /app/android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --install "platforms;android-$ANDROID_API_LEVEL" 1> /dev/null

###### Checkout code
FROM base AS code
# Install android app repo
ARG ANDROID_APP_REPOSITORY=https://github.com/openedx/edx-app-android.git

# Please add ANDROID_APP_VERSION value in tutor config from release version https://github.com/openedx/edx-app-android/tags
ARG ANDROID_APP_VERSION={% if OPENEDX_COMMON_VERSION == "master" %}master{% else %}release/{{ ANDROID_APP_VERSION }}{% endif %}
ADD --keep-git-dir $ANDROID_APP_REPOSITORY#$ANDROID_APP_VERSION /app/edx-app-android
ARG ANDROID_APP_REPOSITORY=https://github.com/openedx/openedx-app-android.git
ARG ANDROID_APP_VERSION={% if OPENEDX_COMMON_VERSION == "master" %}main{% else %}{{ OPENEDX_COMMON_VERSION }}{% endif %}
ADD --keep-git-dir $ANDROID_APP_REPOSITORY#$ANDROID_APP_VERSION /app/openedx-app-android

###### Empty layer to mount custom repo at build time
FROM scratch AS edx-app-android
COPY --from=code /app/edx-app-android /
FROM scratch AS openedx-app-android
COPY --from=code /app/openedx-app-android /

###### Common layer, which will be used to build the user-specific image later
FROM sdk AS common

COPY --from=edx-app-android / /app/edx-app-android
WORKDIR /app/edx-app-android
COPY --from=openedx-app-android / /app/openedx-app-android
WORKDIR /app/openedx-app-android

# Install gradle and all dependencies
RUN ./gradlew -v
Expand All @@ -58,8 +56,9 @@ RUN ./gradlew tasks
FROM common as build

# User-customized config
COPY ./config/edx.properties ./OpenEdXMobile/default_config/edx.properties
COPY ./config/tutor.yaml ./OpenEdXMobile/default_config/tutor.yaml
COPY ./config/tutor.yaml ./default_config/dev/config.yaml
COPY ./config/tutor.yaml ./default_config/stage/config.yaml
COPY ./config/tutor.yaml ./default_config/prod/config.yaml
{% if ANDROID_ENABLE_RELEASE_MODE %}
# Add release settings
COPY ./config/gradle.properties ./gradle.properties.tutor
Expand All @@ -68,10 +67,11 @@ RUN cat ./gradle.properties.tutor >> ./gradle.properties

# uncomment this line for for release APK.
# RUN sed -i "s/APPLICATION_ID = .*/APPLICATION_ID = \"{{ LMS_HOST|reverse_host|replace("-", "_") }}\"/g" constants.gradle
RUN ./gradlew assembleProd{{ "Release" if ANDROID_ENABLE_RELEASE_MODE else "Debuggable" }}
RUN ./gradlew assembleProd{{ "Release" if ANDROID_ENABLE_RELEASE_MODE else "Debug" }}
# ./gradlew assembleProdRelease

#### File server to serve apk file
# https://hub.docker.com/_/caddy?tab=tags
FROM docker.io/caddy:2.6.4-alpine as production
COPY --from=build /app/edx-app-android/OpenEdXMobile/build/outputs/apk/prod/{{ "release" if ANDROID_ENABLE_RELEASE_MODE else "debuggable" }}/edx-{{ "release" if ANDROID_ENABLE_RELEASE_MODE else "debuggable" }}-{{ ANDROID_APP_VERSION }}.apk /srv/app.apk
COPY --from=build /app/openedx-app-android/app/build/outputs/apk/prod/{{ "release" if ANDROID_ENABLE_RELEASE_MODE else "debug" }}/app-prod-{{ "release" if ANDROID_ENABLE_RELEASE_MODE else "debug" }}.apk /srv/app.apk
CMD caddy file-server --listen=:8000 --root=/srv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
RELEASE_STORE_FILE=/app/edx-app-android/OpenEdXMobile/app.keystore
RELEASE_STORE_FILE=/app/openedx-app-android/app.keystore
RELEASE_STORE_PASSWORD={{ ANDROID_RELEASE_STORE_PASSWORD }}
RELEASE_KEY_PASSWORD={{ ANDROID_RELEASE_KEY_PASSWORD }}
RELEASE_KEY_ALIAS={{ ANDROID_RELEASE_KEY_ALIAS }}
87 changes: 76 additions & 11 deletions tutorandroid/templates/android/build/config/tutor.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,83 @@
# See docs: https://openedx.atlassian.net/wiki/spaces/LEARNER/pages/48792067/App+Configuration+Flags
API_HOST_URL: "{{ "https" if ENABLE_HTTPS else "http" }}://{{ LMS_HOST }}"
APPLICATION_ID: 'org.openedx.app'
ENVIRONMENT_DISPLAY_NAME: "tutor"
PLATFORM_NAME: "{{ PLATFORM_NAME }}"
PLATFORM_DESTINATION_NAME: "{{ LMS_HOST }}"
URI_SCHEME: ''
FEEDBACK_EMAIL_ADDRESS: "{{ CONTACT_EMAIL }}"
FAQ_URL: ''
OAUTH_CLIENT_ID: "android"

COURSE_VIDEOS_ENABLED: true
CERTIFICATES_ENABLED: true
DISCUSSIONS_ENABLED: true
# Keep empty to hide setting
AGREEMENT_URLS:
PRIVACY_POLICY_URL: ''
COOKIE_POLICY_URL: ''
DATA_SELL_CONSENT_URL: ''
TOS_URL: ''
EULA_URL: ''
SUPPORTED_LANGUAGES: [ ] #en is default language

DISCOVERY:
COURSE:
TYPE: native
DOWNLOAD_TO_SD_CARD_ENABLED: true
NEW_LOGISTRATION_ENABLED: true
USER_PROFILES_ENABLED : true
VIDEO_TRANSCRIPT_ENABLED: true
TYPE: 'native'
WEBVIEW:
BASE_URL: ''
COURSE_DETAIL_TEMPLATE: ''
PROGRAM_DETAIL_TEMPLATE: ''

PROGRAM:
TYPE: 'native'
WEBVIEW:
PROGRAM_URL: ''
PROGRAM_DETAIL_URL_TEMPLATE: ''

FIREBASE:
ENABLED: false
ANALYTICS_SOURCE: '' # segment | none
CLOUD_MESSAGING_ENABLED: false
PROJECT_NUMBER: ''
PROJECT_ID: ''
APPLICATION_ID: '' #App ID field from the Firebase console or mobilesdk_app_id from the google-services.json file.
API_KEY: ''

SEGMENT_IO:
ENABLED: false
SEGMENT_IO_WRITE_KEY: ''

BRAZE:
ENABLED: false
PUSH_NOTIFICATIONS_ENABLED: false

GOOGLE:
ENABLED: false
CLIENT_ID: ''

MICROSOFT:
ENABLED: false
CLIENT_ID: ''
PACKAGE_SIGNATURE: ''

FACEBOOK:
ENABLED: false
FACEBOOK_APP_ID: ''
CLIENT_TOKEN: ''

BRANCH:
ENABLED: false
KEY: ''
URI_SCHEME: ''
HOST: ''
ALTERNATE_HOST: ''

#Platform names
PLATFORM_NAME: "{{ PLATFORM_NAME }}"
PLATFORM_FULL_NAME: "{{ PLATFORM_NAME }}"
#App sourceSets dir
THEME_DIRECTORY: "openedx"
#tokenType enum accepts JWT and BEARER only
TOKEN_TYPE: "JWT"
#feature flag for activating What’s New feature
WHATS_NEW_ENABLED: false
#feature flag enable Social Login buttons
SOCIAL_AUTH_ENABLED: false
#Course navigation feature flags
COURSE_NESTED_LIST_ENABLED: false
COURSE_UNIT_PROGRESS_ENABLED: false
Loading