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}