feat: add workflow for syncing individual packages
This commit is contained in:
parent
e5e8750613
commit
6714f9dc63
1 changed files with 95 additions and 0 deletions
95
.github/workflows/sync-package.yml
vendored
Normal file
95
.github/workflows/sync-package.yml
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
name: Sync Single Package
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
packageName:
|
||||||
|
description: 'NPM package name to sync (e.g., fbx2vrma-converter)'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-package:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Sync package
|
||||||
|
id: sync
|
||||||
|
run: |
|
||||||
|
echo "Syncing package: ${{ inputs.packageName }}"
|
||||||
|
|
||||||
|
# Call the sync API and capture response
|
||||||
|
response=$(curl -X POST "${{ secrets.VERCEL_PRODUCTION_URL }}/api/sync/package" \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"packageName": "${{ inputs.packageName }}"}' \
|
||||||
|
-s -S)
|
||||||
|
|
||||||
|
echo "Response: $response"
|
||||||
|
|
||||||
|
# Check if sync was successful
|
||||||
|
success=$(echo "$response" | jq -r '.success')
|
||||||
|
|
||||||
|
if [ "$success" = "true" ]; then
|
||||||
|
echo "status_emoji=✅" >> $GITHUB_OUTPUT
|
||||||
|
echo "status_color=5763719" >> $GITHUB_OUTPUT
|
||||||
|
echo "status_text=Success" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# Extract data
|
||||||
|
packageId=$(echo "$response" | jq -r '.data.packageId')
|
||||||
|
version=$(echo "$response" | jq -r '.data.version')
|
||||||
|
toolCount=$(echo "$response" | jq -r '.data.toolCount')
|
||||||
|
tools=$(echo "$response" | jq -r '.data.tools | join(", ")')
|
||||||
|
author=$(echo "$response" | jq -r '.data.author')
|
||||||
|
|
||||||
|
echo "packageId=$packageId" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=$version" >> $GITHUB_OUTPUT
|
||||||
|
echo "toolCount=$toolCount" >> $GITHUB_OUTPUT
|
||||||
|
echo "tools=$tools" >> $GITHUB_OUTPUT
|
||||||
|
echo "author=$author" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "status_emoji=❌" >> $GITHUB_OUTPUT
|
||||||
|
echo "status_color=15158332" >> $GITHUB_OUTPUT
|
||||||
|
echo "status_text=Failed" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
error=$(echo "$response" | jq -r '.error // "Unknown error"')
|
||||||
|
echo "error=$error" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Send Discord notification
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
if [ "${{ steps.sync.outputs.status_text }}" = "Success" ]; then
|
||||||
|
fields='[
|
||||||
|
{ "name": "📦 Package", "value": "${{ inputs.packageName }}", "inline": true },
|
||||||
|
{ "name": "🏷️ Version", "value": "${{ steps.sync.outputs.version }}", "inline": true },
|
||||||
|
{ "name": "👤 Author", "value": "${{ steps.sync.outputs.author }}", "inline": true },
|
||||||
|
{ "name": "🔧 Tools", "value": "${{ steps.sync.outputs.toolCount }}", "inline": true },
|
||||||
|
{ "name": "📋 Tool Names", "value": "${{ steps.sync.outputs.tools }}", "inline": false },
|
||||||
|
{ "name": "🔗 Run", "value": "[View Logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})", "inline": true }
|
||||||
|
]'
|
||||||
|
else
|
||||||
|
fields='[
|
||||||
|
{ "name": "📦 Package", "value": "${{ inputs.packageName }}", "inline": true },
|
||||||
|
{ "name": "❌ Error", "value": "${{ steps.sync.outputs.error }}", "inline": false },
|
||||||
|
{ "name": "🔗 Run", "value": "[View Logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})", "inline": true }
|
||||||
|
]'
|
||||||
|
fi
|
||||||
|
|
||||||
|
payload=$(jq -n \
|
||||||
|
--arg title "${{ steps.sync.outputs.status_emoji }} Package Sync: ${{ inputs.packageName }}" \
|
||||||
|
--argjson color ${{ steps.sync.outputs.status_color }} \
|
||||||
|
--argjson fields "$fields" \
|
||||||
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \
|
||||||
|
'
|
||||||
|
{
|
||||||
|
embeds: [{
|
||||||
|
title: $title,
|
||||||
|
color: $color,
|
||||||
|
fields: $fields,
|
||||||
|
timestamp: $timestamp
|
||||||
|
}]
|
||||||
|
}')
|
||||||
|
|
||||||
|
curl -X POST "${{ secrets.DISCORD_WEBHOOK }}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "$payload"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue