Skip to content

Add preview to content #25

Add preview to content

Add preview to content #25

Workflow file for this run

name: tests
on:
pull_request:
branches: [main, dev, v2]
types: [opened, synchronize]
# Cancel in progress workflows on pull_requests.
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
files-changed:
name: detect-changes
runs-on: ubuntu-latest
timeout-minutes: 3
permissions:
pull-requests: read
contents: read
outputs:
api: ${{ steps.changes.outputs.api }}
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
api:
- 'app/api/**'
api-test:
if: ${{ needs.files-changed.outputs.api == 'true' }}
name: api-test
needs: files-changed
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./app/api
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}
R5_HOST: ${{ secrets.R5_HOST }}
R5_AUTHORIZATION: ${{ secrets.R5_AUTHORIZATION }}
API_SECRET_KEY: ${{ secrets.API_SECRET_KEY }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }}
FIRST_ORGANIZATION: ${{ secrets.FIRST_ORGANIZATION }}
FIRST_SUPERUSER_EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
FIRST_SUPERUSER_NAME: ${{ secrets.FIRST_SUPERUSER_NAME }}
FIRST_SUPERUSER_SURNAME: ${{ secrets.FIRST_SUPERUSER_SURNAME }}
SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
BACKEND_CORS_ORIGIN: ${{ secrets.BACKEND_CORS_ORIGIN }}
RABBITMQ_DEFAULT_USER: ${{ secrets.RABBITMQ_DEFAULT_USER }}
RABBITMQ_DEFAULT_PASS: ${{ secrets.RABBITMQ_DEFAULT_PASS }}
CELERY_RESULT_EXPIRES: ${{ vars.CELERY_RESULT_EXPIRES }}
CELERY_TASK_TIME_LIMIT: ${{ vars.CELERY_TASK_TIME_LIMIT }}
API_REPLICAS: ${{ vars.API_REPLICAS }}
WORKER_REPLICAS: ${{ vars.WORKER_REPLICAS }}
WORKER_MEMORY_LIMIT: ${{ vars.WORKER_MEMORY_LIMIT }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11.4'
- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v3
with:
path: ~/.local
key: poetry-0
- name: Install Poetry
if: steps.cached-poetry.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1.3.3
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
- name: Lint
run: poetry run bash scripts/lint.sh
- name: Test
run: poetry run bash scripts/test.sh
# todo: add coverage
api-build:
if: ${{ needs.files-changed.outputs.api == 'true' }}
name: api-build
needs: api-test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v1
- name: Build changed auth api
uses: docker/build-push-action@v2
with:
context: ./app/api
file: ./app/api/Dockerfile
cache-from: type=gha
cache-to: type=gha,mode=max
push: false