GitHub Actions Upload
Prerequisites
Setup
1. Add GitHub Secrets
2. Create Workflow File
name: Cube Core Upload to Euno
on:
push:
branches: [ main, master ]
paths:
- 'model/**'
workflow_dispatch:
jobs:
upload-cube-schema:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create and upload Cube model zip
run: |
set -euo pipefail
if [ ! -d model ]; then
echo "Error: model/ directory not found"
exit 1
fi
shopt -s globstar nullglob
yaml_files=(model/**/*.yml model/**/*.yaml)
if [ ${#yaml_files[@]} -eq 0 ]; then
echo "Error: no YAML files found under model/"
exit 1
fi
echo "Creating zip file with Cube schema YAML..."
zip -r cube-model.zip model/
echo "Requesting signed upload URL from Euno..."
prepare_response=$(curl -s -w "\n%{http_code}" \
-X POST \
-H "Authorization: Bearer ${{ secrets.EUNO_INTEGRATION_KEY }}" \
-H "Content-Type: application/json" \
-d '{"filename": "cube-model.zip"}' \
"${{ secrets.EUNO_ENDPOINT_URL }}")
prepare_status_code=$(echo "$prepare_response" | tail -n1)
prepare_response_body=$(echo "$prepare_response" | head -n -1)
echo "Prepare-upload status code: $prepare_status_code"
if [ "$prepare_status_code" -ne 200 ]; then
echo "Failed to get signed URL with status code: $prepare_status_code"
echo "Response: $prepare_response_body"
exit 1
fi
upload_url=$(echo "$prepare_response_body" | jq -r '.upload.url // empty')
if [ -z "$upload_url" ] || [ "$upload_url" = "null" ]; then
echo "Failed to extract upload URL from response"
echo "Response: $prepare_response_body"
exit 1
fi
echo "Signed URL obtained"
echo "Uploading Cube model zip..."
upload_response=$(curl -s -w "\n%{http_code}" \
-X PUT \
-H "Content-Type: application/zip" \
--data-binary @cube-model.zip \
"$upload_url")
upload_status_code=$(echo "$upload_response" | tail -n1)
upload_response_body=$(echo "$upload_response" | head -n -1)
echo "Upload status code: $upload_status_code"
if [ "$upload_status_code" -eq 200 ] || [ "$upload_status_code" -eq 201 ]; then
echo "Cube model uploaded successfully"
else
echo "Upload failed with status code: $upload_status_code"
echo "Response: $upload_response_body"
exit 1
fi
- name: Upload zip on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: cube-model-zip
path: cube-model.zip
retention-days: 3Configuration Notes
Model directory layout
Path filters
Required GitHub Secrets
Workflow Triggers
Related guides
Last updated