name: Pre-Compiled and Upload on: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: Windows: runs-on: windows-latest strategy: matrix: python-version: ["3.10"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | .\run-install.bat .\env\python.exe core.py "prerequisites" --models "True" --exe "True" --pretraineds_v1_f0 "False" --pretraineds_v2_f0 "True" --pretraineds_v1_nof0 "False" --pretraineds_v2_nof0 "False" - name: Clean up unnecessary files run: | Remove-Item -Path 'LICENSE', 'run-tensorboard.sh', 'run-install.sh', 'run-applio.sh', 'run-install.bat', 'requirements.txt', '.gitignore', '.github', '.git' -Recurse -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Include __pycache__ -Recurse -Directory | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue - name: Read version from config.json id: get-version run: | $version = (Get-Content -Path './assets/config.json' | ConvertFrom-Json).version echo "version=$version" >> $env:GITHUB_OUTPUT - name: Create ZIP file run: | $version = '${{ steps.get-version.outputs.version }}' Compress-Archive -Path 'D:\a\Applio\Applio\*' -DestinationPath "D:\a\Applio\ApplioV$version.zip" - name: Upload Windows Compiled env: HF_TOKEN: ${{ secrets.HF_TOKEN }} version: ${{ steps.get-version.outputs.version }} run: | .\env\python.exe -c " import os from huggingface_hub import login, upload_file token = os.getenv('HF_TOKEN') version = os.getenv('version') login(token) repo_id = 'IAHispano/Applio' repo_file_path = f'D:/a/Applio/ApplioV{version}.zip' upload_file( commit_message=f'{version}', path_or_fileobj=repo_file_path, path_in_repo=f'Compiled/Windows/ApplioV{version}.zip', repo_id=repo_id, token=token) " Linux: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10.12"] steps: - uses: actions/checkout@v4 - name: Free up space on runner run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf "/usr/local/share/boost" sudo rm -rf "$AGENT_TOOLSDIRECTORY" - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Read version from config.json id: get-version run: | version=$(jq -r '.version' assets/config.json) echo "version=$version" >> $GITHUB_OUTPUT - name: Create virtual environment run: | pip install huggingface_hub python -m venv .venv . .venv/bin/activate python -m ensurepip python -m pip install "pip<24.1" python -m pip install -r requirements.txt python -m pip install torch==2.3.1 torchvision torchaudio --upgrade --index-url https://download.pytorch.org/whl/cu121 python core.py "prerequisites" --models "True" --exe "True" --pretraineds_v1_f0 "False" --pretraineds_v2_f0 "True" --pretraineds_v1_nof0 "False" --pretraineds_v2_nof0 "False" find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete deactivate rm -f .venv/bin/Activate.ps1 .venv/bin/activate .venv/bin/activate.csh .venv/bin/activate.fish .venv/bin/pip .venv/bin/pip3 .venv/bin/pip3.10 .venv/bin/python .venv/bin/python3 .venv/bin/python3.10 - name: Clean up unnecessary files run: | rm -f LICENSE run-tensorboard.bat run-install.bat run-applio.bat run-install.sh requirements.txt .gitignore rm -rf .github .git - name: Create ZIP file run: | zip -9 -r ApplioV${{ steps.get-version.outputs.version }}.zip . - name: Upload Linux Compiled env: HF_TOKEN: ${{ secrets.HF_TOKEN }} version: ${{ steps.get-version.outputs.version }} run: | python -c " import os from huggingface_hub import login, upload_file token = os.getenv('HF_TOKEN') version = os.getenv('version') login(token) repo_id = 'IAHispano/Applio' repo_file_path = f'ApplioV{version}.zip' upload_file( commit_message=f'{version}', path_or_fileobj=repo_file_path, path_in_repo=f'Compiled/Linux/ApplioV{version}.zip', repo_id=repo_id, token=token) " Kaggle: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10.12"] steps: - uses: actions/checkout@v4 - name: Free up space on runner run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf "/usr/local/share/boost" sudo rm -rf "$AGENT_TOOLSDIRECTORY" - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Read version from config.json id: get-version run: | version=$(jq -r '.version' assets/config.json) echo "version=$version" >> $GITHUB_OUTPUT - name: Install uv and create virtual environment run: | sudo apt-get install -y pigz sudo apt-get install -y pv pip install uv huggingface_hub uv venv .venv --python 3.10.12 uv pip install -r requirements.txt uv pip install https://github.com/IAHispano/imjoy-elfinder.git uv pip uninstall torch torchvision torchaudio . .venv/bin/activate python -m ensurepip python -m pip install "pip<24.1" python -m pip install torch==2.3.1 torchvision torchaudio --upgrade --index-url https://download.pytorch.org/whl/cu121 deactivate wget https://huggingface.co/IAHispano/Applio/resolve/main/Enviroment/Kaggle/bin_kaggle.tar.gz?download=true -O bin_kaggle.tar.gz tar -xzf bin_kaggle.tar.gz cp -r bin/* .venv/bin/ rm -rf bin rm bin_kaggle.tar.gz rm -f .venv/pyvenv.cfg .venv/bin/activate .venv/bin/activate.bat .venv/bin/activate.csh .venv/bin/activate.fish .venv/bin/activate.nu .venv/bin/activate.ps1 .venv/bin/activate_this.py .venv/bin/deactivate.bat .venv/bin/pydoc.bat .venv/bin/python .venv/bin/python3 .venv/bin/python3.10 - name: Create TAR Env run: | tar --use-compress-program="pigz --best --recursive | pv" -cvf KaggleV2.tar.gz .venv - name: Upload Kaggle Env env: HF_TOKEN: ${{ secrets.HF_TOKEN }} version: ${{ steps.get-version.outputs.version }} run: | python -c " import os from huggingface_hub import login, upload_file token = os.getenv('HF_TOKEN') version = os.getenv('version') login(token) repo_id = 'IAHispano/Applio' repo_file_path = 'KaggleV2.tar.gz' upload_file( commit_message=f'{version}', path_or_fileobj=repo_file_path, path_in_repo=f'Enviroment/Kaggle/{repo_file_path}', repo_id=repo_id, token=token) " Colab: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10.12"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Download and extract pre-packaged dependencies run: | wget https://huggingface.co/IAHispano/Applio/resolve/main/Enviroment/Colab/tmp_packages.tar.gz?download=true -O prepackaged.tar.gz tar -xzf prepackaged.tar.gz -C /opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/ - name: Read version from config.json id: get-version run: | version=$(jq -r '.version' assets/config.json) echo "version=$version" >> $GITHUB_OUTPUT - name: Record initial state of site-packages run: | python -c " import csv import os def scan_and_write(base_path, output_file): with open(output_file, 'w', newline='') as f: writer = csv.writer(f) for dirpath, dirs, files in os.walk(base_path): for filename in files: fname = os.path.join(dirpath, filename) try: mtime = os.path.getmtime(fname) writer.writerow([fname, mtime]) except Exception as e: print(f'Skipping irrelevant nonexistent file {fname}: {str(e)}') print(f'Finished recording filesystem timestamps to {output_file}.') scan_and_write(\"/opt/hostedtoolcache/Python/3.10.12/x64\", \"./usr_files.csv\")" - name: Install dependencies run: | pip install -r requirements.txt pip uninstall torch torchvision torchaudio -y - name: Record final state of site-packages run: | python -c " import csv import os def scan_and_write(base_path, output_file): with open(output_file, 'w', newline='') as f: writer = csv.writer(f) for dirpath, dirs, files in os.walk(base_path): for filename in files: fname = os.path.join(dirpath, filename) try: mtime = os.path.getmtime(fname) writer.writerow([fname, mtime]) except Exception as e: print(f'Skipping irrelevant nonexistent file {fname}: {str(e)}') print(f'Finished recording filesystem timestamps to {output_file}.') scan_and_write(\"/opt/hostedtoolcache/Python/3.10.12/x64\", \"./usr_files_new.csv\")" - name: Create TAR file run: | python -c " import tarfile import os from tqdm import tqdm import csv def compare_files(old_file, new_file): old_files = {} new_files = {} with open(old_file, 'r') as f: reader = csv.reader(f) old_files = {rows[0]: rows[1] for rows in reader} with open(new_file, 'r') as f: reader = csv.reader(f) new_files = {rows[0]: rows[1] for rows in reader} removed_files = old_files.keys() - new_files.keys() added_files = new_files.keys() - old_files.keys() unchanged_files = old_files.keys() & new_files.keys() changed_files = {f for f in unchanged_files if old_files[f] != new_files[f]} for file in removed_files: print(f'File has been removed: {file}') for file in changed_files: print(f'File has been updated: {file}') return list(added_files) + list(changed_files) changed_files = compare_files('./usr_files.csv', './usr_files_new.csv') base_dir = '/opt/hostedtoolcache/Python/3.10.12/x64/' arc_base_dir = 'usr/local/' with tarfile.open('./Pnpur.tar.gz', 'w:gz') as new_tar: for file in tqdm(changed_files, desc='Compressing', unit='files'): relative_path = os.path.relpath(file, base_dir) if 'python3.10' in relative_path: if 'site-packages' not in relative_path: continue if 'site-packages' in relative_path: relative_path = relative_path.replace('site-packages', 'dist-packages') new_path = os.path.join(arc_base_dir, relative_path) new_tar.add(file, arcname=new_path) " - name: Upload Colab Env env: HF_TOKEN: ${{ secrets.HF_TOKEN }} version: ${{ steps.get-version.outputs.version }} run: | python -c " import os from huggingface_hub import login, upload_file token = os.getenv('HF_TOKEN') version = os.getenv('version') login(token) repo_id = 'IAHispano/Applio' repo_file_path = 'Pnpur.tar.gz' upload_file( commit_message=f'{version}', path_or_fileobj=repo_file_path, path_in_repo=f'Enviroment/Colab/{repo_file_path}', repo_id=repo_id, token=token) "