workflow fixes #2
Workflow file for this run
This file contains hidden or 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: build_and_test | |
| on: [push] | |
| jobs: | |
| build: | |
| name: Build necessary services | |
| runs-on: self-hosted | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v5 | |
| - name: "Setup: Copy environment variables" | |
| run: cp .env_circleci .env | |
| - name: "Setup: Create directories for MinIO (cannot be made by docker for some reason)" | |
| run: | | |
| mkdir -p var/minio/public | |
| mkdir -p var/minio/private | |
| - name: "Docker: Build containers and collect static files" | |
| run: | | |
| docker compose -f docker-compose.yml -f docker-compose.selenium.yml up -d | |
| docker compose -f docker-compose.yml -f docker-compose.selenium.yml exec django python manage.py collectstatic --noinput | |
| docker compose -f docker-compose.yml -f docker-compose.selenium.yml exec django python manage.py migrate | |
| docker compose -f docker-compose.yml exec django python ./manage.py createsuperuser --no-input | |
| - name: "Docker: Pull required images" | |
| run: | | |
| docker pull codalab/codalab-legacy:py37 | |
| docker pull codalab/codalab-legacy:py3 | |
| linter: | |
| name: Flake8 linter | |
| runs-on: self-hosted | |
| needs: [build] | |
| steps: | |
| - name: "Lint: Check code style with flake8" | |
| run: docker compose exec django flake8 src/ | |
| unit_tests: | |
| name: Unit test with Selenium | |
| runs-on: self-hosted | |
| needs: [linter, build] | |
| steps: | |
| - name: "Tests: Run unit/integration tests (excluding e2e)" | |
| run: docker compose -f docker-compose.yml -f docker-compose.selenium.yml exec django py.test src/ -m "not e2e" | |
| e2e: | |
| name: End to End tests with Playwright | |
| runs-on: self-hosted | |
| needs: [linter, build] | |
| steps: | |
| - name: "Tests: Run end-to-end (E2E) tests" | |
| run: docker compose -f docker-compose.yml -f docker-compose.selenium.yml exec django py.test src/tests/functional/ -m e2e | |
| cleanup: | |
| name: Cleanup | |
| runs-on: self-hosted | |
| if: ${{ always() }} | |
| needs: [unit_tests, e2e, linter] | |
| steps: | |
| - name: Cleanup | |
| run: | | |
| docker compose -f docker-compose.yml -f docker-compose.selenium.yml down --rmi all | |
| rm -rf ${{ github.workspace }}/* |