Skip to content

Commit

Permalink
Merge branch 'master' into huniafatima/add-portal-designer-in-devstack
Browse files Browse the repository at this point in the history
  • Loading branch information
huniafatima-arbi committed Jan 31, 2025
2 parents 448be20 + 3a3d2f5 commit 1781520
Show file tree
Hide file tree
Showing 21 changed files with 422 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/provisioning-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
os:
- ubuntu-20.04 # Ubuntu 20.04 "Focal Fossa"
python-version: [ '3.11' ]
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue, analyticsapi+insights+lms, designer+lms]
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue, analyticsapi+insights+lms, enterprise-catalog+lms, license-manager+lms, designer+lms]
fail-fast: false # some services can be flaky; let others run to completion even if one fails

steps:
Expand Down
6 changes: 6 additions & 0 deletions check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@ if should_check analyticsapi; then
"curl --fail -L http://localhost:19001/health/"
fi

if should_check license-manager; then
echo "Running License Manager Devstack tests: "
run_check license_manager_heartbeat license-manager \
"curl --fail -L http://localhost:18170/health/"
fi

echo "Successful checks:${succeeded:- NONE}"
echo "Failed checks:${failed:- NONE}"
if [[ -z "$succeeded" ]] && [[ -z "$failed" ]]; then
Expand Down
31 changes: 30 additions & 1 deletion docker-compose-host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ services:
cms-worker:
volumes:
- ${DEVSTACK_WORKSPACE}/edx-platform:/edx/app/edxapp/edx-platform
codejail:
volumes:
- ${DEVSTACK_WORKSPACE}/codejail-service:/app
- ${DEVSTACK_WORKSPACE}/src:/edx/src
- ${PWD}/py_configuration_files/codejail.py:/app/codejail_service/settings/devstack.py
insights:
volumes:
- ${DEVSTACK_WORKSPACE}/edx-analytics-dashboard:/edx/app/insights/insights
Expand All @@ -75,7 +80,31 @@ services:
- ${DEVSTACK_WORKSPACE}/edx-analytics-data-api:/edx/app/analytics_api/analytics_api
- ${DEVSTACK_WORKSPACE}/src:/edx/src
- ${PWD}/py_configuration_files/analytics_data_api.py:/edx/app/analytics_api/analytics_api/analyticsdataserver/settings/devstack.py

enterprise-catalog:
volumes:
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
enterprise-catalog-worker:
volumes:
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
- ${PWD}/py_configuration_files/enterprise_catalog.py:/edx/app/enterprise_catalog/enterprise_catalog/settings/devstack.py
enterprise-catalog-curations-worker:
volumes:
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
license-manager:
volumes:
- ${DEVSTACK_WORKSPACE}/license-manager:/edx/app/license_manager
- ${DEVSTACK_WORKSPACE}/src:/edx/src:cached
- ${PWD}/py_configuration_files/license_manager.py:/edx/app/license_manager/license_manager/settings/devstack.py
license-manager-worker:
volumes:
- ${DEVSTACK_WORKSPACE}/license-manager:/edx/app/license_manager
- ${DEVSTACK_WORKSPACE}/src:/edx/src:cached
- ${PWD}/py_configuration_files/license_manager.py:/edx/app/license_manager/license_manager/settings/devstack.py
bulk-enrollment-worker:
volumes:
- ${DEVSTACK_WORKSPACE}/license-manager:/edx/app/license_manager
- ${DEVSTACK_WORKSPACE}/src:/edx/src:cached
- ${PWD}/py_configuration_files/license_manager.py:/edx/app/license_manager/license_manager/settings/devstack.py
# Note that frontends mount `src` to /edx/app/src instead of /edx/src.
# See ADR #5 for rationale.
frontend-app-account:
Expand Down
176 changes: 175 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,17 @@ services:
# Dangerous to run Celery as root normally, but it's how we do things in devstack for some reason
C_FORCE_ROOT: "true"

codejail:
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.codejail"
hostname: codejail.devstack.edx
stdin_open: true
tty: true
image: edxops/codejail-dev:latest
environment:
DJANGO_SETTINGS_MODULE: codejail_service.settings.devstack
ports:
- "18030:8080"

