From e6edf61edeab192d3c6b048fbcc784ed6203a0ed Mon Sep 17 00:00:00 2001 From: Tom Denton Date: Mon, 22 Apr 2024 13:16:38 -0700 Subject: [PATCH] Pip-based CI with Colab dependencies. PiperOrigin-RevId: 627135153 --- .github/install_colab_deps.py | 42 ++++++++++++++++++++++ .github/workflows/ci_colab_no_jaxtrain.yml | 37 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100755 .github/install_colab_deps.py create mode 100644 .github/workflows/ci_colab_no_jaxtrain.yml diff --git a/.github/install_colab_deps.py b/.github/install_colab_deps.py new file mode 100755 index 00000000..c2a004a4 --- /dev/null +++ b/.github/install_colab_deps.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# Copyright 2024 The Perch Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Installs Colab dependencies for CI testing.""" + +from typing import Sequence + +from absl import app +import requests + + +REQS_FILE = ( + 'https://raw.githubusercontent.com/google/chirp/main/requirements.txt' +) +COLAB_REQS_FILE = '/tmp/colab_reqs.txt' + + +def main(unused_argv: Sequence[str]) -> None: + got = requests.get(REQS_FILE) + requirements_str = str(got.content, 'utf8') + # Skip the file:// lines, which are not valid requirements. + lines = [ + ln + '\n' for ln in requirements_str.split('\n') if 'file://' not in ln + ] + with open(COLAB_REQS_FILE, 'w') as f: + f.writelines(lines) + + +if __name__ == '__main__': + app.run(main) diff --git a/.github/workflows/ci_colab_no_jaxtrain.yml b/.github/workflows/ci_colab_no_jaxtrain.yml new file mode 100644 index 00000000..06b0186a --- /dev/null +++ b/.github/workflows/ci_colab_no_jaxtrain.yml @@ -0,0 +1,37 @@ +name: CI_colab_no_jaxtrain + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + # Allows to run this workflow manually from the Actions tab on GitHub. + workflow_dispatch: + +jobs: + test-ubuntu: + name: "test on ${{ matrix.python-version }} on ${{ matrix.os }}" + runs-on: "${{ matrix.os }}" + strategy: + matrix: + python-version: ["3.10", "3.11"] + os: [ubuntu-latest] + steps: + - uses: actions/checkout@v3 + - name: Set up Poetry + run: pipx install poetry + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'poetry' + - name: Install Chirp and its dependencies via pip. + run: | + sudo apt-get update + sudo apt-get install libsndfile1 ffmpeg + python3 .github/install_colab_deps.py + pip install -r /tmp/colab_reqs.txt + pip install git+https://github.com/google-research/perch.git + - name: Test with unittest + # TODO: Group together jaxtrain tests so they can be easily excluded. + run: poetry run python -m unittest discover -s chirp/inference/tests -p "*test.py"