wrolpi/.circleci/config.yml
Roland 5621d47309
Video downloads have many more options. Downloads are migrated.
Storing video settings in session storage to help user start downloads consistently.

Applying channel tag name to new channels when download videos or channels.

Initializing map tiles when importing and resetting map.
2024-11-28 09:48:57 -07:00

218 lines
6.8 KiB
YAML

# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
version: 2.1
# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
jobs:
api-tests-3-11:
docker:
- image: cimg/python:3.11
- image: cimg/postgres:15.6
environment:
POSTGRES_USER: postgres
POSTGRES_DB: wrolpi
POSTGRES_PASSWORD: "wrolpi"
resource_class: medium
steps:
- checkout
- run: sudo apt-get update
- run: sudo apt-get install -y ffmpeg catdoc
- restore_cache:
key: deps-3.11-{{ checksum "requirements.txt" }}-4
- run:
name: Install Requirements
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- save_cache:
key: deps-3.11-{{ checksum "requirements.txt" }}-4
paths:
- "venv"
- run:
command: './venv/bin/pytest -svv --junitxml=test-results.xml'
- store_test_results:
path: test-results.xml
api-alembic-migrations:
docker:
- image: cimg/python:3.11
- image: cimg/postgres:15.6
environment:
POSTGRES_USER: wrolpi
POSTGRES_DB: wrolpi
POSTGRES_PASSWORD: "wrolpi"
resource_class: medium
steps:
- checkout
- restore_cache:
key: deps-3.11-{{ checksum "requirements.txt" }}-4
- run:
name: Install Requirements
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- save_cache:
key: deps-3.11-{{ checksum "requirements.txt" }}-4
paths:
- "venv"
- run:
command: ./venv/bin/python ./main.py db upgrade
api-tests-3-12:
docker:
- image: cimg/python:3.12
- image: cimg/postgres:15.6
environment:
POSTGRES_USER: postgres
POSTGRES_DB: wrolpi
POSTGRES_PASSWORD: "wrolpi"
resource_class: medium
steps:
- checkout
- run: sudo apt-get update
- run: sudo apt-get install -y ffmpeg catdoc
- restore_cache:
key: deps-3.12-{{ checksum "requirements.txt" }}-4
- run:
name: Install Requirements
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- save_cache:
key: deps-3.12-{{ checksum "requirements.txt" }}-4
paths:
- "venv"
- run:
command: './venv/bin/pytest -svv'
sanic-api-start:
docker:
- image: cimg/python:3.11
steps:
- checkout
- restore_cache:
key: deps-3.11-{{ checksum "requirements.txt" }}-4
- run:
name: Install dependencies
command: |
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
sudo mkdir -p /media/wrolpi
- run:
name: Start Sanic API
command: |
. venv/bin/activate
sanic main:api_app -H 0.0.0.0 -p 8081
background: true
- run:
name: Test Sanic API
command: |
sleep 20
curl http://0.0.0.0:8081/api/echo
- run:
name: Stop Sanic API
command: pkill -f sanic
react-app-start:
docker:
- image: cimg/node:20.13
resource_class: large
steps:
- checkout
- restore_cache:
key: app-{{ checksum "app/package-lock.json" }}
- run: cd app && npm install --legacy-peer-deps
- save_cache:
key: app-{{ checksum "app/package-lock.json" }}
paths:
- ./app/node_modules
- run:
name: Build React App
command: cd app && DISABLE_ESLINT_PLUGIN=true npm run build
- run:
name: Start React App
command: cd app && DISABLE_ESLINT_PLUGIN=true npm run start
background: true
- run:
name: Test React App
command: |
sleep 20
curl http://0.0.0.0:3000/manifest.json
- run:
name: Stop React App
command: pkill -f npm
react-app-cypress-components-chrome:
docker:
- image: cypress/browsers:node-20.18.0-chrome-130.0.6723.69-1-ff-131.0.3-edge-130.0.2849.52-1
resource_class: small
steps:
- checkout
- restore_cache:
key: app-{{ checksum "app/package-lock.json" }}
- run: cd app && npm install --legacy-peer-deps
- run:
name: Run Cypress component tests
command: |
cd app
npx cypress run --component --browser chrome --reporter junit --reporter-options "mochaFile=test-results.xml"
- store_artifacts:
path: app/cypress/videos
- store_artifacts:
path: app/cypress/screenshots
- store_test_results:
path: app/test-results.xml
react-app-cypress-components-firefox:
docker:
- image: cypress/browsers:node-20.18.0-chrome-130.0.6723.69-1-ff-131.0.3-edge-130.0.2849.52-1
resource_class: small
steps:
- checkout
- restore_cache:
key: app-{{ checksum "app/package-lock.json" }}
- run: cd app && npm install --legacy-peer-deps
- run:
name: Run Cypress component tests
command: |
cd app
npx cypress run --component --browser firefox --reporter junit --reporter-options "mochaFile=test-results.xml"
- store_artifacts:
path: app/cypress/videos
- store_artifacts:
path: app/cypress/screenshots
- store_test_results:
path: app/test-results.xml
react-app-cypress-components-edge:
docker:
- image: cypress/browsers:node-20.18.0-chrome-130.0.6723.69-1-ff-131.0.3-edge-130.0.2849.52-1
resource_class: small
steps:
- checkout
- restore_cache:
key: app-{{ checksum "app/package-lock.json" }}
- run: cd app && npm install --legacy-peer-deps
- run:
name: Run Cypress component tests
command: |
cd app
npx cypress run --component --browser edge --reporter junit --reporter-options "mochaFile=test-results.xml"
- store_artifacts:
path: app/cypress/videos
- store_artifacts:
path: app/cypress/screenshots
- store_test_results:
path: app/test-results.xml
workflows:
wrolpi-api-tests:
jobs:
- sanic-api-start
- api-tests-3-11
- api-alembic-migrations
# - api-tests-3-12 Sanic does not yet support 3.12.
wrolpi-app-test:
jobs:
- react-app-start
- react-app-cypress-components-chrome
- react-app-cypress-components-firefox
- react-app-cypress-components-edge