Files
amd-strix-halo-toolboxes/.github/workflows/poll-llama-cpp.yaml
T

106 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Poll llama.cpp & Trigger Build
on:
schedule:
- cron: '0 0,12 * * *'
workflow_dispatch:
permissions:
contents: read
actions: write
jobs:
poll-and-trigger:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: fetch
shell: bash
run: |
set -euo pipefail
REPO_URL="https://github.com/ggml-org/llama.cpp.git"
DEFAULT_REF=$(git ls-remote --symref "$REPO_URL" HEAD | awk '/^ref:/ {print $2}')
echo "📌 Default branch: ${DEFAULT_REF#refs/heads/}"
LATEST_SHA=$(git ls-remote "$REPO_URL" "$DEFAULT_REF" | cut -f1)
if [[ -z "$LATEST_SHA" ]]; then echo "❌ No SHA found"; exit 1; fi
echo "✅ Latest SHA: $LATEST_SHA"
echo "latest_sha=$LATEST_SHA" >> "$GITHUB_OUTPUT"
- id: previous
shell: bash
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
echo "🔎 Checking for prior artifact 'last-llama-sha'…"
ART_ID=$(curl -fsSL -H "Authorization: Bearer $GH_TOKEN" \
"https://api.github.com/repos/${GH_REPO}/actions/artifacts?per_page=100" \
| jq -r '.artifacts | map(select(.name=="last-llama-sha" and .expired==false)) | sort_by(.created_at) | reverse | .[0].id // empty')
if [[ -n "$ART_ID" ]]; then
echo "📦 Found artifact id: $ART_ID (downloading)"
curl -fsSL -H "Authorization: Bearer $GH_TOKEN" -L \
"https://api.github.com/repos/${GH_REPO}/actions/artifacts/${ART_ID}/zip" -o artifact.zip
unzip -l artifact.zip || true
unzip -p artifact.zip last_commit_sha > last_commit_sha || true
else
echo "️ No prior artifact found"
fi
PREV_SHA=""
if [[ -f last_commit_sha ]]; then PREV_SHA=$(cat last_commit_sha); fi
echo "🕓 Previous SHA: $PREV_SHA"
echo "previous_sha=$PREV_SHA" >> "$GITHUB_OUTPUT"
- id: compare
shell: bash
run: |
set -euo pipefail
echo "🧮 Comparing SHAs…"
echo "prev: ${{ steps.previous.outputs.previous_sha }}"
echo "curr: ${{ steps.fetch.outputs.latest_sha }}"
if [[ "${{ steps.fetch.outputs.latest_sha }}" != "${{ steps.previous.outputs.previous_sha }}" ]]; then
echo "🔁 New commit detected"
echo "changed=true" >> "$GITHUB_OUTPUT"
else
echo "✅ No change"
echo "changed=false" >> "$GITHUB_OUTPUT"
fi
- name: Trigger build_and_publish.yml on main
if: steps.compare.outputs.changed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
set -euo pipefail
WF="build_and_publish.yml"
REF="main"
echo "🚀 Dispatching $WF on $REF…"
CODE=$(curl -s -o /tmp/resp -w "%{http_code}" \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GH_TOKEN" \
-d "{\"ref\":\"$REF\",\"inputs\":{\"backends\":\"all\"}}" \
"https://api.github.com/repos/${{ github.repository }}/actions/workflows/$WF/dispatches")
echo "HTTP $CODE"
if [[ "$CODE" != "204" ]]; then echo "Response:"; cat /tmp/resp; exit 1; fi
- name: Save new SHA
if: steps.compare.outputs.changed == 'true'
shell: bash
run: |
set -euo pipefail
printf "%s" "${{ steps.fetch.outputs.latest_sha }}" > last_commit_sha
echo "💾 Saved $(wc -c < last_commit_sha) bytes to $(pwd)/last_commit_sha"
ls -la last_commit_sha
- name: Upload last-SHA artifact
if: steps.compare.outputs.changed == 'true'
uses: actions/upload-artifact@v4
with:
name: last-llama-sha
path: last_commit_sha
retention-days: 7