format #19083
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push] | |
jobs: | |
python-tests: | |
runs-on: ubuntu-22.04 | |
services: | |
db: | |
image: postgres:15.10 | |
# Health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres # pragma: allowlist secret | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
redis: | |
image: redis:5.0.8 | |
ports: | |
- 6379:6379 | |
elastic: | |
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23 | |
env: | |
network.host: "0.0.0.0" | |
http.cors.enabled: "true" | |
http.cors.allow-origin: "*" | |
rest.action.multi.allow_explicit_index: "false" | |
ES_JAVA_OPTS: -Xms512m -Xmx512m" | |
ports: | |
- 9200:9200 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Apt update | |
run: sudo apt-get update -y | |
- name: Apt install | |
run: cat Aptfile | sudo xargs apt-get install | |
- name: Install poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.8.2 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9.18" | |
- name: Install dependencies | |
run: poetry install --no-interaction | |
# Configurations required for elasticsearch. | |
- name: Configure sysctl limits | |
run: | | |
sudo swapoff -a | |
sudo sysctl -w vm.swappiness=1 | |
sudo sysctl -w fs.file-max=262144 | |
sudo sysctl -w vm.max_map_count=262144 | |
- name: Runs Elasticsearch | |
uses: elastic/elastic-github-actions/elasticsearch@master | |
with: | |
stack-version: 6.7.1 | |
- name: Create test local state | |
run: ./scripts/test/stub-data.sh | |
- name: Running Celery | |
run: | | |
celery -A main worker -B -l INFO & | |
sleep 10 | |
env: | |
CELERY_TASK_ALWAYS_EAGER: 'True' | |
CELERY_BROKER_URL: redis://localhost:6379/4 | |
CELERY_RESULT_BACKEND: redis://localhost:6379/4 | |
SECRET_KEY: local_unsafe_key # pragma: allowlist secret | |
MITX_ONLINE_BASE_URL: http://localhost:8013 | |
MAILGUN_SENDER_DOMAIN: other.fake.site | |
MAILGUN_KEY: fake_mailgun_key | |
MITX_ONLINE_ADMIN_EMAIL: example@localhost | |
OPENEDX_API_CLIENT_ID: fake_client_id | |
OPENEDX_API_CLIENT_SECRET: fake_client_secret # pragma: allowlist secret | |
- name: Tests | |
run: | | |
export MEDIA_ROOT="$(mktemp -d)" | |
cp scripts/test/data/webpack-stats/* webpack-stats/ | |
./scripts/test/python_tests.sh | |
env: | |
DEBUG: False | |
NODE_ENV: 'production' | |
CELERY_TASK_ALWAYS_EAGER: 'True' | |
CELERY_BROKER_URL: redis://localhost:6379/4 | |
CELERY_RESULT_BACKEND: redis://localhost:6379/4 | |
DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres # pragma: allowlist secret | |
ELASTICSEARCH_URL: localhost:9200 | |
MAILGUN_KEY: fake_mailgun_key | |
MAILGUN_SENDER_DOMAIN: other.fake.site | |
MITX_ONLINE_ADMIN_EMAIL: example@localhost | |
MITX_ONLINE_BASE_URL: http://localhost:8013 | |
MITX_ONLINE_DB_DISABLE_SSL: 'True' | |
MITX_ONLINE_EMAIL_BACKEND: django.core.mail.backends.locmem.EmailBackend | |
MITX_ONLINE_NOTIFICATION_EMAIL_BACKEND: django.core.mail.backends.locmem.EmailBackend | |
MITX_ONLINE_SECURE_SSL_REDIRECT: 'False' | |
MITX_ONLINE_USE_S3: 'False' | |
OPENEDX_API_BASE_URL: http://localhost:18000 | |
OPENEDX_API_CLIENT_ID: fake_client_id | |
OPENEDX_API_CLIENT_SECRET: fake_client_secret # pragma: allowlist secret | |
SECRET_KEY: local_unsafe_key # pragma: allowlist secret | |
- name: Upload coverage to CodeCov | |
uses: codecov/codecov-action@v3 | |
with: | |
file: ./coverage.xml | |
javascript-tests: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup NodeJS | |
uses: actions/setup-node@v2-beta | |
with: | |
node-version: 15.14.0 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v3 | |
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install dependencies | |
run: yarn install --immutable | |
- name: Lints | |
run: yarn workspaces foreach run lint | |
- name: Code formatting | |
run: yarn workspaces foreach run fmt:check | |
- name: Scss lint | |
run: yarn workspaces foreach run scss_lint | |
- name: Flow | |
run: yarn workspaces foreach run flow | |
- name: Tests | |
run: yarn workspaces foreach run test | |
env: | |
CODECOV: true | |
NODE_ENV: development | |
- name: Webpack production build | |
run: | | |
yarn workspaces foreach run build --bail --mode production | |
env: | |
NODE_ENV: production | |
- name: Upload test coverage to CodeCov | |
uses: codecov/codecov-action@v3 | |
with: | |
file: coverage/lcov.info |