Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add caching #611

Merged
merged 2 commits into from
Dec 5, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 54 additions & 29 deletions .github/workflows/test-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@ name: Test Library CI
# PRs from maintainers team (might be from the base repo) need to target `dev` branch and runs against `dev` environment (nightly)

on:
# Trigger the workflow on push to the specific branch
push:
push: # Trigger the workflow on push to the specific branch
branches:
- dev
- main

# Trigger the workflow on pull requests targeting the specific branch
pull_request_target: # Note: `pull_request_target` ensures that the tests run in the context of the `main` branch, not in the user's fork.
pull_request_target: # Trigger the workflow on pull requests targeting the specific branch
# Note: `pull_request_target` ensures that the tests run in the context of the `main` branch, not in the user's fork.
branches:
- dev
- main

workflow_dispatch:

defaults:
run:
shell: bash

jobs:
test:
permissions:
Expand All @@ -28,6 +30,9 @@ jobs:
runs-on: ubuntu-latest

steps:
#
# Setup Repository
#
- name: Checkout repository
uses: actions/checkout@v4

Expand Down Expand Up @@ -78,12 +83,42 @@ jobs:
echo "==== Git status after checkout ===="
git status

#
# Setup Python
#
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

# A bunch of if-else. Might move to an action
- name: Get latest classiq version
id: classiq-version
run: |
echo "LATEST_CLASSIQ_VERSION=$(pip index versions classiq 2>/dev/null | grep classiq | cut -d '(' -f2 | cut -d ')' -f1)" >> $GITHUB_OUTPUT

# The caching we do follows from
# https://stackoverflow.com/questions/59127258/how-can-i-use-pip-cache-in-github-actions
- uses: actions/cache@v2
id: cache-pip
with:
path: ~/.cache/pip
key: ${{ runner.os }}-venv-${{ hashFiles('**/requirements*.txt') }}-classiq-${{steps.classiq-version.outputs.LATEST_CLASSIQ_VERSION}}
restore-keys: |
${{ runner.os }}-venv-

- name: Install dependencies
if: steps.cache-pip.outputs.cache-hit != 'true'
run: |
set -e
python -m pip install -U pip
# The `--pre` allows the installation of pre-release versions of packages (needed for Dev)
python -m pip install --extra-index-url https://pypi.org/simple --pre -U -r requirements.txt
python -m pip install --extra-index-url https://pypi.org/simple -U -r requirements_tests.txt

#
# Setup Environment
#
# A bunch of if-else.
# Decide environment based on the target branch (for both push and PR events)
- name: Set environment based on target branch
run: |
Expand All @@ -106,30 +141,9 @@ jobs:
echo "CLASSIQ_HOST=https://staging.api.classiq.io" >> $GITHUB_ENV
echo "IS_DEV=true" >> $GITHUB_ENV
fi
shell: bash
env:
GH_TOKEN: ${{ github.token }}

# The following 2 steps can also be grouped into one action
# Step to detect changed .ipynb files
- name: Get changed notebook files
id: changed-files-ipynb
uses: tj-actions/changed-files@v44
with:
files: |
**/*.ipynb

- name: Print changed notebook files
run: |
echo "Changed notebook files: ${{ steps.changed-files-ipynb.outputs.all_changed_files }}"

- name: Install dependencies
run: |
set -e
# The `--pre` allows the installation of pre-release versions of packages (needed for Dev)
python -m pip install --extra-index-url https://pypi.org/simple --pre -U -r requirements.txt
python -m pip install --extra-index-url https://pypi.org/simple -U -r requirements_tests.txt

# Configure AWS credentials
- name: Configure AWS Credentials
uses: aws-actions/[email protected]
Expand All @@ -141,18 +155,29 @@ jobs:
# Set authentication with M2M token
- name: Set authentication
run: .github/scripts/get_m2m_token.sh
shell: bash
env:
IS_DEV: "${{ env.IS_DEV }}"
M2M_SECRET_ARN: "${{ env.M2M_SECRET_ARN }}"

#
# Propagate CI information to python tests
#
- name: Get changed notebook files
id: changed-files-ipynb
uses: tj-actions/changed-files@v44
with:
files: |
**/*.ipynb

# Run Notebook Tests
- name: Run Notebooks
run: python -m pytest --log-cli-level=INFO tests
env:
# to disable a warning in Jupyter notebooks
JUPYTER_PLATFORM_DIRS: "1"
# Passing which notebooks changed
SHOULD_TEST_ALL_FILES: "${{ env.SHOULD_TEST_ALL_FILES }}"
LIST_OF_IPYNB_CHANGED: "${{ steps.changed-files-ipynb.outputs.all_changed_files }}"
# Passing environment information
CLASSIQ_IDE: "${{ env.CLASSIQ_IDE }}"
CLASSIQ_HOST: "${{ env.CLASSIQ_HOST }}"
shell: bash
Loading