Feat/regenerate answer #23
Workflow file for this run
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: unit-test | |
on: | |
pull_request: | |
branches: [main] | |
push: | |
branches: [main] | |
env: | |
THEFLOW_TEMP_PATH: ./tmp | |
jobs: | |
unit-test: | |
if: ${{ !cancelled() }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
strategy: | |
matrix: | |
python-version: ["3.10", "3.11"] | |
include: | |
- os: ubuntu-latest | |
shell: bash | |
ACTIVATE_ENV: ". env/bin/activate" | |
GITHUB_OUTPUT: "$GITHUB_OUTPUT" | |
# - os: windows-latest | |
# shell: pwsh | |
# ACTIVATE_ENV: env/Scripts/activate.ps1 | |
# GITHUB_OUTPUT: "$env:GITHUB_OUTPUT" | |
name: unit testing with python ${{ matrix.python-version }} | |
steps: | |
- name: Clone the repo | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Get Head Commit Message | |
id: get-head-commit-message | |
run: echo "message=$(git show -s --format=%s)" | tee -a ${{ matrix.GITHUB_OUTPUT }} | |
- name: Check ignore caching | |
id: check-ignore-cache | |
run: | | |
ignore_cache=${{ contains(steps.get-head-commit-message.outputs.message, '[ignore cache]') }} | |
echo "check=$ignore_cache" | tee -a ${{ matrix.GITHUB_OUTPUT }} | |
- name: Set up Python ${{ matrix.python-version }} on ${{ runner.os }} | |
uses: actions/setup-python@v4 | |
id: setup_python | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Get cache key | |
id: get-cache-key | |
# using tomli so that it works on windows. From python 3.11, this can be switched to the | |
# built-in tomllib | |
run: | | |
pip install tomli | |
package_version=$(python -c "import tomli; print(tomli.load(open('libs/kotaemon/pyproject.toml', 'rb'))['project']['version'])") | |
cache_key="${{ runner.os }}-py${{ matrix.python-version }}-v${package_version}" | |
echo "key=$cache_key" | tee -a ${{ matrix.GITHUB_OUTPUT }} | |
- name: Try to restore dependencies from ${{ steps.get-cache-key.outputs.key }} | |
id: restore-dependencies | |
if: steps.check-ignore-cache.outputs.check != 'true' | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ steps.get-cache-key.outputs.key }} | |
# could using cache of previous ver to reuse unchanged packages | |
restore-keys: ${{ runner.os }}-py${{ matrix.python-version }} | |
- name: Check cache hit | |
id: check-cache-hit | |
run: | | |
echo "cache-hit=${{ steps.restore-dependencies.outputs.cache-hit }}" | |
echo "cache-matched-key=${{ steps.restore-dependencies.outputs.cache-matched-key }}" | |
cache_hit=${{ steps.restore-dependencies.outputs.cache-primary-key == steps.restore-dependencies.outputs.cache-matched-key }} | |
echo "check=$cache_hit" | tee -a ${{ matrix.GITHUB_OUTPUT }} | |
- name: Install dependencies if ignore caching or no cache hit | |
if: | | |
steps.check-ignore-cache.outputs.check == 'true' || | |
steps.check-cache-hit.outputs.check != 'true' | |
run: | | |
python -m pip install --upgrade pip | |
cd libs/kotaemon | |
pip install -U --upgrade-strategy eager -e .[all] | |
- name: New dependencies cache for key ${{ steps.restore-dependencies.outputs.cache-primary-key }} | |
if: | | |
steps.check-ignore-cache.outputs.check != 'true' && | |
steps.check-cache-hit.outputs.check != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ steps.restore-dependencies.outputs.cache-primary-key }} | |
- name: Test kotaemon with pytest | |
run: | | |
pip show pytest | |
cd libs/kotaemon | |
pytest |