xqueue:
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.xqueue"
image: edxops/xqueue-dev:latest
Expand Down Expand Up @@ -693,6 +704,148 @@ services:
aliases:
- edx.devstack.xqueue_consumer

enterprise-catalog:
image: edxops/enterprise-catalog-dev
container_name: edx.devstack.enterprise-catalog
hostname: enterprise-catalog.devstack.edx
command: bash -c 'while true; do python /edx/app/enterprise_catalog/enterprise_catalog/manage.py runserver 0.0.0.0:18160; sleep 2; done'
ports:
- "18160:18160"
depends_on:
- memcached
- mysql80
- enterprise-catalog-worker
networks:
default:
aliases:
- edx.devstack.enterprise-catalog
# Allows attachment to this container using 'docker attach <containerID>'.
stdin_open: true
tty: true
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
ENABLE_DJANGO_TOOLBAR: 1
DB_HOST: edx.devstack.mysql80
DB_NAME: enterprise_catalog
DB_PORT: 3306
DB_USER: catalog001
DB_PASSWORD: 'password'

enterprise-catalog-worker:
image: edxops/enterprise-catalog-dev
command: bash -c 'cd /edx/app/enterprise_catalog/enterprise_catalog && celery -A enterprise_catalog worker -Q enterprise_catalog.default -l DEBUG'
container_name: edx.devstack.enterprise.catalog.worker
depends_on:
- mysql80
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
COLUMNS: 80
hostname: worker.catalog.enterprise
ports:
- "18161:18161"
restart: always
# Allows attachment to this container using 'docker attach <containerID>'.
stdin_open: true
tty: true

enterprise-catalog-curations-worker:
image: edxops/enterprise-catalog-dev
command: bash -c 'cd /edx/app/enterprise_catalog/enterprise_catalog && celery -A enterprise_catalog worker -Q enterprise_catalog.curations -l DEBUG'
container_name: enterprise.catalog.curations
depends_on:
- mysql80
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
COLUMNS: 80
hostname: curations.catalog.enterprise
ports:
- "18162:18162"
restart: always
# Allows attachment to this container using 'docker attach <containerID>'.
stdin_open: true
tty: true

license-manager:
image: edxops/license-manager-dev:latest
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.license-manager"
hostname: license-manager.devstack.edx
# Use the Django devserver, so that we can hot-reload code changes
command: bash -c 'while true; do python /edx/app/license_manager/manage.py runserver 0.0.0.0:18170; sleep 2; done'
ports:
- "18170:18170"
depends_on:
- mysql80
- license-manager-worker
# Allows attachment to this container using 'docker attach <containerID>'.
stdin_open: true
tty: true
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: license_manager.settings.devstack
DJANGO_WATCHMAN_TIMEOUT: 30
ENABLE_DJANGO_TOOLBAR: 1

license-manager-worker:
image: edxops/license-manager-dev:latest
command: bash -c 'cd /edx/app/license_manager/license_manager && celery -A license_manager worker -Q license_manager.default -l DEBUG'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.license-manager-worker"
hostname: license-manager-worker.devstack.edx
depends_on:
- mysql80
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: license_manager.settings.devstack
COLUMNS: 80
ports:
- "18171:18171"
restart: always
stdin_open: true
tty: true

bulk-enrollment-worker:
image: edxops/license-manager-dev:latest
command: bash -c 'cd /edx/app/license_manager/license_manager && celery -A license_manager worker -Q license_manager.bulk_enrollment -l DEBUG'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.license-manager.bulk-enrollment-worker"
hostname: license-manager.bulk-enrollment-worker.devstack.edx
depends_on:
- mysql80
environment:
CELERY_ALWAYS_EAGER: 'false'
CELERY_BROKER_TRANSPORT: redis
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
CELERY_BROKER_VHOST: 0
CELERY_BROKER_PASSWORD: password
DJANGO_SETTINGS_MODULE: license_manager.settings.devstack
COLUMNS: 80
ports:
- "18172:18172"
restart: always
stdin_open: true
tty: true

