minor #46
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: CI | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
env: | |
DISPLAY: :0 | |
PYTEST_ADDOPTS: "--color=yes" # colors in pytest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04, macos-latest, windows-latest] | |
python: ["3.8", "3.9", "3.10", "3.11"] | |
steps: | |
- name: Checkout the repository | |
uses: actions/checkout@v3 | |
- name: Install Poetry | |
run: | | |
pipx install "poetry==1.5.*" | |
poetry config virtualenvs.prefer-active-python true | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
cache: "poetry" | |
- name: Setup macOS PATH | |
if: runner.os == 'macOS' | |
run: | | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Setup cache variables | |
shell: bash | |
id: cache-vars | |
run: | | |
echo "date=$(/bin/date -u "+%m%w%Y")" >> $GITHUB_OUTPUT | |
- name: Install and cache ffmpeg (all OS) | |
uses: FedericoCarboni/setup-ffmpeg@v2 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
id: setup-ffmpeg | |
- name: Install system dependencies (Linux) | |
if: runner.os == 'Linux' | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: python3-opengl libpango1.0-dev xvfb | |
version: 1.0 | |
- name: Install Texlive (Linux) | |
if: runner.os == 'Linux' | |
uses: teatimeguest/setup-texlive-action@v2 | |
with: | |
cache: true | |
packages: scheme-basic fontspec inputenc fontenc tipa mathrsfs calligra xcolor standalone preview doublestroke ms everysel setspace rsfs relsize ragged2e fundus-calligra microtype wasysym physics dvisvgm jknapltx wasy cm-super babel-english gnu-freefont mathastext cbfonts-fd | |
- name: Start virtual display (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
# start xvfb in background | |
sudo /usr/bin/Xvfb $DISPLAY -screen 0 1280x1024x24 & | |
- name: Setup macOS cache | |
uses: actions/cache@v3 | |
id: cache-macos | |
if: runner.os == 'macOS' | |
with: | |
path: ${{ github.workspace }}/macos-cache | |
key: ${{ runner.os }}-dependencies-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.cache-vars.outputs.date }}-1 | |
- name: Install system dependencies (MacOS) | |
if: runner.os == 'macOS' && steps.cache-macos.outputs.cache-hit != 'true' | |
run: | | |
tinyTexPackages=$(python -c "import json;print(' '.join(json.load(open('.github/manimdependency.json'))['macos']['tinytex']))") | |
IFS=' ' | |
read -a ttp <<< "$tinyTexPackages" | |
oriPath=$PATH | |
sudo mkdir -p $PWD/macos-cache | |
echo "Install TinyTeX" | |
sudo curl -L -o "/tmp/TinyTeX.tgz" "https://github.com/yihui/tinytex-releases/releases/download/daily/TinyTeX-1.tgz" | |
sudo tar zxf "/tmp/TinyTeX.tgz" -C "$PWD/macos-cache" | |
export PATH="$PWD/macos-cache/TinyTeX/bin/universal-darwin:$PATH" | |
sudo tlmgr update --self | |
for i in "${ttp[@]}"; do | |
sudo tlmgr install "$i" | |
done | |
export PATH="$oriPath" | |
echo "Completed TinyTeX" | |
- name: Install cairo (MacOS) | |
if: runner.os == 'macOS' | |
run: brew install cairo | |
- name: Add macOS dependencies to PATH | |
if: runner.os == 'macOS' | |
shell: bash | |
run: | | |
echo "/Library/TeX/texbin" >> $GITHUB_PATH | |
echo "$HOME/.poetry/bin" >> $GITHUB_PATH | |
echo "$PWD/macos-cache/TinyTeX/bin/universal-darwin" >> $GITHUB_PATH | |
- name: Setup Windows cache | |
id: cache-windows | |
if: runner.os == 'Windows' | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace }}\ManimCache | |
key: ${{ runner.os }}-dependencies-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.cache-vars.outputs.date }}-1 | |
- uses: ssciwr/setup-mesa-dist-win@v1 | |
- name: Install system dependencies (Windows) | |
if: runner.os == 'Windows' && steps.cache-windows.outputs.cache-hit != 'true' | |
run: | | |
$tinyTexPackages = $(python -c "import json;print(' '.join(json.load(open('.github/manimdependency.json'))['windows']['tinytex']))") -Split ' ' | |
$OriPath = $env:PATH | |
echo "Install Tinytex" | |
Invoke-WebRequest "https://github.com/yihui/tinytex-releases/releases/download/daily/TinyTeX-1.zip" -O "$($env:TMP)\TinyTex.zip" | |
Expand-Archive -LiteralPath "$($env:TMP)\TinyTex.zip" -DestinationPath "$($PWD)\ManimCache\LatexWindows" | |
$env:Path = "$($PWD)\ManimCache\LatexWindows\TinyTeX\bin\windows;$($env:PATH)" | |
tlmgr update --self | |
foreach ($c in $tinyTexPackages){ | |
$c=$c.Trim() | |
tlmgr install $c | |
} | |
$env:PATH=$OriPath | |
echo "Completed Latex" | |
- name: Add Windows dependencies to PATH | |
if: runner.os == 'Windows' | |
run: | | |
$env:Path += ";" + "$($PWD)\ManimCache\LatexWindows\TinyTeX\bin\windows" | |
$env:Path = "$env:USERPROFILE\.poetry\bin;$($env:PATH)" | |
echo "$env:Path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Install ManimExtra | |
run: | | |
poetry config installer.modern-installation false | |
poetry install | |
- name: Run tests | |
run: | | |
poetry run python -m pytest | |
- name: Run module doctests | |
run: | | |
poetry run python -m pytest -v --cov-append --ignore-glob="*opengl*" --doctest-modules manim | |
- name: Run doctests in rst files | |
run: | | |
cd docs && poetry run make doctest O=-tskip-manim |