ci: upgrade cibuildwheel #2014
This file contains hidden or 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: Tests and Linting | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: [master] | |
env: | |
UV_INDEX_STRATEGY: "unsafe-first-match" | |
UV_EXTRA_INDEX_URL: "https://download.pytorch.org/whl/cpu" | |
PIP_EXTRA_INDEX_URL: "https://download.pytorch.org/whl/cpu" | |
UV_SYSTEM_PYTHON: 1 | |
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | |
jobs: | |
linting: | |
name: Linting | |
if: github.event_name == 'pull_request' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# requites to grab the history of the PR | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
- uses: pre-commit/[email protected] | |
with: | |
extra_args: --color=always --from-ref ${{ github.event.pull_request.base.sha }} --to-ref ${{ github.event.pull_request.head.sha }} | |
pytest: | |
name: Pytest | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: true | |
matrix: | |
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Cache downloaded resources | |
uses: actions/cache@v3 | |
with: | |
path: ~/.data/ | |
key: resources | |
- name: Set up Java | |
uses: actions/setup-java@v2 | |
with: | |
distribution: "temurin" # See 'Supported distributions' for available options | |
java-version: "8" | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: 'pip' | |
- name: Install dependencies | |
run: pip install -e ".[dev]" | |
if: matrix.python-version != '3.9' && matrix.python-version != '3.10' && matrix.python-version != '3.11' && matrix.python-version != '3.12' | |
- name: Install dependencies | |
run: pip install -e ".[dev,setup]" | |
if: matrix.python-version == '3.9' | |
- name: Install dependencies | |
# skip ML tests for 3.10 and 3.11 | |
run: pip install -e ".[dev-no-ml]" | |
if: matrix.python-version == '3.10' || matrix.python-version == '3.11' || matrix.python-version == '3.12' | |
- name: Test with Pytest on Python ${{ matrix.python-version }} | |
env: | |
UMLS_API_KEY: ${{ secrets.UMLS_API_KEY }} | |
run: coverage run -m pytest --ignore tests/test_docs.py | |
if: matrix.python-version != '3.9' | |
- name: Test with Pytest on Python ${{ matrix.python-version }} | |
env: | |
UMLS_API_KEY: ${{ secrets.UMLS_API_KEY }} | |
run: coverage run -m pytest | |
if: matrix.python-version == '3.9' | |
- name: Upload coverage data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-data-${{ matrix.python-version }} | |
path: .coverage.* | |
if-no-files-found: ignore | |
include-hidden-files: true | |
coverage: | |
name: Coverage | |
needs: pytest | |
uses: aphp/foldedtensor/.github/workflows/coverage.yml@main | |
with: | |
base-branch: master | |
coverage-data-pattern: coverage-data-* | |
coverage-report: coverage.txt | |
coverage-badge: coverage.svg | |
coverage-branch: coverage | |
documentation: | |
name: Documentation | |
runs-on: ubuntu-latest | |
# Main docs are built in another workflow, we don't have to test them outside of PR | |
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
- name: Install dependencies | |
run: pip install -e ".[docs]" | |
- name: Set up Git | |
run: | | |
git config user.name ${{ github.actor }} | |
git config user.email ${{ github.actor }}@users.noreply.github.com | |
echo Current branch: $BRANCH_NAME | |
- name: Build documentation | |
run: | | |
mike deploy --no-redirect --rebase --update-aliases $BRANCH_NAME latest | |
mike set-default $BRANCH_NAME | |
- name: Put content of gh-pages to public folder | |
run: rm -rf public && mkdir public && git archive gh-pages | tar -x -C ./public/ | |
- name: Set up Vercel | |
run: npm install --global vercel@latest | |
- name: Pull Vercel environment | |
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Create new vercel project linked to this branch | |
run: vercel project add edsnlp-$BRANCH_NAME --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Link public folder to the (maybe) new vercel project | |
run: vercel link --cwd public --project edsnlp-$BRANCH_NAME --yes --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Deploy to Vercel | |
run: vercel deploy public/ --yes --token=${{ secrets.VERCEL_TOKEN }} --archive=tgz --prod > deployment-url.txt | |
- name: Post the documentation link | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
slugify () { | |
echo "$1" | iconv -c -t ascii//TRANSLIT | sed -E 's/[^a-zA-Z0-9-]+//g' | tr A-Z a-z | |
} | |
RAW_PROJECT_NAME="edsnlp-$BRANCH_NAME" | |
URL=https://$(slugify "$RAW_PROJECT_NAME").vercel.app/ | |
COMMENT_BODY="## Docs preview URL\n\n$URL\n\n" | |
HEADER="Authorization: token $GITHUB_TOKEN" | |
PR_COMMENTS_URL="https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" | |
# Fetch existing comments to find if one from this workflow already exists | |
COMMENTS=$(curl -s -H "$HEADER" "$PR_COMMENTS_URL") | |
COMMENT_ID=$(echo "$COMMENTS" | jq -r '.[] | select(.user.login == "github-actions[bot]" and (.body | startswith("## Docs preview URL"))) | .id') | |
# Check if we have a comment ID, if so, update it, otherwise create a new one | |
if [[ "$COMMENT_ID" ]]; then | |
# Update existing comment | |
curl -s -X PATCH -H "$HEADER" -H "Content-Type: application/json" -d "{\"body\": \"$COMMENT_BODY\"}" "https://api.github.com/repos/${{ github.repository }}/issues/comments/$COMMENT_ID" | |
else | |
# Post new comment | |
curl -s -X POST -H "$HEADER" -H "Content-Type: application/json" -d "{\"body\": \"$COMMENT_BODY\"}" "$PR_COMMENTS_URL" | |
fi | |
if [ $status -ne 0 ]; then | |
exit $status | |
fi | |
simple-installation: | |
name: Simple installation | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: true | |
matrix: | |
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: 'pip' | |
- run: echo WEEK=$(date +%V) >>$GITHUB_ENV | |
shell: bash | |
- name: Install library | |
run: | | |
pip install ".[ml]" pytest | |
pytest tests/pipelines/test_pipelines.py |