mirror of
https://github.com/decompme/decomp.me.git
synced 2026-04-27 18:32:36 -05:00
8a5de1d2f0
* Download PSY-Q 3.x compilers
* Add PSY-Q 3.3 and PSY-Q 3.6 PlayStation 1 compilers
* Remove gcc2.6.3-mipsel for good
* Actually install compilers
* Clean-up psyq-msdos folder after downloading it
* Map /proc to allow dosemu2 to run
* Allow to compile with PSY-Q 3.6
* Remove debugging stuff
* Add PSY-Q 3.5 and remove 3.3
* Let ASPSX to be quiet
* Completely replace PSY-Q 3.3 with 3.5
* Modify Castlevania preset
* Add migration from gcc2.6.3-mipsel to psyq3.6
* clean-up
* Typo
* Install DOSEMU in the CI
* Group ENABLE_PS1_SUPPORT set-up
* fix migration script
* Unset the HOME directory globally
* New line
* undo more auto-formatting
* Remove unnecessary comment
* fix
* More autoformatting shenanigans
* Try to fix CI pipeline
* Fix download script
* lint
* lint
* Fix dosemu setup
* Speed-up PSYQ MSDOS compiler
* debugging stuff for the tests
this commit will be reverted
* testing sandbox thingie
* Revert "debugging stuff for the tests"
This reverts commit 6d026b9214.
* Trimming down what Sandbox mounts
* Mount all /dev but read only
227 lines
7.3 KiB
YAML
227 lines
7.3 KiB
YAML
name: PR
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
jobs:
|
|
full_test_and_build:
|
|
name: full test and build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- 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 purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
|
|
|
|
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 \
|
|
dos2unix \
|
|
libprotobuf-dev \
|
|
libnl-route-3-dev \
|
|
libncurses5 \
|
|
protobuf-compiler \
|
|
wine
|
|
- 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 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.2.4/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@v2
|
|
- 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@v2
|
|
- name: Build decompme_backend image
|
|
run: |-
|
|
docker build backend \
|
|
-t decompme_backend \
|
|
--build-arg ENABLE_WII_GC_SUPPORT=YES \
|
|
--build-arg ENABLE_PS1_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@v2
|
|
- 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@v2
|
|
- 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@v2
|
|
- uses: psf/black@stable
|
|
with:
|
|
src: "./backend"
|