Data Processing Pipeline #11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Data Processing Pipeline | |
on: | |
schedule: | |
# Run every 6 hours (at 00:00, 06:00, 12:00, 18:00 UTC) | |
- cron: '0 */6 * * *' | |
# Allow manual triggering | |
workflow_dispatch: | |
inputs: | |
run_bridge_data: | |
description: 'Run bridge data processing' | |
required: false | |
default: 'true' | |
type: boolean | |
run_musd_data: | |
description: 'Run MUSD data processing' | |
required: false | |
default: 'true' | |
type: boolean | |
env: | |
PYTHON_VERSION: '3.11' | |
jobs: | |
process-bridge-data: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.run_bridge_data == 'true') | |
steps: | |
- name: π Checkout repository | |
uses: actions/checkout@v4 | |
- name: π Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: 'pip' | |
- name: π¦ Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: π Process Bridge Data | |
env: | |
SUPABASE_URL_PROD: ${{ secrets.SUPABASE_URL_PROD }} | |
SUPABASE_KEY_PROD: ${{ secrets.SUPABASE_KEY_PROD }} | |
SUPABASE_DATA_URL: ${{ secrets.SUPABASE_DATA_URL }} | |
SUPABASE_DATA_KEY: ${{ secrets.SUPABASE_DATA_KEY }} | |
COINGECKO_KEY: ${{ secrets.COINGECKO_KEY }} | |
run: | | |
echo "π Starting bridge data processing..." | |
python scripts/process_bridge_data.py | |
echo "β Bridge data processing completed" | |
- name: π Upload Bridge Processing Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bridge-processing-logs-${{ github.run_number }} | |
path: | | |
data/*.csv | |
retention-days: 7 | |
process-musd-data: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.run_musd_data == 'true') | |
steps: | |
- name: π Checkout repository | |
uses: actions/checkout@v4 | |
- name: π Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: 'pip' | |
- name: π¦ Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: π° Process MUSD Data | |
env: | |
SUPABASE_URL_PROD: ${{ secrets.SUPABASE_URL_PROD }} | |
SUPABASE_KEY_PROD: ${{ secrets.SUPABASE_KEY_PROD }} | |
SUPABASE_DATA_URL: ${{ secrets.SUPABASE_DATA_URL }} | |
SUPABASE_DATA_KEY: ${{ secrets.SUPABASE_DATA_KEY }} | |
COINGECKO_KEY: ${{ secrets.COINGECKO_KEY }} | |
run: | | |
echo "π Starting MUSD data processing..." | |
python scripts/process_musd_data.py | |
echo "β MUSD data processing completed" | |
- name: π Upload MUSD Processing Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: musd-processing-logs-${{ github.run_number }} | |
path: | | |
data/*.csv | |
retention-days: 7 | |
notify-completion: | |
runs-on: ubuntu-latest | |
needs: [process-bridge-data, process-musd-data] | |
if: always() | |
steps: | |
- name: π Create processing summary | |
run: | | |
echo "## π Data Processing Summary" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "| Job | Status | Duration |" >> $GITHUB_STEP_SUMMARY | |
echo "|-----|--------|----------|" >> $GITHUB_STEP_SUMMARY | |
echo "| π Bridge Data | ${{ needs.process-bridge-data.result }} | - |" >> $GITHUB_STEP_SUMMARY | |
echo "| π° MUSD Data | ${{ needs.process-musd-data.result }} | - |" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "**β° Timestamp:** $(date -u)" >> $GITHUB_STEP_SUMMARY | |
echo "**π’ Run Number:** ${{ github.run_number }}" >> $GITHUB_STEP_SUMMARY | |
echo "**π Workflow:** [View Details](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_STEP_SUMMARY | |
- name: π Check for failures | |
if: needs.process-bridge-data.result == 'failure' || needs.process-musd-data.result == 'failure' | |
run: | | |
echo "β One or more data processing jobs failed!" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "**Failed Jobs:**" >> $GITHUB_STEP_SUMMARY | |
if [ "${{ needs.process-bridge-data.result }}" == "failure" ]; then | |
echo "- π Bridge Data Processing" >> $GITHUB_STEP_SUMMARY | |
fi | |
if [ "${{ needs.process-musd-data.result }}" == "failure" ]; then | |
echo "- π° MUSD Data Processing" >> $GITHUB_STEP_SUMMARY | |
fi | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "Check the logs for details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> $GITHUB_STEP_SUMMARY | |
exit 1 | |
- name: β Success notification | |
if: needs.process-bridge-data.result == 'success' && needs.process-musd-data.result == 'success' | |
run: | | |
echo "π All data processing jobs completed successfully!" >> $GITHUB_STEP_SUMMARY |