extension_auto_bump.yml

 1# Generated from xtask::workflows::extension_auto_bump
 2# Rebuild with `cargo xtask workflows`.
 3name: extension_auto_bump
 4on:
 5  push:
 6    branches:
 7    - main
 8    paths:
 9    - extensions/**
10    - '!extensions/slash-commands-example/**'
11    - '!extensions/test-extension/**'
12    - '!extensions/workflows/**'
13    - '!extensions/*.md'
14jobs:
15  detect_changed_extensions:
16    if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
17    runs-on: namespace-profile-2x4-ubuntu-2404
18    steps:
19    - name: steps::checkout_repo
20      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
21      with:
22        clean: false
23        fetch-depth: 2
24    - id: detect
25      name: extension_auto_bump::detect_changed_extensions
26      run: |
27        COMPARE_REV="$(git rev-parse HEAD~1)"
28        CHANGED_FILES="$(git diff --name-only "$COMPARE_REV" "$GITHUB_SHA")"
29        # Detect changed extension directories (excluding extensions/workflows)
30        CHANGED_EXTENSIONS=$(echo "$CHANGED_FILES" | grep -oP '^extensions/[^/]+(?=/)' | sort -u | grep -v '^extensions/workflows$' || true)
31        if [ -n "$CHANGED_EXTENSIONS" ]; then
32            EXTENSIONS_JSON=$(echo "$CHANGED_EXTENSIONS" | jq -R -s -c 'split("\n") | map(select(length > 0))')
33        else
34            EXTENSIONS_JSON="[]"
35        fi
36        # Filter out newly added or entirely removed extensions
37        FILTERED="[]"
38        for ext in $(echo "$EXTENSIONS_JSON" | jq -r '.[]'); do
39            if git show HEAD~1:"$ext/extension.toml" >/dev/null 2>&1 && \
40               [ -f "$ext/extension.toml" ]; then
41                FILTERED=$(echo "$FILTERED" | jq -c --arg e "$ext" '. + [$e]')
42            fi
43        done
44        echo "changed_extensions=$FILTERED" >> "$GITHUB_OUTPUT"
45    outputs:
46      changed_extensions: ${{ steps.detect.outputs.changed_extensions }}
47    timeout-minutes: 5
48  bump_extension_versions:
49    needs:
50    - detect_changed_extensions
51    if: needs.detect_changed_extensions.outputs.changed_extensions != '[]'
52    permissions:
53      actions: write
54      contents: write
55      issues: write
56      pull-requests: write
57    strategy:
58      matrix:
59        extension: ${{ fromJson(needs.detect_changed_extensions.outputs.changed_extensions) }}
60      fail-fast: false
61      max-parallel: 1
62    uses: ./.github/workflows/extension_bump.yml
63    secrets:
64      app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
65      app-secret: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
66    with:
67      working-directory: ${{ matrix.extension }}
68      force-bump: false
69concurrency:
70  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
71  cancel-in-progress: true
72defaults:
73  run:
74    shell: bash -euxo pipefail {0}