Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions .github/workflows/sync-submodule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Opdater submodule-pointer i alle forbrugende repos

on:
push:
branches: [main]
workflow_dispatch: # Tillader manuel kørsel ved behov

jobs:
# -------------------------------------------------------------------
# Trin 1: Find dynamisk alle repos i organisationen som bruger
# bc-code-intelligence som en submodule.
# Ingen hardkodet liste – nye repos inkluderes automatisk.
# -------------------------------------------------------------------
discover:
name: Find repos med bc-code-intelligence submodule
runs-on: ubuntu-latest
outputs:
repos: ${{ steps.find.outputs.repos }}
steps:
- name: Find alle repos der bruger denne submodule
id: find
env:
GH_TOKEN: ${{ secrets.ORG_SYNC_TOKEN }}
run: |
# Hent alle ikke-arkiverede repos i org'en (ingen hardkodet liste!)
ALL_REPOS=$(gh repo list kollabdk --limit 1000 --json name,isArchived \
--jq '[.[] | select(.isArchived == false) | .name]')

CONSUMING=()
for repo in $(echo "$ALL_REPOS" | jq -r '.[]'); do
# Spring dette repo selv over
[ "$repo" = "bc-code-intelligence" ] && continue

# Tjek om repoet har en .gitmodules-fil der refererer til os
MODULES=$(gh api repos/kollabdk/$repo/contents/.gitmodules \
--jq '.content' 2>/dev/null | base64 -d 2>/dev/null || true)

if echo "$MODULES" | grep -q "bc-code-intelligence"; then
Comment on lines +35 to +38
CONSUMING+=("\"$repo\"")
fi
done

echo "repos=[$(IFS=,; echo "${CONSUMING[*]}")]" >> $GITHUB_OUTPUT

Comment on lines +25 to +44
# -------------------------------------------------------------------
# Trin 2: Opdater submodule-pointeren i hvert forbrugende repo.
# Kører parallelt (max 10 ad gangen) for at undgå rate limiting.
# fail-fast: false sikrer at én fejl ikke stopper de øvrige repos.
# -------------------------------------------------------------------
update:
name: Opdater ${{ matrix.repo }}
needs: discover
if: needs.discover.outputs.repos != '[]'
runs-on: ubuntu-latest
strategy:
matrix:
repo: ${{ fromJson(needs.discover.outputs.repos) }}
max-parallel: 10
fail-fast: false
steps:
- name: Opdater submodule-pointer i ${{ matrix.repo }}
env:
GH_TOKEN: ${{ secrets.ORG_SYNC_TOKEN }}
NEW_SHA: ${{ github.sha }}
run: |
# Shallow clone af det forbrugende repo
git clone --depth=1 \
https://x-access-token:$GH_TOKEN@github.com/kollabdk/${{ matrix.repo }}.git \
target

cd target
git config user.name "kollab-ai-sync[bot]"
git config user.email "ai-sync@kollab.dk"

# Peg submodulet på den nye commit
git submodule update --init bc-code-intelligence
cd bc-code-intelligence
git fetch origin
git checkout $NEW_SHA
cd ..

git add bc-code-intelligence
Comment on lines +75 to +82

# Spring over hvis der ikke er nogen ændring
if git diff --staged --quiet; then
echo "Ingen ændring nødvendig i ${{ matrix.repo }}, springer over."
exit 0
fi

git commit -m "chore: opdater bc-code-intelligence submodule til seneste version [skip ci]"

# -----------------------------------------------------------
# VALG: Direkte commit eller Pull Request?
#
# AKTIV: Direkte commit til main
# -----------------------------------------------------------
git push origin main
Comment on lines +67 to +97

# -----------------------------------------------------------
# ALTERNATIV: Opret en Pull Request i stedet for direkte push.
# Kommenter linjen ovenfor ud og fjern kommenteringen nedenfor.
# -----------------------------------------------------------
# BRANCH="update-bc-intelligence-$(date +%Y%m%d-%H%M)"
# git checkout -b $BRANCH
# git push origin $BRANCH
# gh pr create \
# --title "Opdater bc-code-intelligence submodule" \
# --body "Automatisk opdatering til nyeste AI-personas og workflows fra bc-code-intelligence." \
# --base main \
# --head $BRANCH
Comment on lines +90 to +110