Skip to content

Implement QTI expression evaluation, response processing, and context composable #9269

Implement QTI expression evaluation, response processing, and context composable

Implement QTI expression evaluation, response processing, and context composable #9269

name: Kolibri Build Assets for Pull Request
on: pull_request
jobs:
prnumber:
# The workflow_run event can't access the pull request
# information unless the pull request comes from a non-fork
# repository. Therefore to get the pull request information,
# we need to store it as a workflow artifact in this workflow.
# Implementation taken from:
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow
runs-on: ubuntu-latest
steps:
- name: Save PR number
env:
PR_NUMBER: ${{ github.event.number }}
run: |
mkdir -p ./pr
echo $PR_NUMBER > ./pr/pr_number
- uses: actions/upload-artifact@v7
with:
name: pr_number
path: pr/
whl:
name: Build WHL file
uses: ./.github/workflows/build_whl.yml
pex:
name: Build PEX file
needs: whl
uses: ./.github/workflows/build_pex.yml
with:
whl-file-name: ${{ needs.whl.outputs.whl-file-name }}
dmg:
name: Build DMG file
needs: whl
uses: learningequality/kolibri-app/.github/workflows/build_mac.yml@v0.5.0
with:
whl-file-name: ${{ needs.whl.outputs.whl-file-name }}
ref: v0.5.0
deb:
name: Build DEB file
needs: whl
uses: learningequality/kolibri-installer-debian/.github/workflows/build_deb.yml@v0.18.0
with:
tar-file-name: ${{ needs.whl.outputs.tar-file-name }}
ref: v0.16.1
exe:
name: Build EXE file
needs: whl
uses: learningequality/kolibri-installer-windows/.github/workflows/build_exe.yml@v1.6.9
with:
whl-file-name: ${{ needs.whl.outputs.whl-file-name }}
ref: v1.6.9
apk:
name: Build APK file
needs: whl
uses: learningequality/kolibri-installer-android/.github/workflows/build_apk.yml@v0.1.10
with:
tar-file-name: ${{ needs.whl.outputs.tar-file-name }}
ref: v0.1.10
zip:
name: Build Raspberry Pi Image
needs: deb
uses: learningequality/kolibri-image-pi/.github/workflows/build_img.yml@v1.0.0
with:
deb-file-name: ${{ needs.deb.outputs.deb-file-name }}
ref: v1.0.0
browser_smoke_test:
name: Browser smoke test
needs: whl
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Install Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: actions/download-artifact@v8
with:
name: ${{ needs.whl.outputs.whl-file-name }}
path: dist
- name: Install WHL file
run: pip install dist/${{ needs.whl.outputs.whl-file-name }}
- name: Install Playwright
run: |
pip install "playwright<2"
playwright install --with-deps chromium
- name: Run browser smoke test
env:
KOLIBRI_HOME: ${{ runner.temp }}/kolibri_home
SCREENSHOT_PATH: ${{ runner.temp }}/smoke_test_screenshot.png
working-directory: ${{ runner.temp }}
run: python ${{ github.workspace }}/integration_testing/smoke_test.py
- name: Upload screenshot
if: always()
uses: actions/upload-artifact@v7
with:
name: smoke_test_screenshot
path: ${{ runner.temp }}/smoke_test_screenshot.png
if-no-files-found: ignore
test_whl_file:
name: Test WHL file
needs: whl
strategy:
matrix:
python-version: [3.9, '3.10', '3.11', '3.12', '3.13', '3.14']
cext: [true, false]
runs-on: ubuntu-latest
steps:
- name: Install Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- uses: actions/download-artifact@v8
with:
name: ${{ needs.whl.outputs.whl-file-name }}
path: dist
- name: Install WHL file
run: pip install dist/${{ needs.whl.outputs.whl-file-name }}
- name: Smoke test WHL file
env:
KOLIBRI_NO_C_EXTENSIONS: ${{ matrix.cext == false && '1' || '' }}
run: kolibri configure setup
test_whl_file_eol_python:
name: Test WHL file with EOL Python versions
needs: whl
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
cext: [true, false]
runs-on: ubuntu-latest
container:
image: python:${{ matrix.python-version }}-buster
steps:
- uses: actions/download-artifact@v8
with:
name: ${{ needs.whl.outputs.whl-file-name }}
path: dist
- name: Install WHL file
run: pip install dist/${{ needs.whl.outputs.whl-file-name }}
- name: Smoke test WHL file
env:
KOLIBRI_NO_C_EXTENSIONS: ${{ matrix.cext == false && '1' || '' }}
run: kolibri configure setup