Ubuntu 24.04 #2051
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-24.04 | |
steps: | |
- name: Install apt dependencies (initial) | |
run: |- | |
sudo apt-get update | |
sudo apt-get install -y \ | |
ca-certificates \ | |
python-is-python3 \ | |
python3 \ | |
python3-pip \ | |
python3.12-dev \ | |
python3.12-venv \ | |
software-properties-common | |
- name: Install apt dependencies (nsjail) | |
run: |- | |
sudo apt-get update | |
sudo apt-get install -y \ | |
autoconf \ | |
bison \ | |
flex \ | |
g++ \ | |
gcc \ | |
git \ | |
libnl-route-3-dev \ | |
libprotobuf-dev \ | |
libtool \ | |
make \ | |
pkg-config \ | |
protobuf-compiler | |
- name: Install apt dependencies (decomp.me) | |
run: |- | |
sudo dpkg --add-architecture i386 | |
sudo add-apt-repository -y ppa:stsp-0/dj64 | |
sudo add-apt-repository -y ppa:dosemu2/ppa | |
sudo apt-get update | |
sudo apt-get install -y -o APT::Immediate-Configure=false \ | |
binutils-aarch64-linux-gnu \ | |
binutils-arm-none-eabi \ | |
binutils-djgpp \ | |
binutils-mingw-w64-i686 \ | |
binutils-mips-linux-gnu \ | |
binutils-powerpc-linux-gnu \ | |
binutils-sh-elf \ | |
curl \ | |
dj64 \ | |
dos2unix \ | |
dosemu2 \ | |
gcc-mips-linux-gnu \ | |
git \ | |
iptables \ | |
libarchive-tools \ | |
libc6-dev-i386 \ | |
libdevmapper1.02.1 \ | |
libgpgme11 \ | |
libnl-route-3-200 \ | |
libprotobuf-dev \ | |
libtinfo6 \ | |
netcat-traditional \ | |
unzip \ | |
wget \ | |
wine | |
# FIXME: clang needs libtinfo5 which is not available on Ubuntu 24.04 | |
- name: Install libtinfo5 for clang | |
run: |- | |
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb | |
sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb | |
- name: Install nsjail | |
run: |- | |
git clone --recursive --branch=3.4 https://github.com/google/nsjail | |
make -C nsjail | |
sudo cp nsjail/nsjail /usr/bin/ | |
- name: Install mips PS2 binutils | |
run: |- | |
wget https://github.com/decompals/binutils-mips-ps2-decompals/releases/download/v0.4/binutils-mips-ps2-decompals-linux-x86-64.tar.gz | |
sudo tar xvzf binutils-mips-ps2-decompals-linux-x86-64.tar.gz -C /usr/bin mips-ps2-decompals-as mips-ps2-decompals-nm mips-ps2-decompals-objdump | |
- name: Install GC/Wii binutils | |
run: |- | |
curl -sSL https://github.com/encounter/gc-wii-binutils/releases/download/2.42-1/linux-`uname -m`.zip | \ | |
sudo bsdtar -xvf- -C /usr/bin | |
sudo chmod +x /usr/bin/powerpc-eabi-* | |
- name: Install MSDOS binutils | |
run: |- | |
wget https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz | |
sudo tar xvzf omftools.tar.gz -C /usr/bin jwasm | |
wget https://github.com/decompals/binutils-omf/releases/download/v0.1/omftools-linux-x86_64.tar.gz | |
sudo tar xvzf omftools-linux-x86_64.tar.gz -C /usr/bin omf-nm omf-objdump | |
- name: Install wibo | |
run: |- | |
wget https://github.com/decompals/wibo/releases/download/0.6.16/wibo && chmod +x wibo && sudo cp wibo /usr/bin/ | |
- name: Install poetry | |
run: pipx install poetry | |
- uses: actions/checkout@v4 | |
- name: Setup Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- name: Install backend Python dependencies | |
run: cd backend && poetry install --no-root | |
- name: Download compilers | |
run: |- | |
cd backend | |
poetry run python3 compilers/download.py | |
- name: Download libraries | |
run: |- | |
cd backend | |
poetry run python3 libraries/download.py | |
- 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 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
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@v4 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Setup Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- name: Install Poetry | |
run: pip install --user poetry | |
- run: cd backend && poetry install --no-root | |
- 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-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build decompme_backend image | |
run: |- | |
docker build backend -t decompme_backend | |
- name: Run tests | |
run: |- | |
mkdir -p sandbox && chmod 777 sandbox | |
mkdir -p local_files && chmod 777 local_files | |
mkdir -p compilers && chmod 777 compilers | |
mkdir -p libraries && chmod 777 libraries | |
docker run \ | |
-v $(pwd):/decomp.me \ | |
-v $(pwd)/local_files:/local_files \ | |
-v $(pwd)/compilers:/compilers \ | |
-v $(pwd)/libraries:/libraries \ | |
--security-opt apparmor=unconfined \ | |
--security-opt seccomp=unconfined \ | |
--entrypoint /bin/bash \ | |
-e COMPILER_BASE_PATH=/compilers \ | |
-e LIBRARY_BASE_PATH=/libraries \ | |
-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 --no-root && \ | |
poetry run compilers/download.py --compilers-dir ${COMPILER_BASE_PATH} && \ | |
poetry run libraries/download.py --libraries-dir ${LIBRARY_BASE_PATH} && \ | |
for r in wine/*.reg; do regedit $r; done && \ | |
poetry run python manage.py test' | |
frontend_lint: | |
name: biome | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node.js 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: yarn | |
cache-dependency-path: frontend/yarn.lock | |
- name: Install frontend dependencies | |
run: cd frontend && yarn --frozen-lockfile | |
- name: Run Biome | |
run: cd frontend && yarn lint | |
mypy: | |
name: mypy | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Setup Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: poetry | |
cache-dependency-path: backend/poetry.lock | |
- run: |- | |
cd backend | |
poetry install --no-root | |
poetry run mypy | |
black: | |
name: black | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: psf/black@stable | |
with: | |
src: "./backend" |