Files
decomp.me/.github/workflows/ci.yml
triph 5ec67ba5dc Add PS2 EE GCC 2.9 and 3.2 compilers (#661)
* Add PS2 EE GCC 2.9-990721 and 3.2-001003-1 compilers

* Add PS2 compilers to download script

* Hash download script for CI compiler cache
2023-01-26 13:20:49 +09:00

222 lines
7.1 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
version: 1.0
- 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"