Skip to content

Merge pull request #945 from cortex-lab/dev #849

Merge pull request #945 from cortex-lab/dev

Merge pull request #945 from cortex-lab/dev #849

Workflow file for this run

name: CI, approaching CD
on:
push:
branches:
- master
- dev
pull_request:
branches:
- master
- dev
jobs:
run_jobs:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:17
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Build database
run: psql -c "CREATE DATABASE githubactions;" -U postgres -h localhost -p 5432
env:
PGPASSWORD: postgres
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.13'
- name: Checkout branch
uses: actions/checkout@v3
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install coverage coveralls pyarrow pandas # for one_cache tests
env:
PIP_USE_MIRRORS: true
- name: Ruff
run: |
ruff check ./alyx
- name: Run tests
run: |
sudo mkdir /var/log/alyx
sudo touch /var/log/alyx/django.log
sudo chmod 666 /var/log/alyx/django.log
cd alyx
cp ./alyx/environment_template.env ./alyx/.env
cp ../deploy/docker/settings-deploy.py alyx/settings.py
cp ../deploy/docker/settings_lab-deploy.py alyx/settings_lab.py
python manage.py collectstatic --noinput --link
coverage run manage.py test -n
coveralls --service=github
env:
DJANGO_SETTINGS_MODULE: alyx.settings
PYTHONPATH: $HOME/builds/cortexlab/alyx
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
APACHE_LOG_DIR: /var/log/alyx
POSTGRES_HOST: localhost
# Docker steps only run when master branch pushed to directly OR when a PR is merged
- name: Set Docker conditional value if needed
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
run: |
echo "DOCKER_PUSH_NEEDED=true" >> "$GITHUB_ENV"
- name: Configure Docker login if needed
if: env.DOCKER_PUSH_NEEDED == 'true'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Set up Docker Buildx if needed
if: env.DOCKER_PUSH_NEEDED == 'true'
uses: docker/setup-buildx-action@v1
- name: Build and push Docker base image if needed
if: env.DOCKER_PUSH_NEEDED == 'true'
uses: docker/build-push-action@v2
with:
context: .
file: ./scripts/deployment_examples/alyx-docker/Dockerfile.base
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/alyx:base