mirror of
https://github.com/lancedb/lancedb.git
synced 2025-12-22 21:09:58 +00:00
ci: automatic issue creation for failed publish workflows (#2694)
## Summary - Created custom GitHub Action that creates issues when workflow jobs fail - Added report-failure jobs to cargo-publish.yml, java-publish.yml, npm-publish.yml, and pypi-publish.yml - Issues are created automatically with workflow name, failed job names, and run URL ## Test plan - Workflows will only create issues on actual release or workflow_dispatch events - Can be tested by triggering workflow_dispatch on a publish workflow Based on lancedb/lance#4873 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
45
.github/actions/create-failure-issue/action.yml
vendored
Normal file
45
.github/actions/create-failure-issue/action.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
name: Create Failure Issue
|
||||||
|
description: Creates a GitHub issue if any jobs in the workflow failed
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
job-results:
|
||||||
|
description: 'JSON string of job results from needs context'
|
||||||
|
required: true
|
||||||
|
workflow-name:
|
||||||
|
description: 'Name of the workflow'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Check for failures and create issue
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
JOB_RESULTS: ${{ inputs.job-results }}
|
||||||
|
WORKFLOW_NAME: ${{ inputs.workflow-name }}
|
||||||
|
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
# Check if any job failed
|
||||||
|
if echo "$JOB_RESULTS" | jq -e 'to_entries | any(.value.result == "failure")' > /dev/null; then
|
||||||
|
echo "Detected job failures, creating issue..."
|
||||||
|
|
||||||
|
# Extract failed job names
|
||||||
|
FAILED_JOBS=$(echo "$JOB_RESULTS" | jq -r 'to_entries | map(select(.value.result == "failure")) | map(.key) | join(", ")')
|
||||||
|
|
||||||
|
# Create issue with workflow name, failed jobs, and run URL
|
||||||
|
gh issue create \
|
||||||
|
--title "$WORKFLOW_NAME Failed ($FAILED_JOBS)" \
|
||||||
|
--body "The workflow **$WORKFLOW_NAME** failed during execution.
|
||||||
|
|
||||||
|
**Failed jobs:** $FAILED_JOBS
|
||||||
|
|
||||||
|
**Run URL:** $RUN_URL
|
||||||
|
|
||||||
|
Please investigate the failed jobs and address any issues." \
|
||||||
|
--label "ci"
|
||||||
|
|
||||||
|
echo "Issue created successfully"
|
||||||
|
else
|
||||||
|
echo "No job failures detected, skipping issue creation"
|
||||||
|
fi
|
||||||
14
.github/workflows/cargo-publish.yml
vendored
14
.github/workflows/cargo-publish.yml
vendored
@@ -38,3 +38,17 @@ jobs:
|
|||||||
- name: Publish the package
|
- name: Publish the package
|
||||||
run: |
|
run: |
|
||||||
cargo publish -p lancedb --all-features --token ${{ steps.auth.outputs.token }}
|
cargo publish -p lancedb --all-features --token ${{ steps.auth.outputs.token }}
|
||||||
|
report-failure:
|
||||||
|
name: Report Workflow Failure
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build]
|
||||||
|
if: always() && (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./.github/actions/create-failure-issue
|
||||||
|
with:
|
||||||
|
job-results: ${{ toJSON(needs) }}
|
||||||
|
workflow-name: ${{ github.workflow }}
|
||||||
|
|||||||
15
.github/workflows/java-publish.yml
vendored
15
.github/workflows/java-publish.yml
vendored
@@ -43,7 +43,6 @@ jobs:
|
|||||||
- uses: Swatinem/rust-cache@v2
|
- uses: Swatinem/rust-cache@v2
|
||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: "1.81.0"
|
|
||||||
cache-workspaces: "./java/core/lancedb-jni"
|
cache-workspaces: "./java/core/lancedb-jni"
|
||||||
# Disable full debug symbol generation to speed up CI build and keep memory down
|
# Disable full debug symbol generation to speed up CI build and keep memory down
|
||||||
# "1" means line tables only, which is useful for panic tracebacks.
|
# "1" means line tables only, which is useful for panic tracebacks.
|
||||||
@@ -112,3 +111,17 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
|
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
|
||||||
SONATYPE_TOKEN: ${{ secrets.SONATYPE_TOKEN }}
|
SONATYPE_TOKEN: ${{ secrets.SONATYPE_TOKEN }}
|
||||||
|
report-failure:
|
||||||
|
name: Report Workflow Failure
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [linux-arm64, linux-x86, macos-arm64]
|
||||||
|
if: always() && (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./.github/actions/create-failure-issue
|
||||||
|
with:
|
||||||
|
job-results: ${{ toJSON(needs) }}
|
||||||
|
workflow-name: ${{ github.workflow }}
|
||||||
|
|||||||
14
.github/workflows/npm-publish.yml
vendored
14
.github/workflows/npm-publish.yml
vendored
@@ -365,3 +365,17 @@ jobs:
|
|||||||
ARGS="$ARGS --tag preview"
|
ARGS="$ARGS --tag preview"
|
||||||
fi
|
fi
|
||||||
npm publish $ARGS
|
npm publish $ARGS
|
||||||
|
report-failure:
|
||||||
|
name: Report Workflow Failure
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build-lancedb, test-lancedb, publish]
|
||||||
|
if: always() && (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./.github/actions/create-failure-issue
|
||||||
|
with:
|
||||||
|
job-results: ${{ toJSON(needs) }}
|
||||||
|
workflow-name: ${{ github.workflow }}
|
||||||
|
|||||||
14
.github/workflows/pypi-publish.yml
vendored
14
.github/workflows/pypi-publish.yml
vendored
@@ -173,3 +173,17 @@ jobs:
|
|||||||
generate_release_notes: false
|
generate_release_notes: false
|
||||||
name: Python LanceDB v${{ steps.extract_version.outputs.version }}
|
name: Python LanceDB v${{ steps.extract_version.outputs.version }}
|
||||||
body: ${{ steps.python_release_notes.outputs.changelog }}
|
body: ${{ steps.python_release_notes.outputs.changelog }}
|
||||||
|
report-failure:
|
||||||
|
name: Report Workflow Failure
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [linux, mac, windows]
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
if: always() && (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./.github/actions/create-failure-issue
|
||||||
|
with:
|
||||||
|
job-results: ${{ toJSON(needs) }}
|
||||||
|
workflow-name: ${{ github.workflow }}
|
||||||
|
|||||||
Reference in New Issue
Block a user