designer:
image: edxops/designer-dev:latest # this image doesn't exist on dockerhub yet
container_name: edx.devstack.designer
Expand Down Expand Up @@ -733,6 +886,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-account'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-account"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -748,6 +903,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-profile'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-profile"
environment:
PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@~2.0.0'
networks:
default:
aliases:
Expand All @@ -763,6 +920,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-authn'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-authn"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -778,6 +937,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-course-authoring'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-course-authoring"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand Down Expand Up @@ -808,6 +969,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-ora-grading'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-ora-grading"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -823,6 +986,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-learner-dashboard'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learner-dashboard"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -838,6 +1003,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-learner-record'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learner-record"
environment:
PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@~2.0.0'
networks:
default:
aliases:
Expand All @@ -853,6 +1020,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-learning'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learning"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -868,6 +1037,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-library-authoring'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-library-authoring"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand All @@ -884,6 +1055,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-payment'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-payment"
environment:
PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@^2.0.6'
networks:
default:
aliases:
Expand All @@ -899,6 +1072,8 @@ services:
service: microfrontend
working_dir: '/edx/app/frontend-app-program-console'
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-program-console"
environment:
PARAGON_BRAND_PACKAGE: '@edx/[email protected]'
networks:
default:
aliases:
Expand Down Expand Up @@ -936,4 +1111,3 @@ volumes:
mysql57_data:
mysql80_data:
redis_data:
designer_mysql:
9 changes: 9 additions & 0 deletions docs/service_list.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ Instead of a service name or list, you can also run commands like ``make dev.pro
+------------------------------------+-------------------------------------+----------------+--------------+
| `frontend-app-authn`_ | http://localhost:1999/ | MFE (React.js) | Default |
+------------------------------------+-------------------------------------+----------------+--------------+
| `codejail`_ | http://localhost:18030/ | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `registrar`_ | http://localhost:18734/api-docs/ | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `frontend-app-program-console`_ | http://localhost:1976/ | MFE (React.js) | Extra |
Expand All @@ -61,10 +63,14 @@ Instead of a service name or list, you can also run commands like ``make dev.pro
+------------------------------------+-------------------------------------+----------------+--------------+
| `analyticsapi`_ | http://localhost:19001 | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `license-manager`_ | http://localhost:18171 | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `frontend-app-ora-grading`_ | http://localhost:1993 | MFE (React.js) | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `designer`_ | http://localhost:3307 | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+
| `enterprise-catalog`_ | http://localhost:18160/ | Python/Django | Extra |
+------------------------------------+-------------------------------------+----------------+--------------+

Some common service combinations include:

Expand All @@ -82,6 +88,7 @@ Some common service combinations include:
.. _frontend-app-gradebook: https://github.com/openedx/frontend-app-gradebook
.. _lms: https://github.com/openedx/edx-platform
.. _frontend-app-program-console: https://github.com/edx/frontend-app-program-console
.. _codejail: https://github.com/openedx/codejail-service
.. _registrar: https://github.com/edx/registrar
.. _cms: https://github.com/openedx/edx-platform
.. _frontend-app-learner-dashboard: https://github.com/openedx/frontend-app-learner-dashboard
Expand All @@ -97,4 +104,6 @@ Some common service combinations include:
.. _frontend-app-ora-grading: https://github.com/edx/frontend-app-ora-grading
.. _insights: https://github.com/edx/edx-analytics-dashboard
.. _analyticsapi: https://github.com/edx/edx-analytics-data-api
.. _enterprise-catalog: https://github.com/openedx/enterprise-catalog
.. _license-manager: https://github.com/openedx/license-manager
.. _designer: https://github.com/edx/portal-designer
13 changes: 12 additions & 1 deletion microfrontend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,18 @@ services:
#
# Fail fast if package install fails to avoid mysterious
# errors later.
command: bash -c 'npm ci || exit 1; while true; do npm start; sleep 2; done'
command:
- bash
- -c
- |
npm ci || exit 1
if [ -n "$(printenv PARAGON_BRAND_PACKAGE)" ]; then
npx paragon install-theme "$(printenv PARAGON_BRAND_PACKAGE)" || exit 1
fi
while true; do
npm start
sleep 2
done
stdin_open: true
tty: true
image: node:18
Expand Down
Loading

0 comments on commit 1781520

Please sign in to comment.