68 lines
2.1 KiB
YAML
68 lines
2.1 KiB
YAML
name: Check Toolkits
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
check-toolkits:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
|
|
- name: Get changed files
|
|
id: changed-files
|
|
run: |
|
|
echo "Determining the base commit from the event payload..."
|
|
# Attempt to retrieve the 'before' commit from the event JSON.
|
|
if [ -f "$GITHUB_EVENT_PATH" ]; then
|
|
BASE=$(jq -r '.before' "$GITHUB_EVENT_PATH")
|
|
fi
|
|
# If not available or if it's the all-zero SHA (i.e. first commit), fallback to HEAD^.
|
|
if [ -z "$BASE" ] || [ "$BASE" = "0000000000000000000000000000000000000000" ]; then
|
|
BASE=HEAD^
|
|
fi
|
|
echo "Using commit range: $BASE...$GITHUB_SHA"
|
|
|
|
# List all files changed between BASE and the current commit.
|
|
CHANGED_FILES=$(git diff --name-only "$BASE" "$GITHUB_SHA")
|
|
echo "Changed files (raw):"
|
|
echo "$CHANGED_FILES"
|
|
|
|
# Filter only files under the toolkits/ directory.
|
|
matched=""
|
|
for file in $CHANGED_FILES; do
|
|
if [[ "$file" == toolkits/* ]]; then
|
|
matched="$matched$file "
|
|
fi
|
|
done
|
|
# Trim any extra whitespace.
|
|
matched=$(echo "$matched" | xargs)
|
|
echo "Matched changed files: $matched"
|
|
|
|
# Make the list available to subsequent steps as an output.
|
|
echo "all_changed_files=$matched" >> $GITHUB_OUTPUT
|
|
|
|
- name: List all added files
|
|
env:
|
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
GITHUB_TOKEN: ${{ secrets.PAT }}
|
|
run: |
|
|
dirs=$(echo "${CHANGED_FILES}" | tr ' ' '\n' | grep "toolkits/" | cut -d'/' -f2 | sort -u)
|
|
if [ -n "$dirs" ]; then
|
|
echo "$dirs" | while read -r dir; do
|
|
echo "Publishing toolkit: $dir"
|
|
gh workflow -R ArcadeAI/arcade-ai run "Publish Toolkit" -f toolkit="${dir}"
|
|
done
|
|
else
|
|
echo "No toolkit directories were changed"
|
|
fi
|