Skip to content

executors: make compiler fs whitelists a superset of their runtimes' #96

executors: make compiler fs whitelists a superset of their runtimes'

executors: make compiler fs whitelists a superset of their runtimes' #96

Workflow file for this run

name: build
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install Black and Flake8
run: |
pip install black==22.3 flake8==5.0.4 flake8-future-import flake8-logging-format flake8-import-order flake8-quotes flake8-black
- name: Run Flake8
run: |
black --version
flake8 --version
flake8
- name: Install clang-format 12
run: |
wget -O clang-format https://github.com/DMOJ/clang-tools-static-binaries/releases/download/master-5ea3d18c/clang-format-12_linux-amd64
chmod a+x ./clang-format
- name: Run clang-format
run: find dmoj/ \( -name '*.h' -or -name '*.cpp' -or -name '*.c' \) -not -name _cptbox.cpp -print0 | xargs -0 ./clang-format --dry-run -Werror --color
mypy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies and mypy
run: |
pip install cython mypy types-termcolor types-requests types-PyYAML
pip install -r requirements.txt
- name: Verify mypy types
run: |
mypy --version
mypy dmoj
test-sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install build dependencies
run: pip install cython
- name: Create sdist
run: python setup.py sdist
- name: Install test dependencies
run: sudo apt-get install -y libseccomp-dev
- name: Test sdist
run: |
pip install dist/*.tar.gz
dmoj-autoconf
amd64:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11' ]
steps:
- uses: actions/checkout@v3
- name: Download docker image
run: docker pull dmoj/runtimes-tier3
- name: Install python
run: |
curl -L "https://github.com/DMOJ/runtimes-python/releases/latest/download/python${{ matrix.python-version }}-amd64.tar.gz" |
tar -xz
- name: Create docker scripts
run: |
cat > run <<'EOF'
#!/bin/bash -e
export PYTHONUNBUFFERED=1
export LANG=C.UTF-8
export PYTHONIOENCODING=utf8
cd /code
export PYTHON="/code/python${{ matrix.python-version }}/bin/python${{ matrix.python-version }}"
"$PYTHON" -m pip install --upgrade pip wheel
"$PYTHON" -m pip install cython coverage
"$PYTHON" -m pip install -e .[test]
chmod o+w .
runuser -u judge -w PATH /code/run-su
EOF
cat > run-su <<'EOF'
#!/bin/bash -e
. ~/.profile
cd /code
"$PYTHON" -m coverage run -m unittest discover dmoj/tests/
"$PYTHON" -m coverage run --append .docker.test.py
"$PYTHON" -m coverage combine
"$PYTHON" -m coverage xml
EOF
chmod a+x run run-su
- uses: actions/cache@v2
with:
path: ~/docker-cache
key: ${{ runner.os }}-python-${{ matrix.python-version }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}
- name: Create cache
run: |
mkdir -p "$HOME/docker-cache/pip"
sudo chown root:root -R "$HOME/docker-cache"
- name: Execute tests in docker
run: docker run -e PYTHON_VERSION="${{ matrix.python-version }}" -v "$(pwd):/code" -v "$HOME/docker-cache:/root/.cache" --cap-add=SYS_PTRACE dmoj/runtimes-tier3
- name: Upload coverage data
uses: codecov/codecov-action@v1
- name: Prepare cache for storage
run: sudo chown -R "$USER:$USER" "$HOME/docker-cache"
arm64:
runs-on: [self-hosted, Linux, ARM64]
strategy:
matrix:
python-version: [ '3.11' ]
steps:
- uses: actions/checkout@v3
- name: Download docker image
run: docker pull dmoj/runtimes-tier3
- name: Create docker scripts
run: |
cat > run <<'EOF'
#!/bin/bash -e
cp -r /source /code
cd /code
curl -L "https://github.com/DMOJ/runtimes-python/releases/latest/download/python${{ matrix.python-version }}-aarch64.tar.gz" | tar -xz
export PYTHONUNBUFFERED=1
export LANG=C.UTF-8
export PYTHONIOENCODING=utf8
export PYTHON="/code/python${{ matrix.python-version }}/bin/python${{ matrix.python-version }}"
"$PYTHON" -m pip install --upgrade pip wheel
"$PYTHON" -m pip install cython coverage
"$PYTHON" -m pip install -e .[test]
chmod o+w .
code=0
runuser -u judge -w PATH /source/run-su || code=$?
cp /code/coverage.xml /source || true
exit "$code"
EOF
cat > run-su <<'EOF'
#!/bin/bash -e
. ~/.profile
cd /code
"$PYTHON" -m coverage run -m unittest discover dmoj/tests/
"$PYTHON" -m coverage run --append .docker.test.py
"$PYTHON" -m coverage combine
"$PYTHON" -m coverage xml
EOF
chmod a+x run run-su
- name: Execute tests in docker
run: |
docker run -e PYTHON_VERSION="${{ matrix.python-version }}" -v "$(pwd):/source" -v "$HOME/docker-cache:/root/.cache" \
--entrypoint=/usr/bin/tini --cap-add=SYS_PTRACE dmoj/runtimes-tier3 /source/run
- name: Upload coverage data
uses: codecov/codecov-action@v1