Compiler refactor #1021
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
name: PR | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
full_test_and_build: | |
name: full test and build | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Setup Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- name: Install backend Python dependencies | |
run: cd backend && poetry install | |
- name: Install apt dependencies (initial) | |
run: |- | |
sudo dpkg --add-architecture i386 | |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |
sudo apt-get update -qq | |
sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386 wine | |
sudo apt-get install \ | |
ca-certificates \ | |
curl \ | |
gnupg \ | |
lsb-release | |
sudo mkdir -p /etc/apt/keyrings | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg | |
echo \ | |
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ | |
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | |
sudo apt-get update -qq | |
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin | |
sudo apt-get install \ | |
binutils-aarch64-linux-gnu \ | |
binutils-mips-linux-gnu \ | |
binutils-powerpc-linux-gnu \ | |
binutils-sh-elf \ | |
binutils-djgpp \ | |
dos2unix \ | |
libprotobuf-dev \ | |
libnl-route-3-dev \ | |
libncurses5 \ | |
protobuf-compiler | |
- name: Install apt dependencies (cached) | |
uses: awalsh128/cache-apt-pkgs-action@v1 | |
with: | |
packages: docker-ce docker-ce-cli containerd.io docker-compose-plugin binutils-aarch64-linux-gnu binutils-mips-linux-gnu binutils-powerpc-linux-gnu binutils-sh-elf dos2unix libprotobuf-dev libnl-route-3-dev libncurses5 protobuf-compiler wine software-properties-common | |
version: 1.0 | |
- name: Install DOSEMU | |
run: |- | |
sudo add-apt-repository -y ppa:dosemu2/ppa | |
sudo apt-get update | |
sudo apt-get install -y dosemu2 | |
- name: Install nsjail | |
run: |- | |
git clone --recursive --branch=3.1 https://github.com/google/nsjail | |
make -C nsjail | |
sudo cp nsjail/nsjail /usr/bin/ | |
- name: Cache compilers | |
uses: actions/cache@v3 | |
with: | |
path: backend/compilers/download_cache | |
key: ${{ runner.os }}-compilers-${{ hashFiles('backend/compilers/download.py') }} | |
- name: Download compilers | |
run: |- | |
cd backend | |
poetry run python3 compilers/download.py | |
- name: Install dkp dependencies (ppc) | |
run: |- | |
mkdir -p bin | |
docker run \ | |
-v $(pwd)/bin:/tmp/bin \ | |
--entrypoint /bin/sh \ | |
devkitpro/devkitppc:20210726 \ | |
-c "cp /opt/devkitpro/devkitPPC/bin/powerpc* /tmp/bin" | |
sudo mv bin/powerpc* /usr/bin/ | |
- name: Install dkp dependencies (arm) | |
run: |- | |
mkdir -p bin | |
docker run \ | |
-v $(pwd)/bin:/tmp/bin \ | |
--entrypoint /bin/sh \ | |
devkitpro/devkitarm:20210726 \ | |
-c "cp /opt/devkitpro/devkitARM/bin/arm* /tmp/bin" | |
sudo mv bin/arm* /usr/bin/ | |
- name: Install wibo | |
run: |- | |
wget https://github.com/decompals/WiBo/releases/download/0.4.2/wibo && chmod +x wibo && sudo cp wibo /usr/bin/ | |
- name: Run backend tests | |
run: |- | |
mkdir -p "${WINEPREFIX}" | |
wineboot --init | |
cd backend | |
poetry run python3 manage.py test | |
env: | |
SYSTEM_ENV: GITHUB_WORKFLOW | |
WINEPREFIX: /tmp/wine | |
TIMEOUT_SCALE_FACTOR: 10 | |
- name: Migrate backend | |
run: cd backend && poetry run python3 ./manage.py migrate | |
- name: Start backend | |
run: cd backend && poetry run python3 ./manage.py runserver > /dev/null 2>&1 & | |
- name: Setup Node.js 18 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: yarn | |
cache-dependency-path: frontend/yarn.lock | |
- name: Install frontend dependencies | |
run: cd frontend && yarn --frozen-lockfile | |
- name: Build frontend | |
run: cd frontend && yarn build | |
backend_test_windows: | |
name: backend tests (windows) | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Setup Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- name: Install Poetry | |
run: pip install --user poetry | |
- run: cd backend && poetry install | |
- name: Run tests | |
run: |- | |
cd backend | |
poetry run python manage.py test | |
env: | |
SYSTEM_ENV: GITHUB_WORKFLOW | |
TIMEOUT_SCALE_FACTOR: 10 | |
backend_test_docker: | |
name: backend tests (docker) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build decompme_backend image | |
run: |- | |
docker build backend \ | |
-t decompme_backend \ | |
--build-arg ENABLE_GC_WII_SUPPORT=YES \ | |
--build-arg ENABLE_PS1_SUPPORT=YES \ | |
--build-arg ENABLE_SATURN_SUPPORT=YES | |
- name: Run tests | |
run: |- | |
mkdir -p sandbox && chmod 777 sandbox | |
mkdir -p local_files && chmod 777 local_files | |
docker run \ | |
-v $(pwd):/decomp.me \ | |
-v $(pwd)/local_files:/local_files \ | |
--security-opt apparmor=unconfined \ | |
--security-opt seccomp=unconfined \ | |
--entrypoint /bin/bash \ | |
-e COMPILER_BASE_PATH=/compilers \ | |
-e WINEPREFIX=/tmp/wine \ | |
-e LOCAL_FILE_DIR=/local_files \ | |
-e USE_SANDBOX_JAIL=on \ | |
-e SANDBOX_DISABLE_PROC=true \ | |
-e TIMEOUT_SCALE_FACTOR=10 \ | |
decompme_backend -c 'cd /decomp.me/backend && \ | |
poetry install && \ | |
poetry run python manage.py test' | |
frontend_lint: | |
name: eslint & stylelint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Node.js 18 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: yarn | |
cache-dependency-path: frontend/yarn.lock | |
- name: Install frontend dependencies | |
run: cd frontend && yarn --frozen-lockfile | |
- run: cd frontend && yarn lint | |
mypy: | |
name: mypy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Setup Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- run: |- | |
cd backend | |
poetry install | |
poetry run mypy | |
black: | |
name: black | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: psf/black@stable | |
with: | |
src: "./backend" |