Switch to uv
for package management
#2529
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
# WARNING: Do not edit this file manually! Edit ci/spec.yml and run ci/regen-workflow.py. | |
{ | |
"name": "CI", | |
"on": [ | |
"push", | |
"pull_request" | |
], | |
"defaults": { | |
"run": { | |
"shell": "bash" | |
} | |
}, | |
"env": { | |
"PRODUCTION": "TRUE" | |
}, | |
"jobs": { | |
"linting": { | |
"runs-on": "ubuntu-latest", | |
"strategy": { | |
"matrix": { | |
"python-version": [ | |
3.8 | |
] | |
}, | |
"fail-fast": false | |
}, | |
"steps": [ | |
{ | |
"name": "Set up repo", | |
"uses": "actions/checkout@v2" | |
}, | |
{ | |
"name": "Set up uv", | |
"uses": "astral-sh/setup-uv@v3", | |
"with": { | |
"enable-cache": true | |
} | |
}, | |
{ | |
"name": "Set up Python ${{ matrix.python-version }}", | |
"run": "uv python install ${{ matrix.python-version }}" | |
}, | |
{ | |
"name": "Set up packages", | |
"run": "set -e\nuv sync --locked\n# change path and env vars\nsource .venv/bin/activate\necho \"PATH=$PATH\" >> $GITHUB_ENV\necho \"VIRTUAL_ENV=${VIRTUAL_ENV}\" >> $GITHUB_ENV\n" | |
}, | |
{ | |
"name": "Copy secret.py", | |
"run": "cp intranet/settings/ci_secret.py intranet/settings/secret.py" | |
}, | |
{ | |
"name": "Run pre-commit", | |
"run": "pre-commit run --all-files" | |
} | |
] | |
}, | |
"build": { | |
"runs-on": "ubuntu-latest", | |
"strategy": { | |
"matrix": { | |
"python-version": [ | |
3.8 | |
] | |
}, | |
"fail-fast": false | |
}, | |
"steps": [ | |
{ | |
"name": "Set up repo (fetching all commits)", | |
"uses": "actions/checkout@v2", | |
"with": { | |
"fetch-depth": 0 | |
} | |
}, | |
{ | |
"name": "Set up uv", | |
"uses": "astral-sh/setup-uv@v3", | |
"with": { | |
"enable-cache": true | |
} | |
}, | |
{ | |
"name": "Set up Python ${{ matrix.python-version }}", | |
"run": "uv python install ${{ matrix.python-version }}" | |
}, | |
{ | |
"name": "Set up packages", | |
"run": "set -e\nuv sync --locked\n# change path and env vars\nsource .venv/bin/activate\necho \"PATH=$PATH\" >> $GITHUB_ENV\necho \"VIRTUAL_ENV=${VIRTUAL_ENV}\" >> $GITHUB_ENV\n" | |
}, | |
{ | |
"name": "Copy secret.py", | |
"run": "cp intranet/settings/ci_secret.py intranet/settings/secret.py" | |
}, | |
{ | |
"name": "Regenerate workflow YAML file and check for changes", | |
"run": "./scripts/build_ensure_no_changes.sh ./ci/regen-workflow.py" | |
}, | |
{ | |
"name": "Check for changes to CI spec", | |
"run": "./scripts/build_ensure_no_changes.sh ./ci/regen-workflow.py" | |
}, | |
{ | |
"name": "Validate PR commit messages", | |
"if": "github.event_name == 'pull_request'", | |
"run": "./scripts/validate-commit-messages.py ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}" | |
}, | |
{ | |
"name": "Validate push commit messages", | |
"if": "github.event_name == 'push' && (github.repository_owner != 'tjcsl' || github.ref != 'refs/heads/master' || github.ref != 'refs/heads/dev')", | |
"run": "git fetch origin ${{ github.event.before }} && ./scripts/validate-commit-messages.py ${{ github.event.before }}..${{ github.event.after }}" | |
}, | |
{ | |
"name": "Build docs", | |
"run": "./scripts/build_ensure_no_changes.sh ./scripts/build_docs.sh" | |
}, | |
{ | |
"name": "Push docs", | |
"if": "github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository_owner == 'tjcsl' && matrix.python-version == 3.8", | |
"run": "./scripts/push_docs.sh", | |
"env": { | |
"GH_TOKEN": "${{ secrets.DOCS_GH_TOKEN }}" | |
} | |
} | |
] | |
}, | |
"tests": { | |
"runs-on": "ubuntu-latest", | |
"strategy": { | |
"matrix": { | |
"python-version": [ | |
3.8 | |
], | |
"node-version": [ | |
"12.x" | |
] | |
}, | |
"fail-fast": false | |
}, | |
"services": { | |
"rabbitmq": { | |
"image": "rabbitmq:latest", | |
"ports": [ | |
"5672:5672" | |
], | |
"options": "--health-cmd \"rabbitmqctl node_health_check\" --health-interval 6s --health-timeout 5s --health-retries 10" | |
}, | |
"redis": { | |
"image": "redis:latest", | |
"ports": [ | |
"6379:6379" | |
], | |
"options": "--entrypoint redis-server" | |
}, | |
"postgres": { | |
"image": "postgres:latest", | |
"env": { | |
"POSTGRES_USER": "postgres", | |
"POSTGRES_PASSWORD": "postgres", | |
"POSTGRES_DB": "postgres" | |
}, | |
"ports": [ | |
"5432:5432" | |
], | |
"options": "--health-cmd pg_isready --health-interval 6s --health-timeout 5s --health-retries 9" | |
} | |
}, | |
"steps": [ | |
{ | |
"name": "Set up repo", | |
"uses": "actions/checkout@v2" | |
}, | |
{ | |
"name": "Set up uv", | |
"uses": "astral-sh/setup-uv@v3", | |
"with": { | |
"enable-cache": true | |
} | |
}, | |
{ | |
"name": "Set up Python ${{ matrix.python-version }}", | |
"run": "uv python install ${{ matrix.python-version }}" | |
}, | |
{ | |
"name": "Set up packages", | |
"run": "set -e\nuv sync --locked\n# change path and env vars\nsource .venv/bin/activate\necho \"PATH=$PATH\" >> $GITHUB_ENV\necho \"VIRTUAL_ENV=${VIRTUAL_ENV}\" >> $GITHUB_ENV\n" | |
}, | |
{ | |
"name": "Copy secret.py", | |
"run": "cp intranet/settings/ci_secret.py intranet/settings/secret.py" | |
}, | |
{ | |
"name": "Set up Node.js ${{ matrix.node-version }}", | |
"uses": "actions/setup-node@v1", | |
"with": { | |
"node-version": "${{ matrix.node-version }}" | |
} | |
}, | |
{ | |
"name": "Install Sass and add Node modules bin to PATH", | |
"run": "set -e\nnpm install sass\necho \"PATH=${{ github.workspace }}/node_modules/.bin:$PATH\" >> $GITHUB_ENV\n" | |
}, | |
{ | |
"name": "Set and create PGPASSFILE", | |
"run": "set -e\nPGPASSFILE=${{ runner.temp }}/.pgpass\necho \"PGPASSFILE=$PGPASSFILE\" >> $GITHUB_ENV\necho 127.0.0.1:5432:postgres:postgres:postgres >$PGPASSFILE\nchmod 600 $PGPASSFILE\n" | |
}, | |
{ | |
"name": "Create database", | |
"run": "psql -U postgres -h 127.0.0.1 -c 'create database ion'" | |
}, | |
{ | |
"name": "install Kerberos", | |
"run": "sudo apt update\nsudo apt install -y krb5-user\n" | |
}, | |
{ | |
"name": "Install coverage", | |
"run": "uv pip install pytest-cov" | |
}, | |
{ | |
"name": "Run tests (Fork)", | |
"if": "github.repository_owner != 'tjcsl'", | |
"run": "coverage run -a ./manage.py test --noinput --parallel 4" | |
}, | |
{ | |
"name": "Run tests (PR/Push)", | |
"if": "github.repository_owner == 'tjcsl'", | |
"run": "coverage run -a ./manage.py test --noinput" | |
}, | |
{ | |
"name": "Check for unmigrated changes", | |
"run": "coverage run -a ./manage.py makemigrations --noinput --check" | |
}, | |
{ | |
"name": "Migrate database", | |
"run": "coverage run -a ./manage.py migrate" | |
}, | |
{ | |
"name": "Collect static files", | |
"run": "coverage run -a ./manage.py collectstatic --noinput -v 0" | |
}, | |
{ | |
"name": "Report coverage to Coveralls", | |
"uses": "AndreMiras/coveralls-python-action@develop", | |
"with": { | |
"parallel": true | |
} | |
}, | |
{ | |
"name": "Build coverage XML file", | |
"if": "github.repository_owner == 'tjcsl' && github.event_name != 'pull_request'", | |
"run": "coverage xml" | |
}, | |
{ | |
"name": "Report coverage to Codacy", | |
"uses": "codacy/codacy-coverage-reporter-action@master", | |
"if": "github.repository_owner == 'tjcsl' && github.event_name != 'pull_request'", | |
"with": { | |
"coverage-reports": "coverage.xml", | |
"project-token": "${{ secrets.CODACY_PROJECT_TOKEN }}" | |
} | |
} | |
] | |
}, | |
"finish_success": { | |
"needs": [ | |
"linting", | |
"build", | |
"tests" | |
], | |
"runs-on": "ubuntu-latest", | |
"steps": [ | |
{ | |
"name": "Tell Coveralls that parallel jobs have finished", | |
"uses": "coverallsapp/github-action@master", | |
"with": { | |
"github-token": "${{ secrets.GITHUB_TOKEN }}", | |
"parallel-finished": true | |
} | |
} | |
] | |
} | |
} | |
} |