e06fe8e8c6
Self-hosted runner (benchmark) / Benchmark (aws-g5-4xlarge-cache) (push) Waiting to run
New model PR merged notification / Notify new model (push) Waiting to run
Update Transformers metadata / build_and_package (push) Waiting to run
Secret Leaks / trufflehog (push) Failing after 1s
Build documentation / build (push) Failing after 1s
Build documentation / build_other_lang (push) Failing after 0s
CodeQL Security Analysis / CodeQL Analysis (push) Failing after 0s
PR CI / pr-ci (push) Failing after 1s
Slow tests on important models (on Push - A10) / Get all modified files (push) Failing after 1s
Slow tests on important models (on Push - A10) / Model CI (push) Has been skipped
212 lines
6.7 KiB
YAML
212 lines
6.7 KiB
YAML
name: Extras Smoke Test
|
|
|
|
on:
|
|
schedule:
|
|
# Run every night at 3 AM UTC
|
|
- cron: "0 3 * * *"
|
|
env:
|
|
SLACK_CHANNEL_ID: '#transformers-gh-ci-central'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
get-python-versions:
|
|
name: Get supported Python versions
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
versions: ${{ steps.extract-versions.outputs.versions }}
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Install setuptools
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install setuptools
|
|
|
|
- name: Extract Python versions from setup.py
|
|
id: extract-versions
|
|
run: |
|
|
VERSIONS=$(python utils/extract_metadata.py python-versions)
|
|
echo "Supported Python versions: $VERSIONS"
|
|
echo "versions=$VERSIONS" >> $GITHUB_OUTPUT
|
|
|
|
test-extras:
|
|
name: Test extras on Python ${{ matrix.python-version }}
|
|
needs: get-python-versions
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: ${{ fromJson(needs.get-python-versions.outputs.versions) }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
allow-prereleases: true
|
|
|
|
- name: Install base dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install setuptools
|
|
|
|
- name: Extract extras for this Python version
|
|
id: get-extras
|
|
run: |
|
|
python utils/extract_metadata.py extras > extras_list.txt
|
|
echo "Found $(wc -l < extras_list.txt) extras for Python ${MATRIX_PYTHON_VERSION}"
|
|
cat extras_list.txt
|
|
env:
|
|
MATRIX_PYTHON_VERSION: ${{ matrix.python-version }}
|
|
|
|
- name: Install base package
|
|
run: |
|
|
echo "Installing base package..."
|
|
pip install -e .
|
|
|
|
- name: Test all extras
|
|
id: test-extras
|
|
run: |
|
|
mkdir -p failure_reports
|
|
failed=0
|
|
|
|
while IFS= read -r extra; do
|
|
echo "=== Testing extra: $extra on Python ${MATRIX_PYTHON_VERSION} ==="
|
|
if ! pip install -e .[$extra]; then
|
|
echo "❌ Failed to install extra: $extra"
|
|
cat > failure_reports/failure-${MATRIX_PYTHON_VERSION}-${extra}.json << EOF
|
|
{
|
|
"python_version": "${MATRIX_PYTHON_VERSION}",
|
|
"extra": "${extra}",
|
|
"job_url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
|
}
|
|
EOF
|
|
failed=$((failed + 1))
|
|
else
|
|
echo "✓ Successfully installed extra: $extra"
|
|
fi
|
|
done < extras_list.txt
|
|
|
|
if [ $failed -gt 0 ]; then
|
|
echo "❌ $failed extra(s) failed to install"
|
|
exit 1
|
|
fi
|
|
env:
|
|
MATRIX_PYTHON_VERSION: ${{ matrix.python-version }}
|
|
|
|
- name: Verify installation
|
|
run: |
|
|
python -c "import transformers; print(f'Transformers version: {transformers.__version__}')"
|
|
python -c "from transformers import pipeline; print('Successfully imported pipeline')"
|
|
|
|
- name: Upload failure report
|
|
if: always()
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: failure-report-${{ matrix.python-version }}
|
|
path: failure_reports/
|
|
retention-days: 1
|
|
if-no-files-found: ignore
|
|
|
|
precheck-slack:
|
|
name: Check Slack token availability
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
has_slack_token: ${{ steps.chk.outputs.has_token }}
|
|
steps:
|
|
- id: chk
|
|
env:
|
|
SLACK_BOT_TOKEN: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
run: |
|
|
if [ -n "$SLACK_BOT_TOKEN" ]; then
|
|
echo "has_token=true" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "has_token=false" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
notify-failures:
|
|
name: Notify failures to Slack
|
|
needs: [test-extras, precheck-slack]
|
|
runs-on: ubuntu-latest
|
|
if: always() && needs.precheck-slack.outputs.has_slack_token == 'true' && needs.test-extras.result != 'success'
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
- name: Download all failure reports
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
pattern: failure-report-*
|
|
path: failure_reports/
|
|
merge-multiple: true
|
|
continue-on-error: true
|
|
|
|
- name: Aggregate failures
|
|
run: |
|
|
python utils/aggregate_failure_reports.py \
|
|
--input-dir failure_reports \
|
|
--output all_failures.json
|
|
|
|
- name: Format Slack message
|
|
env:
|
|
FAILURES_FILE: all_failures.json
|
|
WORKFLOW_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
run: |
|
|
python utils/format_extras_slack_message.py \
|
|
--failures "$FAILURES_FILE" \
|
|
--workflow-url "$WORKFLOW_URL"
|
|
|
|
- name: Send Slack notification
|
|
if: env.SLACK_MESSAGE != ''
|
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c
|
|
with:
|
|
channel-id: ${{ env.SLACK_CHANNEL_ID }}
|
|
payload: |
|
|
{
|
|
"blocks": [
|
|
{
|
|
"type": "header",
|
|
"text": {
|
|
"type": "plain_text",
|
|
"text": "${{ env.SLACK_TITLE }}"
|
|
}
|
|
},
|
|
{
|
|
"type": "section",
|
|
"text": {
|
|
"type": "mrkdwn",
|
|
"text": "${{ env.SLACK_MESSAGE }}"
|
|
}
|
|
},
|
|
{
|
|
"type": "divider"
|
|
},
|
|
{
|
|
"type": "section",
|
|
"text": {
|
|
"type": "mrkdwn",
|
|
"text": "<${{ env.SLACK_WORKFLOW_URL }}|View workflow run>"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
env:
|
|
SLACK_BOT_TOKEN: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|